When replacing our default hal.dll by halapic.dll, ReactOS doesn't boot anymore in VirtualBox 5.1.28 (with I/O APIC enabled in VM settings).
Debug log with enabled debug prints in ntoskrnl/mm/mmfault.c and backtrace is attached.
What debugging already revealed:
- Debug prints give the impression that the crash occurs between lines 1455 and 1478 of ntoskrnl/io/pnpmgr/pnpmgr.c after IopCreateDeviceInstancePath -> IopQueryDeviceCapabilities -> IopCreateDeviceKeyPath (with RegistryPath = NULL) is called for the first time. However, when stepping into the code with WinDbg, IopCreateDeviceKeyPath gets further as shown by the debug print on pnpmgr.c:1478. So the crash obviously occurs in a second thread.
- The system crashes, because RemoveEntryList is called with a NULL Entry. Thus, we get "MmNotPresentFault(Mode 0, Address 0)" in the debug log.
- The RemoveEntryList call originates from a call to KeLeaveCriticalRegion in ObpReleaseDirectoryLock.
I'm open for suggestions how to continue. ThePhysicist, as the creator of our APIC HAL, did you already run into this before or have any idea what may cause it?
CORE-17378 Compatibility of HALs in ReactOS and HALs in XP and W2003