VirtualBox

Changeset 68840 in vbox for trunk/src/VBox/Runtime/common/fs


Ignore:
Timestamp:
Sep 23, 2017 12:50:40 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118094
Message:

isomaker: Dump more details on 'bitmap weirdness' error. Suspecting buggy ASMBitNextClear assmebly, possibly related to rounding. Need details.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/fs/isomakercmd.cpp

    r68830 r68840  
    12001200                    iBlock = RTRandU32Ex(0, cBlocks - 1);
    12011201                    fBitSet = ASMBitTestAndSet(pvBitmap, iBlock);
    1202                 } while (fBitSet && ++cTries < 32);
     1202                } while (fBitSet && ++cTries < /*32 - testing buggy assembly*/ 1);
    12031203                if (fBitSet)
    12041204                {
    12051205                    /* Look for the next clear bit after it (with wrap around). */
     1206                    //int iHit = ASMBitNextClear(pvBitmap, RT_ALIGN_32(cBlocks, 64), iBlock); - buggy assembly somewhere...
    12061207                    int iHit = ASMBitNextClear(pvBitmap, cBlocks, iBlock);
    12071208                    Assert(iHit < (int32_t)cBlocks);
    12081209                    if (iHit < 0)
    12091210                    {
     1211                        //iHit = ASMBitNextClear(pvBitmap, RT_ALIGN_32(iBlock, 64), 0); - buggy assembly somewhere...
    12101212                        iHit = ASMBitNextClear(pvBitmap, iBlock, 0);
    12111213                        Assert(iHit < (int32_t)cBlocks);
     
    12191221                        {
    12201222                            rc = rtFsIsoMakerCmdErrorRc(pOpts, VERR_INTERNAL_ERROR_3,
    1221                                                         "Bitmap weirdness: iHit=%#x iBlock=%#x cBlocks=%#x",
    1222                                                         iHit, iBlock, cBlocks);
     1223                                                        "Bitmap weirdness: iHit=%#x iBlock=%#x cLeft=%#x cBlocks=%#x",
     1224                                                        iHit, iBlock, cLeft, cBlocks);
     1225                            if (!pOpts->pErrInfo)
     1226                                RTMsgInfo("Bitmap: %#RX32 bytes\n%.*Rhxd", cbBitmap, cbBitmap, pvBitmap);
    12231227                            break;
    12241228                        }
     
    12261230                    else
    12271231                    {
    1228                         rc = rtFsIsoMakerCmdErrorRc(pOpts, VERR_INTERNAL_ERROR_2, "Bitmap weirdness: iBlock=%#x cBlocks=%#x",
    1229                                                     iBlock, cBlocks);
     1232                        rc = rtFsIsoMakerCmdErrorRc(pOpts, VERR_INTERNAL_ERROR_2,
     1233                                                    "Bitmap weirdness: iBlock=%#x cLeft=%#x cBlocks=%#x",
     1234                                                    iBlock, cLeft, cBlocks);
     1235                        if (!pOpts->pErrInfo)
     1236                            RTMsgInfo("Bitmap: %#RX32 bytes\n%.*Rhxd", cbBitmap, cbBitmap, pvBitmap);
    12301237                        break;
    12311238                    }
Note: See TracChangeset for help on using the changeset viewer.

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