VirtualBox

Changeset 48184 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 30, 2013 9:57:05 AM (11 years ago)
Author:
vboxsync
Message:

PGMAllPool.cpp: Try work around assertion in pgmPoolMonitorChainChanging caused by cbWrite being larger than 8.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r46420 r48184  
    978978     */
    979979#if defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) || defined(IN_RC)
    980     uint32_t    iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
    981     pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, DISGetParamSize(pDis, &pDis->Param1));
     980    uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
     981#endif
     982
     983    uint32_t cbWrite = DISGetParamSize(pDis, &pDis->Param1);
     984    if (cbWrite <= 8)
     985        pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, cbWrite);
     986    else
     987    {
     988        Assert(cbWrite <= 16);
     989        pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, 8);
     990        pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault + 8, pvFault + 8, cbWrite - 8);
     991    }
     992
     993#if defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) || defined(IN_RC)
    982994    PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
    983 #else
    984     pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, DISGetParamSize(pDis, &pDis->Param1));
    985995#endif
    986996
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette