simonowen/dirtfix

KERNELBASE.dll error/crash with dirtfix applied to Dirt Rally 2.0

Closed this issue · 13 comments

Hi,
I get the following error and Dirt Rally 2.0 Crashes when loading the codemasters screen in VR.

Unknown exception at address 0xa33a9129 in module 'KERNELBASE.dll' + 0x39129.
KERNELBASE.dll

Do you know what the problem could be?

Thanks for reporting this. I'd seen some mentions of a crash, but hadn't got any additional details to use until now. Unfortunately it's not a problem I've seen on my Windows 10 system (Version 1903, Build 18362.356).

  • does it crash every time with the same addresses you detailed above?
  • does the non-VR desktop version do the same?
  • are you running the Steam or Oculus store version of Dirt Rally 2.0?
  • what does winver.exe show as your Windows version and build?

The kernelbase address doesn't seem to give a meaningful location on my system, which may mean our versions are slightly different. To diagnose it further I'd probably need to capture a dump of the process in the crashed state. The dumps Task Manager can create are quite large even when zipped, but it may be possible to use ProcDump to create a smaller image.

If you're willing to run some extra tests to help diagnose it, I'll add some more details below.

Hey Simon

Regarding your questions

  • It seems to be the same address, tried it three times
  • The non-vr version crashes as well (same error)
  • Running Steam Version
  • Version 1809 (Build 17763.737)

Sure I can see if I can run dump, let me know what the steps are.

Peter

I have the same problem (Unknown exception at address 0xada1a839 in module 'KERNELBASE.dll' + 0x3a839. KERNELBASE.dll) on Windows Version 1903, Build 18362.356. Steam version, 2D mode tried.

Thanks for the extra details! Peter: your setup is pretty close to mine, except I'm running 1903. @br3ndanp: your kernelbase address seems to make more sense on my machine, though it's only giving an address inside the RaiseException function.

The process dump I mentioned above would be:

  • generate the crash, but don't click OK on the crash dialog.
  • press Ctrl-Shift-Esc to bring up Task Manager.
  • find Dirt Rally 2.0 Executable on the Details tab
  • right click on the process and select "Create dump file" (it may take 30 seconds or so)
  • navigate to the path it showed and compress the .dmp file (7-zip or just zip)

Trying it here on the running game I got a 2GB .dmp file, which compressed to about 300MB. I'm hoping the crash on your system is early enough that not much has loaded so it should be a lot smaller. If you can get a compressed file on Google Drive / Dropbox / etc. I'd be grateful.

I'll try experimenting with ProcDump too, which is a 3rd party utility that can be registered against a given process name, and catch the crash as it happens. It should also create much smaller mini-dump files.

The ProcDump approach should be:

  • download ProcDump from Microsoft site
  • extract procdump64.exe from the archive to your C:\Users<YourUsername>\
  • launch cmd.exe, which should default to the same location
  • run procdump64.exe -e -ma -w dirtrally2.exe
  • launch the game, wait for the crash, click OK
  • ProcDump should have created a new .dmp file in the same location
  • zip up the (hopefully smaller) file and upload somewhere

It seems normal for DR 2.0 to generate a lot of "Exception: 406D1388" output messages, even when DirtFix isn't installed. These are probably just first-chance exceptions that are expected and handled by the game.

Hi, I'm having the same issues as the others. I generated a dump using ProcDump, and uploaded it here:
https://andyf.me/dirtrally2.exe_190923_191619.7z

I'm using Windows 10, version 1903. Non-VR version of DR2.

Thanks Andy! The dump shows it's crashing when trying to re-acquire a mutex.

I suspect something else is opening the DInput8 interface, but only on your systems (perhaps the Logitech drivers?). It wasn't checking if the hook was already installed, and would chain onto itself. Re-acquiring a non-recursive mutex from the same thread seems to be raising the exception.

I've made some changes I hope will resolve it. Could you please try over-installing the new build?

I didn't get around to making the dump, but I installed the new build and it seemed to have fixed it! Thanks!

Simon, Brilliant! I didn't get a chance to do dump either, but whatever you did to the 1.1a version fixed the crash issue. Solid 90fps, finally!
Codies should send some money your way lol.

Thank you again
Peter

Thanks everyone for your help tracking this down! It was fixed in 3cede88.

I've created an official v1.2 build now I know it's resolved.

I just wanted to confirm that I was using a Logitech G29 wheel and shifter, just like you thought, and the stutter was only with it plugged in.

I suspect the crash may have only affected Logitech users, and the drivers seemed to be loading dinput8.dll a second time. I have a Fanatec wheel and never saw the crash.

The stutter affects anyone with a game controller type USB device, as that's what the DiRT games were looking for, and what ultimately took the extra CPU time.

Actually Simon, I'm using a simucube SC1, and got the crash. So I think it was just USB issues in general. But like I mentioned, whatever you did fixed the issue.
There is a new patch coming out for Dirt Rally 2.0 on October 1st. Hopefully it doesn't break anything...