Hi,
I am getting a crash when closing the test renderer window at win32_renderer_test.cpp:471
(ExitProcess(0);
) in the code tagged day472
. It happens most of the time, but not every time.
Exception thrown at 0x00007FFDE7DED1CC (igxelpicd64.dll) in win32_renderer_test.exe: 0xC0000005: Access violation reading location 0x00000000000356F8.
It did not crash there in the previous commit. I assume it is to do with the change to rendering in a separate thread but I thought ExitProcess
should kill all the threads. If I insert Sleep(200);
before ExitProcess(0);
it no longer crashes.
The commit tagged day478
solves the crash. I guess some of the changes to OpenGL solved the issue, but I'm not sure how.
Any idea what is going on here? How would I go about fixing this prior to day478
without adding Sleep
?
You can right click on entries in call stack and select "Load Symbols" to get names for functions in dll files. This will allow to see a bit better what Windows is trying to do. This will work for ntdll.dll and kernel32.dll files. Not for Intel gpu driver.
My guess is that it is trying to unload Intel dll file. But it could be Intel GPU driver bug if it crashes during unload. Do you have latest driver version? If not, try upgrading it.
In general exiting process with ExitProcess(0) call is safe. It should properly terminate all threads and close the process.
I didn't know about load symbols!
I suppose it is a driver bug as Casey didn't have it, and I didn't find anyone else mentioning it on the forum or in GitHub issues.
It must be so annoying releasing a game that runs fine on a bunch of hardware setups, only to find the it crashes on some others due to things like this.