HI all
I see following BSOD after I complete the allocated IRP in the completion
routine . I am following the following procedure in my driver code .
DispatchControl
Save the Main IRP in the Context
Allocate New Irp
Mark Main IRP pending
Set Completion routine for new IRP
Call Next Level driver
return status pending
In Completion routine
Complete Main Irp
Free the IRP
return STATUS_MORE_PROCESSING_REQUIRED
Is there any thing wrong in the above procedure ? CAn anybody point where I
am doing wrong ?
With the above procedure I am seeing the bugcheck as shown below .
thanks in advance
srinivasa
_____Bug Check result
Entered Create - Dispatch control
Entered Class Request Completion Routine Read - Completion Routine
Freeing allocated IRP - Completion Routine
*** Fatal System Error: 0x000000c1
(0xAB689ED8,0xAB689FFF,0x1E000124,0x00000024)
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
****************************************************************************
***
*
*
* Bugcheck Analysis
*
*
*
****************************************************************************
***
Use !analyze -v to get detailed debugging information.
BugCheck C1, {ab689ed8, ab689fff, 1e000124, 24}
*** WARNING: symbols timestamp is wrong 0x39760637 0x3975dff1 for
ntoskrnl.exe
*** ERROR: Symbol file could not be found. Defaulted to export symbols for
USBD.SYS -
Probably caused by : USBD ( USBD!USBD_CompleteRequest+4e )
Followup: MachineOwner
nt!MmLockPagableSectionByHandle+62c:
80453d52 cc int 3
kd> !analyze -v
****************************************************************************
***
*
*
* Bugcheck Analysis
*
*
*
****************************************************************************
***
SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION (c1)
Special pool has detected memory corruption. Typically the current thread’s
stack bactrace will reveal the guilty party.
Arguments:
Arg1: ab689ed8, address trying to free
Arg2: ab689fff, address where bits are corrupted
Arg3: 1e000124, (reserved)
Arg4: 00000024, caller is freeing an address where bytes after the end of
the allocation have been overwritten
Debugging Details:
SPECIAL_POOL_CORRUPTION_TYPE: 24
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: C1
LAST_CONTROL_TRANSFER: from 8042c1c1 to 80453d52
STACK_TEXT:
80470e44 8042c1c1 00000003 c02ada24 00000124
nt!MmLockPagableSectionByHandle+0x62c
804711d0 8053911f 000000c1 ab689ed8 ab689fff nt!IopWritePageToDisk+0x1b6
80471214 804689c8 ab689ed8 00000000 ab689ed8
nt!IopProcessNewDeviceNode+0x196
80471240 80468922 ab689ed8 00000000 8041fe15 nt!MmCreateKernelStack+0x198
80471264 8041fd76 ab689ed8 ef24e57b ab689ed8 nt!MmCreateKernelStack+0xf2
804712a4 8041f6c5 00000000 ab689ed8 82226368
nt!FsRtlFastCheckLockForWrite+0x148
804712d0 f0759c50 841b962b f07494ba ab689ed8
nt!FsRtlFindFirstOverlappingExclusiveNode+0x5b
WARNING: Stack unwind information not available. Following frames may be
wrong.
804712f4 f074ad26 81213ad0 ab689ed8 00000000 USBD!USBD_CompleteRequest+0x4e
80471344 f074a6e7 81213ad0 8149fe68 8297bf50 uhcd+0x2d26
80471380 80462235 81213cdc 81213ad0 00000000 uhcd+0x26e7
ffdff800 8047fce4 00000001 80471398 00139718 nt!MiEndingOffset+0x54d
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
ffdff800 8047fce4 00000001 80471398 00139718 0xffdff800
8047fce4 ffdff800 804317b5 00000000 00a23c1f nt!MmCheckCachedPageState+0x918
FOLLOWUP_IP:
USBD!USBD_CompleteRequest+4e
f0759c50 5b pop ebx
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: USBD!USBD_CompleteRequest+4e
MODULE_NAME: USBD
IMAGE_NAME: USBD
STACK_COMMAND: kb
BUCKET_ID: 0xC1_USBD!USBD_CompleteRequest+4e