INFO: Interrupting Threads in Critical Sections (101193)



The information in this article applies to:

  • Microsoft Win32 Application Programming Interface (API), when used with:
    • Microsoft Windows NT Server 3.1
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Workstation 3.1
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows 95

This article was previously published under Q101193
If a thread enters a critical section and then terminates abnormally, the critical section object will not be released. Many components of the C Run-time library are not reentrant and use a resource locking scheme to maintain coherency in the multithreaded environment. Thus, a thread that has entered a C Run-time function, such as printf(), could deadlock all access (within that process) to printf() if it terminates abnormally.

This situation could arise if a thread is terminated with TerminateThread() while it holds a resource lock. If this occurs, any thread that tries to acquire that resource lock will become deadlocked.

SUMMARY


Modification Type:MinorLast Reviewed:3/7/2005
Keywords:kbinfo KB101193