vbox6: add support for Windows BSOD logging

Hitting a BOSD in a Windows guest in Virtualbox 6 leads to calling
 `DBGFR3ReportBugCheck`, which leads to the following error since it is
 unimplemented in our port:

```
 Error: DBGFR3ReportBugCheck: DBGFR3ReportBugCheck called, not implemented, eip=0x1a5c4e4
```

Including the actual method from Virtualbox 6 enables logging
diagnostics for the Windows Blue Screen of Death (BSOD).
To see Blue Screen logging output, enable "dbgf" and "gim" logging
via the `VBOX_LOG` following environment variable in the vbox6 runtime
config.
When manually triggering a BSOD in the Windows guest, this should
produce the following logging diagnostics:

```
GIM: HyperV: Guest indicates a fatal condition! P0=0xe2 P1=0x0 P2=0x0 P3=0x0 P4=0x0
GIMHv: BugCheck e2 {0, 0, 0, 0}
MANUALLY_INITIATED_CRASH
```

Fixes #5099
This commit is contained in:
Benjamin Lamowski 2024-01-22 10:33:55 +01:00 committed by Christian Helmuth
parent de6048f517
commit cec7847502
4 changed files with 2 additions and 7 deletions

View File

@ -56,6 +56,7 @@ SRC_CC += VMM/VMMAll/DBGFAll.cpp
SRC_CC += VMM/VMMR3/DBGFInfo.cpp
SRC_CC += VMM/VMMR3/DBGFOS.cpp
SRC_CC += VMM/VMMR3/DBGFR3PlugIn.cpp
SRC_CC += VMM/VMMR3/DBGFR3BugCheck.cpp
SRC_CC += VMM/VMMR3/CPUM.cpp
SRC_CC += VMM/VMMR3/CPUMR3CpuId.cpp

View File

@ -68,7 +68,7 @@
<arg value="virtualbox"/>
<env key="VBOX_USER_HOME" value="/"/>
<env key="VBOX_LOG_DEST" value="file=/dev/log"/>
<env key="VBOX_LOG" value=""/>
<env key="VBOX_LOG" value="+dbgf+gim"/>
<env key="VBOX_LOG_FLAGS" value="thread"/>
<env key="VBOX_RELEASE_LOG_DEST" value="file=/dev/log"/>
<env key="VBOX_RELEASE_LOG" value=""/>

View File

@ -382,11 +382,6 @@ HRESULT Console::i_teleporterTrg(PUVM, IMachine *, Utf8Str *, bool, Progress *,
int dbgfR3BpInit(VM*) { return VINF_SUCCESS; }
/* DBGFR3BugCheck.cpp */
int dbgfR3BugCheckInit(VM*) { return VINF_SUCCESS; }
/* dbgcfg.cpp */
int RTDbgCfgCreate(PRTDBGCFG, const char *, bool) TRACE(VINF_SUCCESS)

View File

@ -27,7 +27,6 @@ DUMMY(DBGFR3CoreWrite)
DUMMY(DBGFR3LogModifyDestinations)
DUMMY(DBGFR3LogModifyFlags)
DUMMY(DBGFR3LogModifyGroups)
DUMMY(DBGFR3ReportBugCheck)
DUMMY(DBGFR3StackWalkBegin)
DUMMY(DBGFR3StackWalkBeginEx)
DUMMY(DBGFR3StackWalkEnd)