I'm running a MainProcess.exe which loaded a library called WorkingDll.dll.The DllMain function does Nothing.when i call it's exported function InitScanType, it's been DeadLocked. Result of Windbg shows setlocal() causing deadlock. But I want to know why, because the dll function design seems reasonable.Is there some one can help to explain why? thx
<pre><code>
2 Id: 12d0.96c Suspend: 0 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr Args to Child
01a8ef4c 7c92df5a 7c93b24b 000001c8 00000000 ntdll!KiFastSystemCallRet
01a8ef50 7c93b24b 000001c8 00000000 00000000 ntdll!NtWaitForSingleObject+0xc
01a8efd8 7c921046 0199e178 7c932cce 7c99e178 ntdll!RtlpWaitForCriticalSection+0x132
01a8efe0 7c932cce 7c99e178 c0150008 00000001 ntdll!RtlEnterCriticalSection+0x46
01a8f01c 7c936491 00000001 00000000 01a8f07c ntdll!LdrLockLoaderLock+0xea
01a8f2b8 7c801bbd 0017f790 01a8f304 01a8f2e4 ntdll!LdrLoadDll+0xd6
01a8f320 01173279 011f8ccc 00000000 00000800 kernel32!LoadLibraryExW+0x18e
(Inline) -------- -------- -------- -------- WorkingDll!try_load_library_from_system_directory+0xe [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 205]
01a8f340 011731e8 00000007 00000003 0017f018 WorkingDll!try_get_module+0x38 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 239]
(Inline) -------- -------- -------- -------- WorkingDll!try_get_first_available_module+0xf [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 272]
(Inline) -------- -------- -------- -------- WorkingDll!try_get_proc_address_from_first_available_module+0xf [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 290]
01a8f358 01172e71 00000001 011e9990 011f8f90 WorkingDll!try_get_function+0x43 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 327]
01a8f36c 01173d20 01171bb5 0017f620 0017f018 WorkingDll!try_get_CompareStringEx+0x16 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 378]
01a8f370 01171bb5 0017f620 0017f018 00000000 WorkingDll!__acrt_can_use_vista_locale_apis+0x5 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\winapi_thunks.cpp @ 771]
01a8f578 01172444 0017f018 01a8f668 00000083 WorkingDll!_expandlocale+0x173 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp @ 872]
01a8f774 01171598 0017f620 00000000 0017f018 WorkingDll!_wsetlocale_nolock+0x1f5 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp @ 562]
01a8f790 01171266 3f3a601b 01a8f850 0017f620 WorkingDll! <lambda_e378711a6f6581bf7f0efd7cdf97f5d9>::operator()+0x29 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp @ 459]
01a8f7c0 01171342 01a8f7d4 01a8f7f8 01a8f7d8 WorkingDll!__crt_seh_guarded_call<void>::operator()<<lambda_c76fdea48760d5f9368b465f31df4405>,<lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &,<lambda_e927a58b2a85c081d733e8c6192ae2d2> >+0x23 [d:\th\minkernel\crts\ucrt\devdiv\vcruntime\inc\internal_shared.h @ 221]
01a8f7e0 01171537 00000004 01a8f7f8 00000000 WorkingDll!__acrt_lock_and_call<<lambda_e378711a6f6581bf7f0efd7cdf97f5d9> >+0x24 [d:\th\minkernel\crts\ucrt\inc\corecrt_internal.h @ 882]
01a8f80c 011711d6 3f3a6fe7 00000000 0017f018 WorkingDll!<lambda_2af78c5f5901b1372d98f9ab3177dfa6>::operator()+0x54 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp @ 456]
01a8f83c 011720af 01a8f877 01a8f850 01a8f864 WorkingDll!__crt_seh_guarded_call<void>::operator()<<lambda_70818de7b02deff9841e8b0962a60ed9>,<lambda_2af78c5f5901b1372d98f9ab3177dfa6> &,<lambda_f51fe5fd7c79a33db34fc9310f277369> &>+0x18 [d:\th\minkernel\crts\ucrt\devdiv\vcruntime\inc\internal_shared.h @ 221]
(Inline) -------- -------- -------- -------- WorkingDll!__crt_call_and_cleanup+0x3f [d:\th\minkernel\crts\ucrt\devdiv\vcruntime\inc\internal_shared.h @ 232]
01a8f878 0116abf0 00000000 0017f018 00000001 WorkingDll!_wsetlocale+0x79 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\wsetlocale.cpp @ 491]
01a8f894 0116ac26 00000000 0125f0b0 3f3a6f3b WorkingDll!call_wsetlocale+0x7f [d:\th\minkernel\crts\ucrt\src\appcrt\locale\setlocale.cpp @ 30]
01a8f8e0 01071a6a 00000000 0125f0b0 3f3a6cfb WorkingDll!setlocale+0x18 [d:\th\minkernel\crts\ucrt\src\appcrt\locale\setlocale.cpp @ 36]
01a8fb20 01022833 3f3a6a17 0016ebb0 ffffffff WorkingDll!CSmartLogger::InitLog+0x3a [c:\vmagent_new\bin\joblist\332506\src\c_capital\WorkingDll_trunk\WorkingDll_trunk\log\smartlogger.cpp @ 30]
01a8fdcc 00410d52 00000001 01a8ff6c 00424a09 WorkingDll!InitScanType+0x53 [c:\vmagent_new\bin\joblist\332506\src\c_capital\WorkingDll_trunk\WorkingDll_trunk\interface\exportfunction.cpp @ 631]
01a8fdd8 00424a09 0016ebb0 00000001 31d82a2c MainProcess!Ccore::InitScanType+0x12 [c:\vmagent_new\bin\joblist\332635\src\c_capital\MainProcess\MainProcess\MainProcess\core.cpp @ 169]
01a8ff6c 00403f9f 00403f80 01a8ffb4 0047f246 MainProcess!CIniThread::Process+0x149 [c:\vmagent_new\bin\joblist\332635\src\c_capital\MainProcess\MainProcess\MainProcess\inithread.cpp @ 325]
01a8ff78 0047f246 00174690 31d82af4 00000000 MainProcess!CThread::ThreadProc+0x1f [c:\vmagent_new\bin\joblist\332635\src\c_capital\MainProcess\MainProcess\MainProcess\base\thread.cpp @ 33]
(Inline) -------- -------- -------- -------- MainProcess!invoke_thread_procedure+0xd [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 91]
01a8ffb4 7c80b729 00174810 00000000 00000000 MainProcess!thread_start<unsigned int (__stdcall*)(void *)>+0x57 [d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 115]
01a8ffec 00000000 0047f1ef 00174810 00000000 kernel32!BaseThreadStart+0x37
3 Id: 12d0.39c Suspend: 0 Teb: 7ffdc000 Unfrozen
ChildEBP RetAddr Args to Child
01b8fa7c 7c92df5a 7c93b24b 000001e4 00000000 ntdll!KiFastSystemCallRet
01b8fa80 7c93b24b 000001e4 00000000 00000000 ntdll!NtWaitForSingleObject+0xc
01b8fb08 7c921046 002e44a0 0116b66a 012e44a0 ntdll!RtlpWaitForCriticalSection+0x132
01b8fb10 0116b66a 012e44a0 01b8fb50 01170967 ntdll!RtlEnterCriticalSection+0x46
01b8fb1c 01170967 00000004 3f2a6c8b 0017fa70 WorkingDll!__acrt_lock+0x15 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\locks.cpp @ 55]
(Inline) -------- -------- -------- -------- WorkingDll!__acrt_lock_and_call::__l3::<lambda_3518db117f0e7cdb002338c5d3c47b6c>::operator()+0xa [d:\th\minkernel\crts\ucrt\inc\corecrt_internal.h @ 879]
01b8fb50 01170ae1 01b8fb64 01b8fb88 01b8fb68 WorkingDll!__crt_seh_guarded_call<void>::operator()<<lambda_3518db117f0e7cdb002338c5d3c47b6c>,<lambda_b2ea41f6bbb362cd97d94c6828d90b61> &,<lambda_abdedf541bb04549bc734292b4a045d4> >+0x16 [d:\th\minkernel\crts\ucrt\devdiv\vcruntime\inc\internal_shared.h @ 216]
01b8fb70 01170d59 00000004 01b8fb88 00000005 WorkingDll!__acrt_lock_and_call<<lambda_b2ea41f6bbb362cd97d94c6828d90b61> >+0x24 [d:\th\minkernel\crts\ucrt\inc\corecrt_internal.h @ 882]
01b8fb90 011710b4 0017fa70 012e48cc 00000002 WorkingDll!construct_ptd+0x72 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\per_thread_data.cpp @ 116]
(Inline) -------- -------- -------- -------- WorkingDll!construct_ptd_array+0xb [d:\th\minkernel\crts\ucrt\src\appcrt\internal\per_thread_data.cpp @ 125]
(Inline) -------- -------- -------- -------- WorkingDll!get_ptd_head+0x53 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\per_thread_data.cpp @ 234]
(Inline) -------- -------- -------- -------- WorkingDll!internal_getptd_noexit+0x5b [d:\th\minkernel\crts\ucrt\src\appcrt\internal\per_thread_data.cpp @ 246]
01b8fba8 0116ff4f 010b6b8c 010b73c6 01b8fbfc WorkingDll!__acrt_getptd_noexit+0x60 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\per_thread_data.cpp @ 257]
01b8fbac 010b6b8c 010b73c6 01b8fbfc 010b75e0 WorkingDll!__acrt_thread_attach+0x5 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\initialization.cpp @ 297]
01b8fbb0 010b73c6 01b8fbfc 010b75e0 00ea0000 WorkingDll!__scrt_dllmain_crt_thread_attach+0x11 [f:\dd\vctools\crt\vcstartup\src\utility\utility.cpp @ 441]
01b8fbb8 010b75e0 00ea0000 00000002 00000000 WorkingDll!dllmain_crt_dispatch+0x2b [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 145]
01b8fbfc 010b76f7 00ea0000 00000002 00000000 WorkingDll!dllmain_dispatch+0x6f [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 195]
01b8fc10 7c92118a 00ea0000 00000002 00000000 WorkingDll!_DllMainCRTStartup+0x1c [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 253]
01b8fc30 7c93b195 010b76db 00ea0000 00000002 ntdll!LdrpCallInitRoutine+0x14
01b8fca4 7c93b00e 01b8fd30 01b8fd30 00000000 ntdll!LdrpInitializeThread+0xc0
01b8fd1c 7c92e457 01b8fd30 7c920000 00000000 ntdll!_LdrpInitialize+0x219
00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7
0:000> !cs -l
-----------------------------------------
DebugInfo = 0x7c99e1a0
Critical section = 0x7c99e178 (ntdll!LdrpLoaderLock+0x0)
LOCKED
LockCount = 0x3
OwningThread = 0x0000039c
RecursionCount = 0x1
LockSemaphore = 0x1C8
SpinCount = 0x00000000
-----------------------------------------
DebugInfo = 0x0016fa28
Critical section = 0x012e44a0 (WorkingDll!__acrt_lock_table+0x60)
LOCKED
LockCount = 0x1
OwningThread = 0x0000096c
RecursionCount = 0x1
LockSemaphore = 0x1E4
SpinCount = 0x00000fa0
</code></pre>
User contributions licensed under CC BY-SA 3.0