VirtualBox

Custom Query (16363 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (358 - 360 of 16363)

Ticket Resolution Summary Owner Reporter
#12465 fixed VHD: first sectors in newly created Data Block is written incorrectly Petr Kurtin
Description

Hello,
in VHD.cpp (vhdWrite function), when you write sector(s) into a newly created Data Block (whose default size is 2Mb), these sectors are not written at the right position and such VHD files are corrupted.

in vhdWrite function, you use:

rc = vdIfIoIntFileWriteUser(pImage->pIfIo, pImage->pStorage,
         pImage->uCurrentEndOfFile + pImage->cDataBlockBitmapSectors * VHD_SECTOR_SIZE,
         pIoCtx, cbWrite,
         vhdAsyncExpansionDataComplete,
         pExpand); 

offset parameter is wrong here, because sectors are always written at the start of the Data Block.

The right offset should be:

uint32_t cSectorInDataBlock = cSector % pImage->cSectorsPerDataBlock;
...
pImage->uCurrentEndOfFile + (pImage->cDataBlockBitmapSectors + cSectorInDataBlock) * VHD_SECTOR_SIZE

Thanks,
Petr Kurtin

#12582 obsolete BSOD: PnP (vboxusb.sys) Petr Kurtin
Description

Hello,
I got the following BSOD:

BugCheck C9, {22e, fffff80023af3a70, ffffcf80021b4b40, 0}

DRIVER_VERIFIER_IOMANAGER_VIOLATION (c9)
The IO manager has caught a misbehaving driver.
Arguments:
Arg1: 000000000000022e, The caller has completed a successful IRP_MJ_PNP instead of passing it down.
Arg2: fffff80023af3a70, The address in the driver's code where the error was detected.
Arg3: ffffcf80021b4b40, IRP address.
Arg4: 0000000000000000

The problem is caused by incorrect handling of IRP_MN_CANCEL_REMOVE_DEVICE state. vboxUsbPnPMnCancelRemoveDevice function (src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbPnP.cpp) is called with IRP_MN_CANCEL_REMOVE_DEVICE, but enmState is already in ENMVBOXUSB_PNPSTATE_STARTED state. MSDN says, you should pass the request down: A driver might receive a spurious cancel-remove request when the device is started and active. This can occur, for example, if the driver (or a driver higher in the device stack) failed an IRP_MN_QUERY_REMOVE_DEVICE request. When a device is started and active, a driver simply succeeds a spurious cancel-remove request for the device.

current code:

static NTSTATUS vboxUsbPnPMnCancelRemoveDevice(PVBOXUSBDEV_EXT pDevExt, PIRP pIrp)
{
    ENMVBOXUSB_PNPSTATE enmState = vboxUsbPnPStateGet(pDevExt);
    NTSTATUS Status = STATUS_SUCCESS;
    if (enmState == ENMVBOXUSB_PNPSTATE_REMOVE_PENDING)
    {
        IoCopyCurrentIrpStackLocationToNext(pIrp);
        Status = VBoxDrvToolIoPostSync(pDevExt->pLowerDO, pIrp);
        if (NT_SUCCESS(Status))
        {
            vboxUsbPnPStateRestore(pDevExt);
        }
    }
    else
    {
        Assert(0);
        Assert(enmState == ENMVBOXUSB_PNPSTATE_STARTED);
    }

    VBoxDrvToolIoComplete(pIrp, Status, 0);
    vboxUsbDdiStateRelease(pDevExt);

    return Status;
}

fixed code:

static NTSTATUS vboxUsbPnPMnCancelRemoveDevice(PVBOXUSBDEV_EXT pDevExt, PIRP pIrp)
{
    ENMVBOXUSB_PNPSTATE enmState = vboxUsbPnPStateGet(pDevExt);
    NTSTATUS Status = STATUS_SUCCESS;
    Assert(enmState == ENMVBOXUSB_PNPSTATE_REMOVE_PENDING);

    IoCopyCurrentIrpStackLocationToNext(pIrp);
    Status = VBoxDrvToolIoPostSync(pDevExt->pLowerDO, pIrp);
    if (NT_SUCCESS(Status))
    {
        if (enmState == ENMVBOXUSB_PNPSTATE_REMOVE_PENDING)
        {
            vboxUsbPnPStateRestore(pDevExt);
        }
    }

    VBoxDrvToolIoComplete(pIrp, Status, 0);
    vboxUsbDdiStateRelease(pDevExt);

    return Status;
}

The same problem is also with vboxUsbPnPMnCancelStopDevice function.

callstack:
nt!KeBugCheckEx
nt!VerifierBugCheckIfAppropriate
nt!ViErrorFinishReport
nt!VfPnpVerifyIrpStackUpward
nt!VfMajorVerifyIrpStackUpward
nt!IovpCompleteRequest2
nt!IovpLocalCompletionRoutine
nt!IopfCompleteRequest
nt!IovCompleteRequest
VBoxUSB!vboxUsbPnPMnCancelRemoveDevice
VBoxUSB!vboxUsbDispatchPnP
VerifierExt!xdv_IRP_MJ_PNP_wrapper
nt!IovCallDriver
nt!ViFilterDispatchPnp
nt!IovCallDriver
VerifierExt!IofCallDriver_internal_wrapper
MSDMFilt!FilterPassIrpSynchronously
MSDMFilt!FilterCancelRemove
MSDMFilt!FilterDispatchPnp
VerifierExt!xdv_IRP_MJ_PNP_wrapper
nt!IovCallDriver
nt!ViFilterDispatchPnp
nt!IovCallDriver
nt!IopSynchronousCall
nt!IopRemoveDevice
nt! ?? ::NNGAKEGL::`string'
nt!PnpDeleteLockedDeviceNode
nt!PnpDeleteLockedDeviceNodes
nt!PnpProcessQueryRemoveAndEject
nt!PnpProcessTargetDeviceEvent
nt!PnpDeviceEventWorker
nt!ExpWorkerThread
nt!PspSystemThreadStartup
nt!KiStartSystemThread}}}

Regards,
Petr
#12844 fixed several "Guru Meditation" logs Petr Kurtin
Description

I'm sending you six Guru Meditation logs:

  1. Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT)
  2. Guru Meditation -2301 (VERR_REM_VIRTUAL_CPU_ERROR)
  3. Guru Meditation -2403 (VERR_TRPM_DONT_PANIC)
  4. Guru Meditation -75 (VERR_MAP_FAILED)
  5. Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT)
  6. Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT)

All logs are from the latest VirtualBox 4.3.8, different OSes.

Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.

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