Skip to content

'worker_threads.receiveMessageOnPort' results in an abort #32742

Closed
@zyscoder

Description

@zyscoder
  • Version:v12.16.0
  • Platform:Linux vul337 4.15.0-91-generic new design of error handling #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
  • Subsystem: process

What steps will reproduce the bug?

Directly run the following code snippet using node:

require('worker_threads').receiveMessageOnPort(0)

How often does it reproduce? Is there a required condition?

No. This potential bug can always be reproduced.

What is the expected behavior?

The argument to 'worker_threads.receiveMessageOnPort' should be a 'MessagePort' object, but we passed an integer value into it. The function should throw an exception or other similar error-reporting stuff rather than crash the whole nodejs process.

What do you see instead?

This is the stack dump produced during abort:

./node[17081]: ../src/node_messaging.cc:878:static void node::worker::MessagePort::ReceiveMessage(const FunctionCallbackInfo<v8::Value> &): Assertion `args[0]->IsObject()' failed.
 1: 0x13f9b30 node::Abort() [./node]
 2: 0x13f9709  [./node]
 3: 0x148b6c0 node::worker::MessagePort::ReceiveMessage(v8::FunctionCallbackInfo<v8::Value> const&) [./node]
 4: 0x17b379c v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [./node]
 5: 0x17b23d5  [./node]
 6: 0x17b1092  [./node]
 7: 0x2717a59  [./node]
[1]    17081 abort      ./node

Additional information

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmed-bugIssues with confirmed bugs.workerIssues and PRs related to Worker support.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions