ExitProcess crashes win32_renderer_test

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.

image.png

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?

  • Windows 10.0.19045 Build 19045
  • Intel(R) Iris(R) Xe Graphics

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.


Edited by Mārtiņš Možeiko on

I didn't know about load symbols!

image.png

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.


Replying to mmozeiko (#29647)