Skip to content

Project crashed after Worker.terminate() #41107

Description

@KunalBurangi

Version

14.6

Platform

Windows 10

Subsystem

No response

What steps will reproduce the bug?

Not sure

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

I am working with the worker threads and it is working fine . i am able to execute stuff in worker thread but the problem is the worker thread is not getting exit on its own . so i am using process.exit(0) or worker.terminate()
and it get exits also.
but after that if i hit the api again then my project crashes with
Process exited with code 3221225477

what is the issue

What is the expected behavior?

No response

What do you see instead?

No response

Additional information

No response

Activity

  1. added
    workerIssues and PRs related to the worker_threads module and Worker API.
    on Dec 7, 2021
  2. e3dio commented on Dec 16, 2021

    @e3dio

    I also see this (node 17, win11), looks related to native addons (C++), only occurs on Windows no issue on Linux, specifically when the last remaining Worker Thread that has loaded the native addon exits it will crash the process with error code 3221225477. I don't know if it's because the addon did not clean up resources correctly or if is some issue with Node https://nodejs.org/api/addons.html#worker-support. The crash happens after process.on('exit') event fires on the worker, but before worker.on('exit') event fires on main thread, and only occurs after the last remaining worker (can be 1 or more workers) that has loaded the addon exits.

  3. added
    windowsIssues and PRs related to the Windows platform.
    on Dec 16, 2021
  4. e3dio commented on Dec 16, 2021

    @e3dio

    The example code below works as is, worker thread (from main) exited and main thread exited get logged, but if you uncomment addon require('uWebSockets.js') it will crash the process with code 3221225477 after logging worker thread (inside) exited and the other logs don't get called. Works fine on Linux

    const {Worker,isMainThread}=require('worker_threads')
    if(isMainThread){
    	new Worker(__filename).on('exit',code=>console.log('worker thread (from main) exited',code))
    	process.on('exit',()=>console.log('main thread exited'))
    }else{
    	//require('uWebSockets.js')
    	process.on('exit',()=>console.log('worker thread (inside) exited'))
    	setTimeout(()=>process.exit(0),1000)
    }
  5. huseyinacacak-janea commented on Feb 4, 2025

    @huseyinacacak-janea
    Contributor

    Hi @KunalBurangi, I wanted to look into this issue but wasn't able to reproduce it (I tried Node 18.20.2, 20.18.2, 22.13.1 and 23.3.0). Do you think this can be closed now?

  6. StefanStojanovic commented on Feb 27, 2025

    @StefanStojanovic
    Contributor

    Since this is no longer reproducible I'll close it. Feel free to reopen if needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    windowsIssues and PRs related to the Windows platform.workerIssues and PRs related to the worker_threads module and Worker API.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions