I continue to debug the crash bug when shutting down a vm on windows host.
 
The crash indicated that some code is still being executed after a dll is 
unloaded. 
 
After some extensive debugging, I found the following function might be 
problematic. Can you guys double check?
 
When WM_VBOX_RENDERSPU_DESTROY_WINDOW is received, it immediately invokes 
SetEvent(render_spu.hWinThreadReadyEvent), should that statement be commented 
out? and leave the last one.
 
static DWORD WINAPI renderSPUWindowThreadProc(void* unused)
{
...
else
{
...
 
else if (msg.message == WM_VBOX_RENDERSPU_DESTROY_WINDOW)
{
CRASSERT(msg.lParam && !msg.wParam);
DestroyWindow(((VBOX_RENDERSPU_DESTROY_WINDOW*) msg.lParam)->hWnd);
SetEvent(render_spu.hWinThreadReadyEvent);
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
render_spu.dwWinThreadId = 0;
crDebug("RenderSPU: Window thread stopped (%x)", crThreadID());
SetEvent(render_spu.hWinThreadReadyEvent);
return 0;
}
_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to