Assume a multithreaded application containing threads “A” and “B” such that “A” is calling fork and at the same time “B” has acquired NTDLL heap lock. The child process is created. The NTDLL heap lock is marked as acquired by thread “B”. There is no thread “B” in the child. The main thread in the child while coming up tries to take the NTDLL heap lock, and because of the library’s locked state, the process stops responding.

This issue is valid for both mixed-mode and Subsystem for UNIX-based Applications programs.

Warning: Microsoft strongly discourages using fork() calls in multithreaded Subsystem for UNIX-based Applications (SUA) .

Note: This is a “FAST PUBLISH” article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Leave a Reply