[vbox-dev] invalid sysenter information in debug core dump

samuele.defrancesco sdefrancesco at tetrane.com
Wed Jun 8 15:21:21 GMT 2016


Hi,

The sysenter information of debug core dumps appears to be invalid.

The issue seem to come from the fact that the DBGFCORECPU sysenter field 
is an union.

Index: include/VBox/vmm/dbgfcorefmt.h
===================================================================
typedef struct DBGFCORECPU
{
    ...
    union
    {
        uint64_t        cs;
        uint64_t        eip;
        uint64_t        esp;
     } sysenter;

In fact, its initialized by copying the CPUMSYSENTER fields from the cpu 
context.

Index: src/VBox/VMM/VMMR3/DBGFCoreWrite.cpp
===================================================================
static void dbgfR3GetCoreCpu(PVM pVM, PCPUMCTX pCtx, PDBGFCORECPU pDbgfCpu)
{
     ...
     pDbgfCpu->sysenter.cs     = pCtx->SysEnter.cs;
     pDbgfCpu->sysenter.eip    = pCtx->SysEnter.eip;
     pDbgfCpu->sysenter.esp    = pCtx->SysEnter.esp;


leading to an inconsistent core dump where sysenter.cs == sysenter.eip 
== systenter.esp.

Using a struct instead of an union fix the issue.

Regards,
     Sam



More information about the vbox-dev mailing list