Rein Klazes rklazes@xs4all.nl writes:
The maker seem to think that the handle must be closed both by sub-thread and main thread before it is removed. That is how I read the traces as well. So that is not true?
No, handles are process wide, so closing a handle once closes it for the whole process.
It must be here :
| 0023:Call ntdll.RtlAllocateHeap(40340000,00000000,00000080) ret=4076cd9c | 0009:Call ntdll.RtlFreeHeap(40340000,00000000,403f0ca0) ret=40772536 | 0009: create_semaphore( initial=00000000, max=00000001, inherit=0, name=L"" ) | 0009: create_semaphore() = 0 { handle=0xcc }
OK that makes sense, it's because of the lazy init of the critical sections, which Windows doesn't do. I guess we'll need to remove that optimization then, unless we can convince the Agent folks to fix the bug.