[Issue 20430] [Regression 2.089.0] DLL Runtime.terminate() hangs
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Dec 6 17:10:23 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=20430
kinke <kinke at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kinke at gmx.net
--- Comment #2 from kinke <kinke at gmx.net> ---
Can reproduce; there's one less thread_detach than _attach. Output with my
quad-core:
> program.exe
DLL_PROCESS_ATTACH
End...
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_DETACH
DLL_THREAD_DETACH
DLL_PROCESS_DETACH
> program.exe --DRT-gcopt=parallel:0
Start loading.
Start Dynamic Link...
DLL_PROCESS_ATTACH
End...
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_PROCESS_DETACH
> program.exe --DRT-gcopt=disable:1
Start loading.
Start Dynamic Link...
DLL_PROCESS_ATTACH
End...
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_DETACH
DLL_THREAD_DETACH
DLL_PROCESS_DETACH
The output is the same but the program doesn't hang anymore when using a more
complete DllMain (extended core.sys.windows.dll.SimpleDllMain mixin):
extern (Windows)
BOOL DllMain(HINSTANCE hInstance, uint ulReason, void* reserved)
{
import core.sys.windows.winnt;
import core.sys.windows.dll :
dll_process_attach, dll_process_detach,
dll_thread_attach, dll_thread_detach;
switch (ulReason)
{
default: assert(0);
case DLL_PROCESS_ATTACH:
printf("DLL_PROCESS_ATTACH\n");
return dll_process_attach( hInstance, true );
case DLL_PROCESS_DETACH:
printf("DLL_PROCESS_DETACH\n");
dll_process_detach( hInstance, true );
return true;
case DLL_THREAD_ATTACH:
printf("DLL_THREAD_ATTACH\n");
return dll_thread_attach( true, true );
case DLL_THREAD_DETACH:
printf("DLL_THREAD_DETACH\n");
return dll_thread_detach( true, true );
}
}
--
More information about the Digitalmars-d-bugs
mailing list