Skip to content

cpu-prof doesn't propagate to workers when env is set  #52825

@orinatic

Description

@orinatic

Version

20.8.1

Platform

Linux ushanka-housing 6.5.0-1020-oem #21-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 3 14:54:32 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

cpu-prof

What steps will reproduce the bug?

You can reproduce this by modifying one of the existent node tests.

If you edit tests/fixtures/workload/fibonacci-worker.js in this repo with

-new Worker(path.join(__dirname, 'fibonacci.js'));
+new Worker(path.join(__dirname, 'fibonacci.js'), {env: process.env});

and then run

node ./test/sequential/test-cpu-prof-dir-worker.js

the new test will fail

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

This should reproduce 100% of the time -- you don't need to do anything special

What is the expected behavior? Why is that the expected behavior?

According to https://nodejs.org/docs/latest-v20.x/api/worker_threads.html#new-workerfilename-options, the default value for a worker thread's env is process.env. Thus, not passing an environment and passing process.env as the environment should always produce the same behavior.

What do you see instead?

When running in its original form, the test produces two profile files, as intended. When passing {env: process.env} into the worker invocation, however, it only produces one profile file.

Additional information

If I print the environment in the worker thread, it appears to be identical in both cases. It doesn't seem like the problem is that part of the environment is getting lost, but rather there's some hidden variable that isn't getting propagated

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmed-bugIssues with confirmed bugs.lib / srcIssues and PRs related to general changes in the lib or src directory.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