BAD_POOL_CALLER on Windows XP

Hi All,
I have developed a TDI Filter driver which works fine on Windows NT and 2000
But after Buiding the driver using XP DDK and Running it On XP machine XP
crashes suddenly with BAD_POOL_CALLER bugcheck.This happens when driver is
installed and i try to boot XP.In Debugger, analyse shows that File system
drivers NTFS.SYS and Sr.sys are making calls to ExAllocatePool But where
does my driver comes in to the picture ? why it happens after installing my
driver ?

Could any one tell me what is going on here…

kd> !analyze -v
****************************************************************************
***
*
*
* Bugcheck Analysis
*
*
*
****************************************************************************
***

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically this is at a bad
IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 00000007, Attempt to free pool which was already freed
Arg2: 00000c3e, (reserved)
Arg3: 000003d0, Memory contents of the pool block
Arg4: 80e11780, Pointer to pool header

Debugging Details:

Bad allocation size @80e11408, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 80e11000 for more details.
***

Pool page [80e11000] is INVALID.

Analyzing linked list…
[80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
[80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

BUGCHECK_STR: 0xc2_7

DEFAULT_BUCKET_ID: DRIVER_FAULT

LAST_CONTROL_TRANSFER: from 805226a5 to 8050d064

STACK_TEXT:
fc8e27b4 805226a5 00000003 00000000 000000c2
nt!RtlpBreakWithStatusInstruction
fc8e2800 80522dea 00000003 80e11778 80e11780 nt!KiBugCheckDebugBreak+0x19
fc8e2bc8 804fc1bb 000000c2 00000007 00000c3e nt!KeBugCheck2+0x43c
fc8e2be8 8053757e 000000c2 00000007 00000c3e nt!KeBugCheckEx+0x19
fc8e2c30 80537149 80e11780 00000000 804f742e nt!ExFreePoolWithTag+0x237
fc8e2c3c 804f742e 80e11780 804f8497 8053d900 nt!ExFreePool+0xb
fc8e2c44 804f8497 8053d900 80e11780 e1590228
nt!ExFreeToNPagedLookasideList+0x1b
fc8e2c58 baf31813 e15902cc e1590228 80e5f778
nt!FsRtlUninitializeLargeMcb+0x18
fc8e2c6c baf27a96 fc8e2ca4 e1590228 e15901fc Fastfat!FatDeleteFcb_Real+0x7b
fc8e2d00 baf31b00 80e5f778 e1590228 e15901f0 Fastfat!FatCommonClose+0x1a1
fc8e2d5c baf31b47 00000000 80571367 80e94528 Fastfat!FatFspClose+0x105
fc8e2d64 80571367 80e94528 00000000 80548a80 Fastfat!FatCloseWorker+0xf
fc8e2d74 804ebd08 80e94840 00000000 80e8eaa8 nt!IopProcessWorkItem+0xf
fc8e2dac 80559026 80e94840 00000000 00000000 nt!ExpWorkerThread+0xfe
fc8e2ddc 8050f513 804ebc35 00000000 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

FOLLOWUP_IP:
nt!RtlpBreakWithStatusInstruction+0
8050d064 cc int 3

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!RtlpBreakWithStatusInstruction+0

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3b7de38f

STACK_COMMAND: kb

BUCKET_ID: 0xc2_7_nt!RtlpBreakWithStatusInstruction+0

Followup: MachineOwner

kd> !poolval 80e11000
Pool page 80e11000 region is Nonpaged pool

Validating Pool headers for pool page: 80e11000

Pool page [80e11000] is INVALID.

Analyzing linked list…
[80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
[80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

Regards
Subodh

Is psched in the stack? If it is, take it out and see if this still
repros. I just got done working on an issue that sounds familiar and
the root cause was in psched.

Bryan S. Burgin
xxxxx@microsoft.com

This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@softhome.net
Sent: Saturday, November 22, 2003 3:17 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] BAD_POOL_CALLER on Windows XP

Hi All,
I have developed a TDI Filter driver which works fine on Windows NT and
2000
But after Buiding the driver using XP DDK and Running it On XP machine
XP
crashes suddenly with BAD_POOL_CALLER bugcheck.This happens when driver
is
installed and i try to boot XP.In Debugger, analyse shows that File
system
drivers NTFS.SYS and Sr.sys are making calls to ExAllocatePool But where

does my driver comes in to the picture ? why it happens after installing
my
driver ?

Could any one tell me what is going on here…

kd> !analyze -v
************************************************************************
****
***
*

*
* Bugcheck Analysis

*
*

*
************************************************************************
****
***

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically this is at a
bad
IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 00000007, Attempt to free pool which was already freed
Arg2: 00000c3e, (reserved)
Arg3: 000003d0, Memory contents of the pool block
Arg4: 80e11780, Pointer to pool header

Debugging Details:

Bad allocation size @80e11408, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 80e11000 for more details.
***

Pool page [80e11000] is INVALID.

Analyzing linked list…
[80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
[80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

BUGCHECK_STR: 0xc2_7

DEFAULT_BUCKET_ID: DRIVER_FAULT

LAST_CONTROL_TRANSFER: from 805226a5 to 8050d064

STACK_TEXT:
fc8e27b4 805226a5 00000003 00000000 000000c2
nt!RtlpBreakWithStatusInstruction
fc8e2800 80522dea 00000003 80e11778 80e11780
nt!KiBugCheckDebugBreak+0x19
fc8e2bc8 804fc1bb 000000c2 00000007 00000c3e nt!KeBugCheck2+0x43c
fc8e2be8 8053757e 000000c2 00000007 00000c3e nt!KeBugCheckEx+0x19
fc8e2c30 80537149 80e11780 00000000 804f742e nt!ExFreePoolWithTag+0x237
fc8e2c3c 804f742e 80e11780 804f8497 8053d900 nt!ExFreePool+0xb
fc8e2c44 804f8497 8053d900 80e11780 e1590228
nt!ExFreeToNPagedLookasideList+0x1b
fc8e2c58 baf31813 e15902cc e1590228 80e5f778
nt!FsRtlUninitializeLargeMcb+0x18
fc8e2c6c baf27a96 fc8e2ca4 e1590228 e15901fc
Fastfat!FatDeleteFcb_Real+0x7b
fc8e2d00 baf31b00 80e5f778 e1590228 e15901f0
Fastfat!FatCommonClose+0x1a1
fc8e2d5c baf31b47 00000000 80571367 80e94528 Fastfat!FatFspClose+0x105
fc8e2d64 80571367 80e94528 00000000 80548a80 Fastfat!FatCloseWorker+0xf
fc8e2d74 804ebd08 80e94840 00000000 80e8eaa8 nt!IopProcessWorkItem+0xf
fc8e2dac 80559026 80e94840 00000000 00000000 nt!ExpWorkerThread+0xfe
fc8e2ddc 8050f513 804ebc35 00000000 00000000
nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

FOLLOWUP_IP:
nt!RtlpBreakWithStatusInstruction+0
8050d064 cc int 3

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!RtlpBreakWithStatusInstruction+0

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3b7de38f

STACK_COMMAND: kb

BUCKET_ID: 0xc2_7_nt!RtlpBreakWithStatusInstruction+0

Followup: MachineOwner

kd> !poolval 80e11000
Pool page 80e11000 region is Nonpaged pool

Validating Pool headers for pool page: 80e11000

Pool page [80e11000] is INVALID.

Analyzing linked list…
[80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
[80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi Bryan,
No There is no ref. to psched at all in the stack i poked around it for
all the day but got nothing.But i added DbgPrint’s for the allocated
buffers and now i can see that the pool i am allocating is somehow being
mishandled by sr.sys or ntfs.sys. see the windbg output which it
produces.But i dont know exactly how to interprete and connect my
allocations with the allocations with other drivers like sr.sys.please
take a close look to the addresses printed…my allocated buffer is at
pBuffer- 81210dd8, and !poolval shows 81218eb8 –> 81218ef0 (size = 0x38
bytes)]: Corrupt region. what exactly has happened here ?

NetFilter.SYS: entering DriverEntry
[NETFILTER.SYS] InitProcessIDQueue - Initializing QHead and QSpinLock
[NETFILTER.SYS] InitProcessIDQueue - Initializing QHead and QSpinLock
[NETFILTER.SYS] InitPromptIDQueue - Initializing QHead and QSpinLock
IRP_MJ_CLOSE
Irp Sent to Target Device
returning from DrvFilterDispatch
IRP_MJ_CLOSE
Irp Sent to Target Device
returning from DrvFilterDispatch
IRP_MJ_CREATE
Control Channel Being Created by 4 Protocol Used 6Create Irp Sent to
Target
Inside TdiCreateCompletionRoutine
Element Succesfully Added
Inside TdiCreateCompletionRoutine - Entry Added
Inside TdiCreateCompletionRoutine - Queuing Work Item
Inside NetFilterUpdateIPPortWorkRoutine - Buffers 81210dd8
Inside DrvQueryAddressInfo - got Buffer 81210dd8
IoCallDriver(pDeviceObject = 811d2a80) returned c0000002
Inside NetFilterUpdateIPPortWorkRoutine - accessing Buffers
Local IP Address 0.0.0.0 on Port 0
NetFilterUpdateIPPortWorkRoutine Freeing Allocated Memory
NetFilterUpdateIPPortWorkRoutine Freeing pBuffer81210dd8
NetFilterUpdateIPPortWorkRoutine return
Inside TdiCreateCompletionRoutine - Return
Irp Sent to Target Device
Filter Create Return
IRP_MJ_DEVICE_CONTROL
Unable to Map IRP_MJ_INTERNAL_DEVICE on file object c0000002
Irp Sent to Target Device
returning from DrvFilterDispatch
UNKNOWN
Irp Sent to Target Device
returning from DrvFilterDispatch
UNKNOWN
Irp Sent to Target Device
returning from DrvFilterDispatch

*** Fatal System Error: 0x000000c2
(0x00000007,0x00000C3E,0x00000004,0x81218ED0)

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.

Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols

Loading unloaded module list

Loading User Symbols

*******************************************************************************

*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck C2, {7, c3e, 4, 81218ed0}

Bad allocation size @81218ec8, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 81218000 for more details.
***

Pool page [81218000] is INVALID.

Analyzing linked list…
[81218eb8 –> 81218ef0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

*** ERROR: Module load completed but symbols could not be loaded for
ntdll.dll
Probably caused by : sr.sys ( sr!SrPassThrough+2f )

Followup: MachineOwner

nt!RtlpBreakWithStatusInstruction:
805103fa cc int 3
kd> !analyze -v
*******************************************************************************

*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically this is at a
bad IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 00000007, Attempt to free pool which was already freed
Arg2: 00000c3e, (reserved)
Arg3: 00000004, Memory contents of the pool block
Arg4: 81218ed0, Pointer to pool header

Debugging Details:

Bad allocation size @81218ec8, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 81218000 for more details.
***

Pool page [81218000] is INVALID.

Analyzing linked list…
[81218eb8 –> 81218ef0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

BUGCHECK_STR: 0xc2_7

DEFAULT_BUCKET_ID: DRIVER_FAULT

LAST_CONTROL_TRANSFER: from 805258ca to 805103fa

STACK_TEXT:
bae8427c 805258ca 00000003 bae845ac 00000007
nt!RtlpBreakWithStatusInstruction
bae842c8 80526160 00000003 81218ec8 81218ed0 nt!KiBugCheckDebugBreak+0x19
bae84694 805266db 000000c2 00000007 00000c3e nt!KeBugCheck2+0x46d
bae846b4 8053d4a1 000000c2 00000007 00000c3e nt!KeBugCheckEx+0x19
bae846fc 8053d16f 81218ed0 00000000 804e47d1 nt!ExFreePoolWithTag+0x237
bae84708 804e47d1 81218ed0 804e9de2 80543980 nt!ExFreePool+0xb
bae84710 804e9de2 80543980 81218ed0 e1591208
nt!ExFreeToPagedLookasideList+0x1b
bae84724 baf32f8f e15912ac e15912cc 81253800
nt!FsRtlUninitializeLargeMcb+0x18
bae84738 baf2a4af bae84770 e1591208 00000002
Fastfat!FatDeleteFcb_Real+0x7b
bae847cc baf29276 81253800 e15c75c8 e15c74d8 Fastfat!FatCommonClose+0x1b0
bae84830 804eca36 81253708 81656e70 806c91a8 Fastfat!FatFsdClose+0xba
bae84840 80647111 81253be8 8129aa30 811e0700 nt!IopfCallDriver+0x31
bae84864 baf4942d 804eca36 81253be8 81656e70 nt!IovCallDriver+0x9e
bae84868 804eca36 81253be8 81656e70 806c91a8 sr!SrPassThrough+0x2f
bae84878 80647111 81656e80 81656e70 811e07a0 nt!IopfCallDriver+0x31
bae8489c 805870ad 811e0788 811e0778 00000000 nt!IovCallDriver+0x9e
bae848d4 8057e49d 001e07a0 811e0788 00000000 nt!IopDeleteFile+0x159
bae848f0 804ecc07 811e07a0 00000000 806c9158
nt!ObpRemoveObjectRoutine+0xdd
bae84914 804e6e38 00000000 811e0930 00000000 nt!ObfDereferenceObject+0x5d
bae84938 804ec64e e15c7448 811e0960 81057f90 nt!MiSegmentDelete+0xdb
bae8495c 804f6515 811e0930 00000000 81253b00 nt!MiCheckControlArea+0x1bc
bae84998 804f8aef e15f2298 01000000 00000000 nt!MmPurgeSection+0x4fd
bae849c8 baf3b04f 811e1600 00000000 00000000 nt!CcPurgeCacheSection+0xd2
bae84a14 baf3a5e6 81253b80 e15c75c8 00000001
Fastfat!FatForceCacheMiss+0xbd
bae84a30 baf36a54 81253b80 81252008 00000001
Fastfat!FatPurgeReferencedFileObjects+0x35
bae84bb4 baf256b0 81253b80 81a82e70 81253708 Fastfat!FatCommonWrite+0x617
bae84bf8 804eca36 81253708 81a82e70 806c91a8 Fastfat!FatFsdWrite+0xaa
bae84c08 80647111 81a82e70 8129aa30 81253ca0 nt!IopfCallDriver+0x31
bae84c2c baf493b8 81253be8 81a82e00 bae84c70 nt!IovCallDriver+0x9e
bae84c3c 804eca36 81253be8 e15a6470 806c91a8 sr!SrWrite+0xa8
bae84c4c 80647111 811f0d40 806c9190 81a82e70 nt!IopfCallDriver+0x31
bae84c70 8058b076 81a82fdc 00000000 81a82e70 nt!IovCallDriver+0x9e
bae84c84 8058dfc2 81253be8 81a82e70 811fd038
nt!IopSynchronousServiceTail+0x5e
bae84d38 804da140 00000010 00000000 00000000 nt!NtWriteFile+0x5de
bae84d38 7ffe0304 00000010 00000000 00000000 nt!KiSystemService+0xc4
0005f4d8 77f76747 0100eb38 00000010 00000000
SharedUserData!SystemCallStub+0x4
WARNING: Stack unwind information not available. Following frames may be
wrong.
0005f4e0 00000010 00000000 00000000 00000000 ntdll+0x26747

FOLLOWUP_IP:
sr!SrPassThrough+2f
baf4942d c20800 ret 0x8

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: sr!SrPassThrough+2f

MODULE_NAME: sr

IMAGE_NAME: sr.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6dd8b4

STACK_COMMAND: kb

BUCKET_ID: 0xc2_7_sr!SrPassThrough+2f

Followup: MachineOwner

Any Help is appreciated Regards
Subodh

Subodh,

Have you tried running the system with driver verifier turned on for the
whole system?

It may be that you can’t find the real problem by doing this, but it
certainly will catch any driver that is “messing with buffers” in any bad
way.

Driver verifier is very good at catching:

  • Someone accessing memory that they’ve freed.
  • Someone accessing outside the allocated buffer
  • Double frees

This is with the pool tracking and special settings, and I suggest you don’t
turn on any of the other features in Verifier at this time, since you’re
trying to catch a particular bug…

Naturally, make sure you enable this for ALL drivers, not just your own.

Best of luck.


Mats

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Monday, November 24, 2003 1:01 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi Bryan,
No There is no ref. to psched at all in the stack i poked
around it for
all the day but got nothing.But i added DbgPrint’s for the allocated
buffers and now i can see that the pool i am allocating is
somehow being
mishandled by sr.sys or ntfs.sys. see the windbg output which it
produces.But i dont know exactly how to interprete and connect my
allocations with the allocations with other drivers like sr.sys.please
take a close look to the addresses printed…my allocated
buffer is at
pBuffer- 81210dd8, and !poolval shows 81218eb8 –> 81218ef0
(size = 0x38
bytes)]: Corrupt region. what exactly has happened here ?

NetFilter.SYS: entering DriverEntry
[NETFILTER.SYS] InitProcessIDQueue - Initializing QHead and
QSpinLock
[NETFILTER.SYS] InitProcessIDQueue - Initializing QHead and
QSpinLock
[NETFILTER.SYS] InitPromptIDQueue - Initializing QHead and QSpinLock
IRP_MJ_CLOSE
Irp Sent to Target Device
returning from DrvFilterDispatch
IRP_MJ_CLOSE
Irp Sent to Target Device
returning from DrvFilterDispatch
IRP_MJ_CREATE
Control Channel Being Created by 4 Protocol Used 6Create Irp Sent to
Target
Inside TdiCreateCompletionRoutine
Element Succesfully Added
Inside TdiCreateCompletionRoutine - Entry Added
Inside TdiCreateCompletionRoutine - Queuing Work Item
Inside NetFilterUpdateIPPortWorkRoutine - Buffers 81210dd8
Inside DrvQueryAddressInfo - got Buffer 81210dd8
IoCallDriver(pDeviceObject = 811d2a80) returned c0000002
Inside NetFilterUpdateIPPortWorkRoutine - accessing Buffers
Local IP Address 0.0.0.0 on Port 0
NetFilterUpdateIPPortWorkRoutine Freeing Allocated Memory
NetFilterUpdateIPPortWorkRoutine Freeing pBuffer81210dd8
NetFilterUpdateIPPortWorkRoutine return
Inside TdiCreateCompletionRoutine - Return
Irp Sent to Target Device
Filter Create Return
IRP_MJ_DEVICE_CONTROL
Unable to Map IRP_MJ_INTERNAL_DEVICE on file object c0000002
Irp Sent to Target Device
returning from DrvFilterDispatch
UNKNOWN
Irp Sent to Target Device
returning from DrvFilterDispatch
UNKNOWN
Irp Sent to Target Device
returning from DrvFilterDispatch

*** Fatal System Error: 0x000000c2
(0x00000007,0x00000C3E,0x00000004,0x81218ED0)

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.

Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols

Loading unloaded module list

Loading User Symbols

**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

Use !analyze -v to get detailed debugging information.

BugCheck C2, {7, c3e, 4, 81218ed0}

Bad allocation size @81218ec8, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 81218000 for more details.
***

Pool page [81218000] is INVALID.

Analyzing linked list…
[81218eb8 –> 81218ef0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

*** ERROR: Module load completed but symbols could not be loaded for
ntdll.dll
Probably caused by : sr.sys ( sr!SrPassThrough+2f )

Followup: MachineOwner

nt!RtlpBreakWithStatusInstruction:
805103fa cc int 3
kd> !analyze -v
**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically
this is at a
bad IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 00000007, Attempt to free pool which was already freed
Arg2: 00000c3e, (reserved)
Arg3: 00000004, Memory contents of the pool block
Arg4: 81218ed0, Pointer to pool header

Debugging Details:

Bad allocation size @81218ec8, zero is invalid

***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval 81218000 for more details.
***

Pool page [81218000] is INVALID.

Analyzing linked list…
[81218eb8 –> 81218ef0 (size = 0x38 bytes)]: Corrupt region

Scanning for single bit errors…

None found

BUGCHECK_STR: 0xc2_7

DEFAULT_BUCKET_ID: DRIVER_FAULT

LAST_CONTROL_TRANSFER: from 805258ca to 805103fa

STACK_TEXT:
bae8427c 805258ca 00000003 bae845ac 00000007
nt!RtlpBreakWithStatusInstruction
bae842c8 80526160 00000003 81218ec8 81218ed0
nt!KiBugCheckDebugBreak+0x19
bae84694 805266db 000000c2 00000007 00000c3e nt!KeBugCheck2+0x46d
bae846b4 8053d4a1 000000c2 00000007 00000c3e nt!KeBugCheckEx+0x19
bae846fc 8053d16f 81218ed0 00000000 804e47d1
nt!ExFreePoolWithTag+0x237
bae84708 804e47d1 81218ed0 804e9de2 80543980 nt!ExFreePool+0xb
bae84710 804e9de2 80543980 81218ed0 e1591208
nt!ExFreeToPagedLookasideList+0x1b
bae84724 baf32f8f e15912ac e15912cc 81253800
nt!FsRtlUninitializeLargeMcb+0x18
bae84738 baf2a4af bae84770 e1591208 00000002
Fastfat!FatDeleteFcb_Real+0x7b
bae847cc baf29276 81253800 e15c75c8 e15c74d8
Fastfat!FatCommonClose+0x1b0
bae84830 804eca36 81253708 81656e70 806c91a8 Fastfat!FatFsdClose+0xba
bae84840 80647111 81253be8 8129aa30 811e0700 nt!IopfCallDriver+0x31
bae84864 baf4942d 804eca36 81253be8 81656e70 nt!IovCallDriver+0x9e
bae84868 804eca36 81253be8 81656e70 806c91a8 sr!SrPassThrough+0x2f
bae84878 80647111 81656e80 81656e70 811e07a0 nt!IopfCallDriver+0x31
bae8489c 805870ad 811e0788 811e0778 00000000 nt!IovCallDriver+0x9e
bae848d4 8057e49d 001e07a0 811e0788 00000000 nt!IopDeleteFile+0x159
bae848f0 804ecc07 811e07a0 00000000 806c9158
nt!ObpRemoveObjectRoutine+0xdd
bae84914 804e6e38 00000000 811e0930 00000000
nt!ObfDereferenceObject+0x5d
bae84938 804ec64e e15c7448 811e0960 81057f90 nt!MiSegmentDelete+0xdb
bae8495c 804f6515 811e0930 00000000 81253b00
nt!MiCheckControlArea+0x1bc
bae84998 804f8aef e15f2298 01000000 00000000 nt!MmPurgeSection+0x4fd
bae849c8 baf3b04f 811e1600 00000000 00000000
nt!CcPurgeCacheSection+0xd2
bae84a14 baf3a5e6 81253b80 e15c75c8 00000001
Fastfat!FatForceCacheMiss+0xbd
bae84a30 baf36a54 81253b80 81252008 00000001
Fastfat!FatPurgeReferencedFileObjects+0x35
bae84bb4 baf256b0 81253b80 81a82e70 81253708
Fastfat!FatCommonWrite+0x617
bae84bf8 804eca36 81253708 81a82e70 806c91a8 Fastfat!FatFsdWrite+0xaa
bae84c08 80647111 81a82e70 8129aa30 81253ca0 nt!IopfCallDriver+0x31
bae84c2c baf493b8 81253be8 81a82e00 bae84c70 nt!IovCallDriver+0x9e
bae84c3c 804eca36 81253be8 e15a6470 806c91a8 sr!SrWrite+0xa8
bae84c4c 80647111 811f0d40 806c9190 81a82e70 nt!IopfCallDriver+0x31
bae84c70 8058b076 81a82fdc 00000000 81a82e70 nt!IovCallDriver+0x9e
bae84c84 8058dfc2 81253be8 81a82e70 811fd038
nt!IopSynchronousServiceTail+0x5e
bae84d38 804da140 00000010 00000000 00000000 nt!NtWriteFile+0x5de
bae84d38 7ffe0304 00000010 00000000 00000000 nt!KiSystemService+0xc4
0005f4d8 77f76747 0100eb38 00000010 00000000
SharedUserData!SystemCallStub+0x4
WARNING: Stack unwind information not available. Following
frames may be
wrong.
0005f4e0 00000010 00000000 00000000 00000000 ntdll+0x26747

FOLLOWUP_IP:
sr!SrPassThrough+2f
baf4942d c20800 ret 0x8

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: sr!SrPassThrough+2f

MODULE_NAME: sr

IMAGE_NAME: sr.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6dd8b4

STACK_COMMAND: kb

BUCKET_ID: 0xc2_7_sr!SrPassThrough+2f

Followup: MachineOwner

Any Help is appreciated Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi,
Sorry Forgot to attach the list of drives loaded,as you can observe that
autochk.exe is running the thread making this request belongs to it. and
there are 2 calls to nt!ExFreePoolWithTag+0x504 and nt!ExFreePool+0xb back
to back.This is the place where bugcheck occures .

!drivers shows this -

!drivers
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
System Driver and Image Summary
Base Code Size Data Size Image Name Creation Time
804d4000 19ff80 (1664 k) 52480 (330 k) ntoskrnl.exe Thu Aug 29 14:33:24
2002
806c7000 12880 ( 75 k) c700 ( 50 k) hal.dll Thu Aug 29 13:35:02
2002
fc9bb000 1100 ( 5 k) 780 ( 2 k) KDCOM.DLL Sat Aug 18 02:19:10
2001
fc8cb000 1800 ( 6 k) 1500 ( 6 k) BOOTVID.dll Sat Aug 18 02:19:09
2001
bafb3000 24100 ( 145 k) 7880 ( 31 k) ACPI.sys Thu Aug 29 13:39:03
2002
fc9bd000 800 ( 2 k) 600 ( 2 k) WMILIB.SYS Sat Aug 18 02:37:23
2001
fc4bb000 c700 ( 50 k) 2c00 ( 11 k) pci.sys Thu Aug 29 13:39:10
2002
fc4cb000 7200 ( 29 k) 1700 ( 6 k) isapnp.sys Sat Aug 18 02:28:01
2001
fc9bf000 980 ( 3 k) 600 ( 2 k) intelide.sys Thu Aug 29 13:57:47
2002
fc73b000 4b00 ( 19 k) e00 ( 4 k) PCIIDEX.SYS Thu Aug 29 13:57:47
2002
fc4db000 8300 ( 33 k) c80 ( 4 k) MountMgr.sys Sat Aug 18 02:17:36
2001
baf94000 1b700 ( 110 k) 2e00 ( 12 k) ftdisk.sys Sat Aug 18 02:22:41
2001
fc9c1000 c80 ( 4 k) 780 ( 2 k) dmload.sys Sat Aug 18 02:28:15
2001
baf70000 1cf00 ( 116 k) 6980 ( 27 k) dmio.sys Sat Aug 18 02:28:27
2001
fc743000 3c80 ( 16 k) 980 ( 3 k) PartMgr.sys Sat Aug 18 07:02:23
2001
fc4eb000 9880 ( 39 k) 2480 ( 10 k) VolSnap.sys Sat Aug 18 02:23:19
2001
baf5a000 12780 ( 74 k) 2880 ( 11 k) atapi.sys Thu Aug 29 13:57:48
2002
fc4fb000 7000 ( 28 k) 1080 ( 5 k) disk.sys Thu Aug 29 13:57:56
2002
fc50b000 9d00 ( 40 k) 1480 ( 6 k) CLASSPNP.SYS Thu Aug 29 14:38:42
2002
baf49000 de80 ( 56 k) 2d00 ( 12 k) sr.sys Thu Aug 29 13:47:56
2002
baf25000 20b00 ( 131 k) 2900 ( 11 k) Fastfat.sys Thu Aug 29 14:42:45
2002
baf11000 fe80 ( 64 k) 3580 ( 14 k) KSecDD.sys Sat Aug 18 02:20:01
2001
baee8000 23280 ( 141 k) 5780 ( 22 k) NDIS.sys Thu Aug 29 14:39:23
2002
baece000 15d80 ( 88 k) 3600 ( 14 k) Mup.sys Thu Aug 29 14:42:53
2002
fc74b000 5680 ( 22 k) a00 ( 3 k) agp440.sys Sat Aug 18 02:27:59
2001
fc76b000 4b80 ( 19 k) 2880 ( 11 k) processr.sys Thu Aug 29 13:35:03
2002
fc52b000 9280 ( 37 k) 3180 ( 13 k) i8042prt.sys Thu Aug 29 14:36:37
2002
fc773000 4100 ( 17 k) 1780 ( 6 k) kbdclass.sys Thu Aug 29 13:56:59
2002
fcb2a000 820 ( 3 k) 4a0 ( 2 k) vmmouse.sys Thu Oct 02 03:33:27
2003
fc77b000 3b80 ( 15 k) 1780 ( 6 k) mouclass.sys Thu Aug 29 13:57:00
2002
bae62000 10300 ( 65 k) 2300 ( 9 k) parport.sys Thu Aug 29 13:57:29
2002
fc53b000 c200 ( 49 k) 2e80 ( 12 k) serial.sys Thu Aug 29 14:38:27
2002
fc94f000 2e80 ( 12 k) 880 ( 3 k) serenum.sys Sat Aug 18 02:20:13
2001
fc783000 5780 ( 22 k) c00 ( 3 k) fdc.sys Sat Aug 18 02:21:22
2001
fc54b000 9c80 ( 40 k) 1900 ( 7 k) cdrom.sys Thu Aug 29 13:57:55
2002
fc55b000 ac80 ( 44 k) 2d00 ( 12 k) redbook.sys Thu Aug 29 13:57:45
2002
bae41000 1c100 ( 113 k) 3e00 ( 16 k) ks.sys Thu Aug 29 14:43:40
2002
fc78b000 3f80 ( 16 k) 900 ( 3 k) usbuhci.sys Thu Aug 29 14:02:48
2002
bae1f000 1ec00 ( 123 k) 2200 ( 9 k) USBPORT.SYS Thu Aug 29 14:02:49
2002
fc957000 15e0 ( 6 k) 1a60 ( 7 k) vmx_svga.sys Thu Oct 02 03:33:05
2003
bae0d000 de00 ( 56 k) 3380 ( 13 k) VIDEOPRT.SYS Thu Aug 29 14:02:03
2002
fc56b000 7000 ( 28 k) 1600 ( 6 k) pcntpci5.sys Wed Jun 06 01:24:43
2001
fc57b000 6700 ( 26 k) 3500 ( 14 k) es1371mp.sys Fri Jul 20 03:58:37
2001
badec000 19580 ( 102 k) 7380 ( 29 k) portcls.sys Thu Aug 29 14:30:58
2002
fc58b000 cb00 ( 51 k) 1380 ( 5 k) drmk.sys Thu Aug 29 14:02:30
2002
fcb2b000 400 ( 1 k) 500 ( 2 k) audstub.sys Sat Aug 18 02:29:40
2001
fc59b000 ad00 ( 44 k) d00 ( 4 k) rasl2tp.sys Thu Aug 29 14:36:36
2002
fc95b000 1900 ( 7 k) 980 ( 3 k) ndistapi.sys Sat Aug 18 02:25:29
2001
badd6000 12780 ( 74 k) 2b80 ( 11 k) ndiswan.sys Thu Aug 29 14:28:38
2002
fc5ab000 7800 ( 30 k) 1d00 ( 8 k) raspppoe.sys Sat Aug 18 02:25:33
2001
fc5bb000 9d80 ( 40 k) 1480 ( 6 k) raspptp.sys Thu Aug 29 14:42:46
2002
fc95f000 2b00 ( 11 k) 1100 ( 5 k) TDI.SYS Sat Aug 18 02:27:25
2001
badc5000 e280 ( 57 k) 1c00 ( 7 k) psched.sys Thu Aug 29 14:05:54
2002
fc5cb000 7080 ( 29 k) 1080 ( 5 k) msgpc.sys Sat Aug 18 02:24:19
2001
fc793000 3780 ( 14 k) b00 ( 3 k) ptilink.sys Sat Aug 18 02:19:53
2001
fc79b000 3300 ( 13 k) a80 ( 3 k) raspti.sys Sat Aug 18 02:25:32
2001
bad98000 27a00 ( 159 k) 4b80 ( 19 k) rdpdr.sys Thu Aug 29 13:36:34
2002
fc5db000 7900 ( 31 k) 1780 ( 6 k) termdd.sys Thu Aug 29 14:10:32
2002
fcb30000 680 ( 2 k) 580 ( 2 k) swenum.sys Sat Aug 18 02:18:47
2001
bad76000 e00 ( 4 k) 20600 (130 k) update.sys Sat Aug 18 09:23:56
2001
fc983000 1d00 ( 8 k) 680 ( 2 k) gameenum.sys Thu Aug 29 14:02:42
2002
fc5eb000 7b80 ( 31 k) 1600 ( 6 k) NDProxy.SYS Sat Aug 18 02:25:30
2001
fc7a3000 3c00 ( 15 k) e00 ( 4 k) flpydisk.sys Thu Aug 29 13:57:43
2002
fc60b000 b480 ( 46 k) 1300 ( 5 k) usbhub.sys Thu Aug 29 14:02:49
2002
fc9c7000 580 ( 2 k) a00 ( 3 k) USBD.SYS Sat Aug 18 02:32:58
2001
fc9c9000 1580 ( 6 k) 680 ( 2 k) Fs_Rec.SYS Sat Aug 18 02:19:37
2001
fcb39000 300 ( 1 k) 580 ( 2 k) Null.SYS Sat Aug 18 02:17:39
2001
fc9cb000 780 ( 2 k) 600 ( 2 k) Beep.SYS Sat Aug 18 02:17:33
2001
fc7b3000 3c80 ( 16 k) d00 ( 4 k) vga.sys Thu Aug 29 14:02:03
2002
fc9cd000 500 ( 2 k) 880 ( 3 k) mnmdd.SYS Sat Aug 18 02:27:28
2001
fc9cf000 800 ( 2 k) 580 ( 2 k) RDPCDD.sys Sat Aug 18 02:16:56
2001
fc7bb000 3900 ( 15 k) a80 ( 3 k) Msfs.SYS Sat Aug 18 02:20:02
2001
fc7c3000 6380 ( 25 k) d00 ( 4 k) Npfs.SYS Sat Aug 18 02:20:03
2001
fc9ab000 1780 ( 6 k) 800 ( 2 k) rasacd.sys Sat Aug 18 02:25:39
2001
fc61b000 ca80 ( 51 k) 1500 ( 6 k) ipsec.sys Thu Aug 29 14:37:19
2002
fb269000 43980 ( 271 k) d780 ( 54 k) tcpip.sys Thu Aug 29 14:28:10
2002
bac0e000 23680 ( 142 k) 2b80 ( 11 k) netbt.sys Thu Aug 29 14:31:56
2002
fc7cb000 6000 ( 24 k) 780 ( 2 k) netfilter.SYS Sat Nov 22 05:56:44
2003
fc62b000 6e80 ( 28 k) 1000 ( 4 k) netbios.sys Thu Aug 29 14:05:45
2002
fb241000 23800 ( 142 k) 4280 ( 17 k) rdbss.sys Thu Aug 29 14:28:48
2002
fb1dd000 58a00 ( 355 k) aa00 ( 43 k) mrxsmb.sys Thu Aug 29 14:29:51
2002
fc64b000 6700 ( 26 k) 1e80 ( 8 k) Fips.SYS Sat Aug 18 07:01:49
2001
fc65b000 6b80 ( 27 k) 1380 ( 5 k) wanarp.sys Sat Aug 18 02:25:23
2001

Unloaded modules:
fc63b000 fc645000 Imapi.SYS
fc7ab000 fc7b0000 Cdaudio.SYS
fc9a7000 fc9aa000 Sfloppy.SYS

Loading User Symbols
01000000 55e00 ( 344 k) 34200 (209 k) autochk.exe Thu Aug 29 13:37:09
2002
77f50000 71a00 ( 455 k) 33400 (205 k) ntdll.dll Thu Aug 29 16:10:40
2002

and !thread shows this -
!thread
THREAD 811e0530 Cid 17c.180 Teb: 7ffde000 Win32Thread: 00000000
RUNNING on processor 0
IRP List:
814d0e70: (0006,0190) Flags: 40000404 Mdl: 00000000
81970e70: (0006,0190) Flags: 40000a01 Mdl: 00000000
Not impersonating
GetUlongFromAddress: unable to read from 00000000
Owning Process 811eb250
WaitTime (ticks) 2468
Context Switch Count 115
UserTime 0:00:00.0125
KernelTime 0:00:00.0468
Start Address autochk!NtProcessStartup (0x0100d522)
Stack Init bae85000 Current bae84a80 Base bae85000 Limit bae82000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
bae84210 805258ca 00000003 bae84540 00000005
nt!RtlpBreakWithStatusInstruction (FPO: [1,0,0])
bae8425c 80526160 00000003 00000005 8053d5e9 nt!KiBugCheckDebugBreak+0x19
(FPO: [Non-Fpo])
bae84628 805266db 0000000a 00000005 00000002 nt!KeBugCheck2+0x46d (FPO:
[Non-Fpo])
bae84648 804dce53 0000000a 00000005 00000002 nt!KeBugCheckEx+0x19 (FPO:
[Non-Fpo])
bae84648 8053d5e9 0000000a 00000005 00000002 nt!KiTrap0E+0x2ad (FPO: [0,0]
TrapFrame @ bae84664)
bae84704 8053d16f 00000001 00000000 baf2617f nt!ExFreePoolWithTag+0x504
(FPO: [Non-Fpo])
bae84710 baf2617f 81219d80 baf26172 baf28500 nt!ExFreePool+0xb (FPO:
[1,0,0])
bae84718 baf26172 baf28500 81219d80 baf32ff8
Fastfat!ExFreeToNPagedLookasideList+0x1b (FPO: [2,0,0])
bae84724 baf32ff8 81219d80 e158b38c 81253800 Fastfat!FatFreeResource+0x18
(FPO: [1,0,0])
bae84738 baf2a4af bae84770 e158b2c8 00000002
Fastfat!FatDeleteFcb_Real+0xe4 (FPO: [2,0,3])
bae847cc baf29276 81253800 e15e9048 e15eafb8 Fastfat!FatCommonClose+0x1b0
(FPO: [Non-Fpo])
bae84830 804eca36 81253708 814d0e70 806c91a8 Fastfat!FatFsdClose+0xba
(FPO: [Non-Fpo])
bae84840 80647111 81253be8 8129aa30 811b8b00 nt!IopfCallDriver+0x31 (FPO:
[0,0,1])
bae84864 baf4942d 804eca36 81253be8 814d0e70 nt!IovCallDriver+0x9e (FPO:
[Non-Fpo])
bae84868 804eca36 81253be8 814d0e70 806c91a8 sr!SrPassThrough+0x2f (FPO:
[2,0,0])
bae84878 80647111 814d0e80 814d0e70 811b8b30 nt!IopfCallDriver+0x31 (FPO:
[0,0,1])
bae8489c 805870ad 811b8b18 811b8b08 00000000 nt!IovCallDriver+0x9e (FPO:
[Non-Fpo])
bae848d4 8057e49d 001b8b30 811b8b18 00000000 nt!IopDeleteFile+0x159 (FPO:
[Non-Fpo])
bae848f0 804ecc07 811b8b30 00000000 806c9158
nt!ObpRemoveObjectRoutine+0xdd (FPO: [Non-Fpo])
bae84914 804e6e38 00000000 811b8d28 00000000 nt!ObfDereferenceObject+0x5d
(FPO: [Non-Fpo])
bae84938 804ec64e e15eaf28 811b8d58 81065bc8 nt!MiSegmentDelete+0xdb (FPO:
[Non-Fpo])
bae8495c 804f6515 811b8d28 00000000 00000000 nt!MiCheckControlArea+0x1bc
(FPO: [Non-Fpo])
bae84998 804f8aef e1600ffc 01000000 00000000 nt!MmPurgeSection+0x4fd (FPO:
[Non-Fpo])
bae849c8 baf3b04f 811bbbf0 00000000 00000000 nt!CcPurgeCacheSection+0xd2
(FPO: [Non-Fpo])
bae84a14 baf3a5e6 81267198 e15e9048 00000001
Fastfat!FatForceCacheMiss+0xbd (FPO: [Non-Fpo])
bae84a30 baf36a54 81267198 81252008 00000001
Fastfat!FatPurgeReferencedFileObjects+0x35 (FPO: [3,0,3])
bae84bb4 baf256b0 81267198 81970e70 81253708 Fastfat!FatCommonWrite+0x617
bae84bf8 804eca36 81253708 81970e70 806c91a8 Fastfat!FatFsdWrite+0xaa
(FPO: [Non-Fpo])
bae84c08 80647111 81970e70 8129aa30 81253ca0 nt!IopfCallDriver+0x31 (FPO:
[0,0,1])
bae84c2c baf493b8 81253be8 81970e00 bae84c70 nt!IovCallDriver+0x9e (FPO:
[Non-Fpo])
bae84c3c 804eca36 81253be8 e160eb30 806c91a8 sr!SrWrite+0xa8 (FPO:
[Non-Fpo])
bae84c4c 80647111 811e0740 806c9190 81970e70 nt!IopfCallDriver+0x31 (FPO:
[0,0,1])
bae84c70 8058b076 81970fdc 00000000 81970e70 nt!IovCallDriver+0x9e (FPO:
[Non-Fpo])
bae84c84 8058dfc2 81253be8 81970e70 81170038
nt!IopSynchronousServiceTail+0x5e (FPO: [Non-Fpo])
bae84d38 804da140 00000010 00000000 00000000 nt!NtWriteFile+0x5de
bae84d38 7ffe0304 00000010 00000000 00000000 nt!KiSystemService+0xc4 (FPO:
[0,0] TrapFrame @ bae84d64)
0005f4d8 77f76747 0100eb38 00000010 00000000
SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])
WARNING: Stack unwind information not available. Following frames may be
wrong.
0005f4e0 00000010 00000000 00000000 00000000 ntdll+0x26747

and !process shows this -

PROCESS 811eb250 SessionId: 0 Cid: 017c Peb: 7ffdf000 ParentCid:
0164
DirBase: 06065000 ObjectTable: e15a4b90 TableSize: 4.
Image: AUTOCHK.EXE
VadRoot 8116ac28 Vads 11 Clone 0 Private 1114. Modified 0. Locked 0.
DeviceMap e10049e8
Token e15a5950
ElapsedTime 0:00:12.0687
UserTime 0:00:00.0140
KernelTime 0:00:00.0484
QuotaPoolUsage[PagedPool] 5536
QuotaPoolUsage[NonPagedPool] 4536
Working Set Sizes (now,min,max) (1200, 50, 345) (4800KB, 200KB,
1380KB)
PeakWorkingSetSize 1200
VirtualSize 6 Mb
PeakVirtualSize 6 Mb
PageFaultCount 1230
MemoryPriority BACKGROUND
BasePriority 8
CommitCharge 1125

THREAD 811e0530 Cid 17c.180 Teb: 7ffde000 Win32Thread: 00000000
RUNNING on processor 0

Have you tried to run the driver build for the Windows 2000 DDK on WIndows
XP?

Thomas F. Divine

wrote in message news:xxxxx@ntdev…
>
> Hi All,
> I have developed a TDI Filter driver which works fine on Windows NT and
2000
> But after Buiding the driver using XP DDK and Running it On XP machine XP
> crashes suddenly with BAD_POOL_CALLER bugcheck.This happens when driver is
> installed and i try to boot XP.In Debugger, analyse shows that File system
> drivers NTFS.SYS and Sr.sys are making calls to ExAllocatePool But where
> does my driver comes in to the picture ? why it happens after installing
my
> driver ?
>
> Could any one tell me what is going on here…
>
> kd> !analyze -v
>
*************************************************************************
>

> *
> *
> * Bugcheck Analysis
> *
> *
> *
>
*************************************************************************
>

>
> BAD_POOL_CALLER (c2)
> The current thread is making a bad pool request. Typically this is at a
bad
> IRQL level or double freeing the same allocation, etc.
> Arguments:
> Arg1: 00000007, Attempt to free pool which was already freed
> Arg2: 00000c3e, (reserved)
> Arg3: 000003d0, Memory contents of the pool block
> Arg4: 80e11780, Pointer to pool header
>
> Debugging Details:
> ------------------
>
> Bad allocation size @80e11408, zero is invalid
>
>
>
An error (or corruption) in the pool was detected;
> Attempting to diagnose the problem.
>

> Use !poolval 80e11000 for more details.
>

>
> Pool page [80e11000] is INVALID.
>
> Analyzing linked list…
> [80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
> [80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region
>
>
> Scanning for single bit errors…
>
> None found
>
>
> BUGCHECK_STR: 0xc2_7
>
> DEFAULT_BUCKET_ID: DRIVER_FAULT
>
> LAST_CONTROL_TRANSFER: from 805226a5 to 8050d064
>
> STACK_TEXT:
> fc8e27b4 805226a5 00000003 00000000 000000c2
> nt!RtlpBreakWithStatusInstruction
> fc8e2800 80522dea 00000003 80e11778 80e11780 nt!KiBugCheckDebugBreak+0x19
> fc8e2bc8 804fc1bb 000000c2 00000007 00000c3e nt!KeBugCheck2+0x43c
> fc8e2be8 8053757e 000000c2 00000007 00000c3e nt!KeBugCheckEx+0x19
> fc8e2c30 80537149 80e11780 00000000 804f742e nt!ExFreePoolWithTag+0x237
> fc8e2c3c 804f742e 80e11780 804f8497 8053d900 nt!ExFreePool+0xb
> fc8e2c44 804f8497 8053d900 80e11780 e1590228
> nt!ExFreeToNPagedLookasideList+0x1b
> fc8e2c58 baf31813 e15902cc e1590228 80e5f778
> nt!FsRtlUninitializeLargeMcb+0x18
> fc8e2c6c baf27a96 fc8e2ca4 e1590228 e15901fc
Fastfat!FatDeleteFcb_Real+0x7b
> fc8e2d00 baf31b00 80e5f778 e1590228 e15901f0 Fastfat!FatCommonClose+0x1a1
> fc8e2d5c baf31b47 00000000 80571367 80e94528 Fastfat!FatFspClose+0x105
> fc8e2d64 80571367 80e94528 00000000 80548a80 Fastfat!FatCloseWorker+0xf
> fc8e2d74 804ebd08 80e94840 00000000 80e8eaa8 nt!IopProcessWorkItem+0xf
> fc8e2dac 80559026 80e94840 00000000 00000000 nt!ExpWorkerThread+0xfe
> fc8e2ddc 8050f513 804ebc35 00000000 00000000
nt!PspSystemThreadStartup+0x34
> 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
>
>
> FOLLOWUP_IP:
> nt!RtlpBreakWithStatusInstruction+0
> 8050d064 cc int 3
>
> FOLLOWUP_NAME: MachineOwner
>
> SYMBOL_NAME: nt!RtlpBreakWithStatusInstruction+0
>
> MODULE_NAME: nt
>
> IMAGE_NAME: ntoskrnl.exe
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 3b7de38f
>
> STACK_COMMAND: kb
>
> BUCKET_ID: 0xc2_7_nt!RtlpBreakWithStatusInstruction+0
>
> Followup: MachineOwner
> ---------
>
> kd> !poolval 80e11000
> Pool page 80e11000 region is Nonpaged pool
>
> Validating Pool headers for pool page: 80e11000
>
> Pool page [80e11000] is INVALID.
>
> Analyzing linked list…
> [80e113f8 –> 80e11430 (size = 0x38 bytes)]: Corrupt region
> [80e11768 –> 80e117a0 (size = 0x38 bytes)]: Corrupt region
>
>
> Scanning for single bit errors…
>
> None found
>
> Regards
> Subodh
>
>

Yes Thomas, I tried the 2000 DDK Build first on XP but the same problem
appeared then i moved the code to XP DDK and compiled with it.But still
the same problem persists.
Regards
Subodh

Hi,
I tried that too but it also shows the same thing sr.sys is calling
ExFreePool and ExFreePoolWithTag back to back.(:
I dont understand what is wrong here…
Regards
Subodh

Not sure what this mail was in reply to, but I’ll make some suggestions
anyway…

It’s perfectly legal to call ExFreePool and ExFreePoolWithTag, as long as
they are called with different values. However, if it’s calling both of the
above with the same address for the allocated memory, then there’s a bug in
there. This could be something like:

#if !DEBUG
ExFreePool(p);
#endif
ExFreePoolWithTag(p, MyTag);

where the #endif should have been #else, and an endif after the WithTag bit.

This would certainly be a bug, and obviously not correct behaviour. Further,
the OS would get utterly confused if you don’t have checked build and/or
Verifier to catch this problem, and later allocations may well be corrupted,
etc.

So, put a breakpoint at the code that does ExFreePool and ExFreePoolWithTag,
then step through to see what the pointers are that are passed to the
relevant ExFree… call (or just disassemble, it may be obvious that both
are passed the same or different pointers, depending on the way the code
looks). If both calls are passed the same pointer, you should be able to
“nop” out one of the calls, just fill in suitable number of “90” bytes to
fill out the erroneous code. [Assuming you’re using x86/AMD64, if it’s some
other type of processor, you’ll have to figure out some suitable NO
OPERATION instruction code to replace the code with].

Or perhaps, disable “system restore” from your system and/or just remove the
sr.sys file from the system for the time being (rename it to sr.not-sys or
some such). This may show some error when booting, but as far as I
understand it would not cause the system any major grief. [All of this is
assuming that your SR.SYS is the same one that I’ve got and that it’s
actually part of your “System Restore” functionality, rather than some “SR”
Network driver that you absolutely must have in your system]

Hope this helps.


Mats

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Tuesday, November 25, 2003 11:36 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi,
I tried that too but it also shows the same thing sr.sys is calling
ExFreePool and ExFreePoolWithTag back to back.(:
I dont understand what is wrong here…
Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi mats,
thanks for your valuable suggestions,I just have one Sr.sys on the system
and that is the system restore driver. As a short cut i first tried to
disable the System Restore Feature of XP, and commented the ExFreePool
calls in my driver just for testing it.By doing this i am able to get rid
of the Bug Check when AutoChk.exe is running.But this brings in a new bug
again from file system which is DRIVER_IRQL_NOT_LESS_OR_EQUAL when system
is showing welcome screen, please take a look at the stack. it shows that
a call to nt!CcGetVirtualAddress generated the bug check.I am working on
NOP method and buffer checking but for the time being this results i have
in hand for posting.

kd> !analyze -v
*******************************************************************************

*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pagable (or completely invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 804f03fb, address which referenced memory

Debugging Details:

READ_ADDRESS: 00000000

CURRENT_IRQL: 2

FAULTING_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xA

LAST_CONTROL_TRANSFER: from 805808d9 to 804f03fb

TRAP_FRAME: fc171960 – (.trap fffffffffc171960)
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
Resetting default context

STACK_TEXT:
fc1719f4 805808d9 000c37a8 00000000 00000000 nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608 Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000 nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484 kernel32!FindFirstFileW+0x13

FOLLOWUP_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!CcGetVirtualAddress+7b

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6de35c

STACK_COMMAND: .trap fffffffffc171960 ; kb

BUCKET_ID: 0xA_nt!CcGetVirtualAddress+7b

Followup: MachineOwner

kd> .trap fffffffffc171960
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
kd> kb
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
fc1719f4 805808d9 000c37a8 00000000 00000000 nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608 Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000 nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484 kernel32!FindFirstFileW+0x13

Regards
Subodh

So are you going to turn on driver verifier for your driver, for sr.sys and
for anyone else you think might be involved? Or are you going to continue to
hack around looking for permutations of the problem? Verifier is pretty good
at find pool corruption errors.

By the way, it is your driver that is causing the problem, right?

=====================
Mark Roddy

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Tuesday, November 25, 2003 8:48 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi mats,
thanks for your valuable suggestions,I just have one Sr.sys
on the system and that is the system restore driver. As a
short cut i first tried to disable the System Restore Feature
of XP, and commented the ExFreePool calls in my driver just
for testing it.By doing this i am able to get rid of the Bug
Check when AutoChk.exe is running.But this brings in a new
bug again from file system which is
DRIVER_IRQL_NOT_LESS_OR_EQUAL when system is showing welcome
screen, please take a look at the stack. it shows that a
call to nt!CcGetVirtualAddress generated the bug check.I am
working on NOP method and buffer checking but for the time
being this results i have in hand for posting.

kd> !analyze -v
**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pagable (or completely
invalid) address at an interrupt request level (IRQL) that is
too high. This is usually caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 804f03fb, address which referenced memory

Debugging Details:

READ_ADDRESS: 00000000

CURRENT_IRQL: 2

FAULTING_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xA

LAST_CONTROL_TRANSFER: from 805808d9 to 804f03fb

TRAP_FRAME: fc171960 – (.trap fffffffffc171960) ErrCode =
00000000 eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000
esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
Resetting default context

STACK_TEXT:
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b fc171a5c fc3f6ba3 811c8028
fc171a88 00001000 nt!CcMapData+0x8b fc171a90 fc3f66a9
811f4008 e15b4840 00000000 Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4
nt!IopfCallDriver+0x31 fc171d0c 8059523f 81250be8 8117a008
810e5c40 nt!IopSynchronousServiceTail+0x5e fc171d30 804da140
00000488 00000000 00000000 nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000
nt!KiSystemService+0xc4 00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

FOLLOWUP_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!CcGetVirtualAddress+7b

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6de35c

STACK_COMMAND: .trap fffffffffc171960 ; kb

BUCKET_ID: 0xA_nt!CcGetVirtualAddress+7b

Followup: MachineOwner

kd> .trap fffffffffc171960
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
kd> kb
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b fc171a5c fc3f6ba3 811c8028
fc171a88 00001000 nt!CcMapData+0x8b fc171a90 fc3f66a9
811f4008 e15b4840 00000000 Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4
nt!IopfCallDriver+0x31 fc171d0c 8059523f 81250be8 8117a008
810e5c40 nt!IopSynchronousServiceTail+0x5e fc171d30 804da140
00000488 00000000 00000000 nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000
nt!KiSystemService+0xc4 00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as:
xxxxx@stratus.com To unsubscribe send a blank email to
xxxxx@lists.osr.com

Hi Subodh,

It still looks very much like some driver in your system is corrupting the
pool. Of course, the most likely candidate is your own driver, but it could
be all sorts of other things too.

The access in CcGetVirtualAddress is a NULL access, which seems to me like
something either probably passed in a NULL pointer, or something was
supposed to be a pointer that had been overwritten with zero’s.

I’m not an expert on file systems, and my guess is that it’s actually not
got anything to do with file systems as such, just the fact that whatever
driver in your system is corrupting the pool, and the file system is using
the same pool, which means that something in the file system will crash at
some random point. When, how and where, depends on what is being clobbered,
and how much it’s being run. Since the file system is very active during the
boot phase, this is the most likely to go wrong at that time.

Mark just sent an e-mail reminding you to use driver verifier. I’d add a
strong “Seconded” on that. It will catch whatever driver is at fault.

Just boot the system without your driver (safe-mode for example), and run
“verifier”. Use custom settings to set the “Special Pool” and “Pool
checking”, and whatever other options you think might be useful. It’s
probably a good idea to leave the fault injection one alone at the moment,
as that is for when you THINK your driver will be able to handle
“everything”, and not for troubleshooting as such.

Driver verifier will catch anything writing outside it’s own memory block as
long as it’s a small block (i.e. writing outside anything larger than 4KB
may not get caught). If you’re frequently dealing with “large” allocations,
add some code to protect those memory blocks by adding a guardband at the
beginning and end and/or check very carefully with “assert()” in the code
that the indexes/pointers are in range. Ideally, you’d add the “guard band”
in the your own memory allocation wrapper, somehting like:

void * MyExAllocatePool(size_t size, char *fname, int lineno)
{
// May need to round to even longwords or some such.
size_t newsize = size + guardbandSize * 2 + sizeof size_t;
void *p;

p = ExAllocatePool(newSize);
if (p == NULL)
{
ASSERTMSG(FALSE, “Memory allocation failed at %s:%d\n”,
fname, lineno);
return NULL;
}
(size_t *)p = size;
p = (void *)((char *)p + sizeof size_t);
memset(p, 0xBA, guardBandSize);
p = (void *)((char *)p + guardBandSize);
memset((char *)p + size, 0xAB, guardBandSize);
return p;
}

void MyExFreePool(void *p, char *fname, int lineno)
{
char *pp;
size_t size;
size_t i;

pp = (char *)p;
pp -= (guardBandSize + sizeof size_t);
size = *(size_t *)pp;
pp += sizeof size_t;
for(i = 0; i < guardBandSize; i++)
{
if (pp[i] != 0xba)
{
ASSERTMSG(FALSE, “Memory corruption when freeing
block %p(%s:%d), byte %d overwritten with %d”,
p, fname, lineno, i, pp[i]);
}
if (pp[i + size + guardbandsize + sizeof size_t] != 0xab)
{
ASSERTMSG(FALSE, “Memory corruption when freeing
block %p(%s:%d), byte %d overwritten with %d”,
p, fname, lineno, i, pp[i + size + guardbandsize + sizeof size_t]);
}
}
ExFreePool(pp);
}

#define ExAllocatePool(x) MyExAllocatePool(x, FILE, LINE)
#deifne ExFreePool(x) MyExFreePool(x, FILE, LINE)

Of course, if you use a different memory allocation routine, you need to
replace the names above, and I haven’t event thought about compiling the
above code.

Hope this helps.

Memory corruption can be VERY hard to catch, and trying to comment out bits
of code to catch it, or adding debug printouts is probably a relatively
difficult method. Using driver verifier and “protective” methods is the only
workable way. Trying to find it with “simple” debug methods is very
difficult.


Mats

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Tuesday, November 25, 2003 1:48 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi mats,
thanks for your valuable suggestions,I just have one Sr.sys
on the system
and that is the system restore driver. As a short cut i first tried to
disable the System Restore Feature of XP, and commented the ExFreePool
calls in my driver just for testing it.By doing this i am
able to get rid
of the Bug Check when AutoChk.exe is running.But this brings
in a new bug
again from file system which is DRIVER_IRQL_NOT_LESS_OR_EQUAL
when system
is showing welcome screen, please take a look at the stack.
it shows that
a call to nt!CcGetVirtualAddress generated the bug check.I am
working on
NOP method and buffer checking but for the time being this
results i have
in hand for posting.

kd> !analyze -v
**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pagable (or completely
invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 804f03fb, address which referenced memory

Debugging Details:

READ_ADDRESS: 00000000

CURRENT_IRQL: 2

FAULTING_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xA

LAST_CONTROL_TRANSFER: from 805808d9 to 804f03fb

TRAP_FRAME: fc171960 – (.trap fffffffffc171960)
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
Resetting default context

STACK_TEXT:
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

FOLLOWUP_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!CcGetVirtualAddress+7b

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6de35c

STACK_COMMAND: .trap fffffffffc171960 ; kb

BUCKET_ID: 0xA_nt!CcGetVirtualAddress+7b

Followup: MachineOwner

kd> .trap fffffffffc171960
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
kd> kb
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Does system BSOD if your driver is not loaded?

Memory corruption is hard to deal with in general. Driver(s) randomly
corrupted system memory directly or indirectly. When other drivers was
trying to touch those memory, there’s a good chance that he will be the
victim. The worst thing is that the bugcheck may occur too late after the
“crime” had been committed and the guilty is not in the bugcheck stack back
trace.

Started from W2K, Driver Verifier does a good job at catching memory
corruptions, it can discover memory corruptions earlier in many cases. As
Mark suggested, you may want to enable DV for all suspects. If it still
doesn’t catch anything (I hate when that happened, but still…) you will
have to do it more or less by hand.

First, does it always BSOD at the same instruction? If so, life may be much
easier.

In your case,

nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

You reverse engineer the function CcGetVirtualAddress, try to figure out
where ecx and eax came from? You may have to trace the callers as well
because in many cases, those information are from callers. After you found
out the memory location, you try to set a conditional break point on the
memory to find out who is writing to that address with what value? Does the
value seem bogus? This may give you some clues.

Here’s an example how I find out an indirect memory corruption in my first
File System Filter Driver. I hope this will give you some ideas.

Symptom:
Sometime after my FS filter attached to the volume, system crashed and
complained IoCallDriver called by sr!SrCreate (dereferencing a NULL
pointer).

Debug:

First, I can’t assume sr.sys is bad. I enabled DV on my filter as well as
sr.sys, then system crashed and DV complained IoCallDriver is called by
sr.sys with an invalid device object. Obviously, this doesn’t tell me
anything significant.

I reverse eng. the related code in Sr.sys in the way I mentioned, trying to
find out where the bad device object pointer came from. I discovered that
the DeviceExtension field of the sr’s device object and other significant
fields were zeroed out. I set a conditional BP on the DeviceExtension field
and found out that it was IopAllocateIrpPrivate (IoAllocateIrp) called at an
irrelevant code path that zeroed the DeviceExtension along with other fields
belong to the DeviceObject of the sr’s volume. Of course, it can’t be the
fault of IoAllocateIrp. As I reverse eng. the
IopAllcocateIrp/ExAllocatePoolWithTag further, I found the OS somehow
believed that the memory occupied by sr’s volume device object was not used
by anyone, thus, it allocated memory from the devobj and initialized them:).
I began to suspect that I might have dereferenced sr’s volume devobj more
than I have referenced it. yeah, WindBag showed the object reference count
was bad.

Then I looked at my code where I ref/deref lowers’ devobj, I found a bug in
my filter code where I walked through the volume device stack to check if my
filter devobj has been attached. I accidentally dereferenced the lower’s
device object more than required in a loop.

After I fixed this, problem solved.

Fixing memory corruption is tough but one of funniest thing I love to do
(well, assuming it’s fixed finally). It you want, you could send me your
driver and I can debug it for you at free of charge…

cheers,
Calvin

Calvin Guan, Software Developer xxxxx@nospam.ati.com
SW2D-Radeon NT Core Drivers
ATI Technologies Inc.
1 Commerce Valley Drive East
Markham, Ontario, Canada L3T 7X6
Tel: (905) 882-2600 Ext. 8654
Find a driver: http://www.ati.com/support/driver.html

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Tuesday, November 25, 2003 8:48 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi mats,
thanks for your valuable suggestions,I just have one Sr.sys
on the system
and that is the system restore driver. As a short cut i first tried to
disable the System Restore Feature of XP, and commented the ExFreePool
calls in my driver just for testing it.By doing this i am
able to get rid
of the Bug Check when AutoChk.exe is running.But this brings
in a new bug
again from file system which is DRIVER_IRQL_NOT_LESS_OR_EQUAL
when system
is showing welcome screen, please take a look at the stack.
it shows that
a call to nt!CcGetVirtualAddress generated the bug check.I am
working on
NOP method and buffer checking but for the time being this
results i have
in hand for posting.

kd> !analyze -v
**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pagable (or completely
invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 804f03fb, address which referenced memory

Debugging Details:

READ_ADDRESS: 00000000

CURRENT_IRQL: 2

FAULTING_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xA

LAST_CONTROL_TRANSFER: from 805808d9 to 804f03fb

TRAP_FRAME: fc171960 – (.trap fffffffffc171960)
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
Resetting default context

STACK_TEXT:
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

FOLLOWUP_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!CcGetVirtualAddress+7b

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6de35c

STACK_COMMAND: .trap fffffffffc171960 ; kb

BUCKET_ID: 0xA_nt!CcGetVirtualAddress+7b

Followup: MachineOwner

kd> .trap fffffffffc171960
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
kd> kb
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Subodh,

Early on, I asked if psched was part of the stack and if this still
happened if it was removed. Without going into all the details, there
was a slow corruption issue and ultimately, an IRP passed from a
user-space application to a protocol would have its AuxiliaryBuffer hit
with a value. When that happens, the IO Manager will try to free that
buffer when the IRP completes. Since that isn’t a valid address, the
net result is a bad pool caller trying to do a free.

Bryan S. Burgin
xxxxx@microsoft.com

This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Mats Petersson
Sent: Tuesday, November 25, 2003 6:28 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi Subodh,

It still looks very much like some driver in your system is corrupting
the
pool. Of course, the most likely candidate is your own driver, but it
could
be all sorts of other things too.

The access in CcGetVirtualAddress is a NULL access, which seems to me
like
something either probably passed in a NULL pointer, or something was
supposed to be a pointer that had been overwritten with zero’s.

I’m not an expert on file systems, and my guess is that it’s actually
not
got anything to do with file systems as such, just the fact that
whatever
driver in your system is corrupting the pool, and the file system is
using
the same pool, which means that something in the file system will crash
at
some random point. When, how and where, depends on what is being
clobbered,
and how much it’s being run. Since the file system is very active during
the
boot phase, this is the most likely to go wrong at that time.

Mark just sent an e-mail reminding you to use driver verifier. I’d add a
strong “Seconded” on that. It will catch whatever driver is at fault.

Just boot the system without your driver (safe-mode for example), and
run
“verifier”. Use custom settings to set the “Special Pool” and “Pool
checking”, and whatever other options you think might be useful. It’s
probably a good idea to leave the fault injection one alone at the
moment,
as that is for when you THINK your driver will be able to handle
“everything”, and not for troubleshooting as such.

Driver verifier will catch anything writing outside it’s own memory
block as
long as it’s a small block (i.e. writing outside anything larger than
4KB
may not get caught). If you’re frequently dealing with “large”
allocations,
add some code to protect those memory blocks by adding a guardband at
the
beginning and end and/or check very carefully with “assert()” in the
code
that the indexes/pointers are in range. Ideally, you’d add the “guard
band”
in the your own memory allocation wrapper, somehting like:

void * MyExAllocatePool(size_t size, char *fname, int lineno)
{
// May need to round to even longwords or some such.
size_t newsize = size + guardbandSize * 2 + sizeof size_t;
void *p;

p = ExAllocatePool(newSize);
if (p == NULL)
{
ASSERTMSG(FALSE, “Memory allocation failed at %s:%d\n”,
fname, lineno);
return NULL;
}
(size_t *)p = size;
p = (void *)((char *)p + sizeof size_t);
memset(p, 0xBA, guardBandSize);
p = (void *)((char *)p + guardBandSize);
memset((char *)p + size, 0xAB, guardBandSize);
return p;
}

void MyExFreePool(void *p, char *fname, int lineno)
{
char *pp;
size_t size;
size_t i;

pp = (char *)p;
pp -= (guardBandSize + sizeof size_t);
size = *(size_t *)pp;
pp += sizeof size_t;
for(i = 0; i < guardBandSize; i++)
{
if (pp[i] != 0xba)
{
ASSERTMSG(FALSE, “Memory corruption when freeing
block %p(%s:%d), byte %d overwritten with %d”,
p, fname, lineno, i, pp[i]);
}
if (pp[i + size + guardbandsize + sizeof size_t] !=
0xab)
{
ASSERTMSG(FALSE, “Memory corruption when freeing
block %p(%s:%d), byte %d overwritten with %d”,
p, fname, lineno, i, pp[i + size + guardbandsize + sizeof size_t]);
}
}
ExFreePool(pp);
}

#define ExAllocatePool(x) MyExAllocatePool(x, FILE, LINE)
#deifne ExFreePool(x) MyExFreePool(x, FILE, LINE)

Of course, if you use a different memory allocation routine, you need to
replace the names above, and I haven’t event thought about compiling the
above code.

Hope this helps.

Memory corruption can be VERY hard to catch, and trying to comment out
bits
of code to catch it, or adding debug printouts is probably a relatively
difficult method. Using driver verifier and “protective” methods is the
only
workable way. Trying to find it with “simple” debug methods is very
difficult.


Mats

-----Original Message-----
From: Subodh Gupta [mailto:xxxxx@softhome.net]
Sent: Tuesday, November 25, 2003 1:48 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: BAD_POOL_CALLER on Windows XP

Hi mats,
thanks for your valuable suggestions,I just have one Sr.sys
on the system
and that is the system restore driver. As a short cut i first tried to
disable the System Restore Feature of XP, and commented the ExFreePool
calls in my driver just for testing it.By doing this i am
able to get rid
of the Bug Check when AutoChk.exe is running.But this brings
in a new bug
again from file system which is DRIVER_IRQL_NOT_LESS_OR_EQUAL
when system
is showing welcome screen, please take a look at the stack.
it shows that
a call to nt!CcGetVirtualAddress generated the bug check.I am
working on
NOP method and buffer checking but for the time being this
results i have
in hand for posting.

kd> !analyze -v
**************************************************************
*****************

*

*
* Bugcheck Analysis

*
*

*
**************************************************************
*****************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pagable (or completely
invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 804f03fb, address which referenced memory

Debugging Details:

READ_ADDRESS: 00000000

CURRENT_IRQL: 2

FAULTING_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xA

LAST_CONTROL_TRANSFER: from 805808d9 to 804f03fb

TRAP_FRAME: fc171960 – (.trap fffffffffc171960)
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
Resetting default context

STACK_TEXT:
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

FOLLOWUP_IP:
nt!CcGetVirtualAddress+7b
804f03fb 8b3c81 mov edi,[ecx+eax*4]

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!CcGetVirtualAddress+7b

MODULE_NAME: nt

IMAGE_NAME: ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3d6de35c

STACK_COMMAND: .trap fffffffffc171960 ; kb

BUCKET_ID: 0xA_nt!CcGetVirtualAddress+7b

Followup: MachineOwner

kd> .trap fffffffffc171960
ErrCode = 00000000
eax=00000000 ebx=810c37a8 ecx=00000000 edx=00000000 esi=00000000
edi=810c3878
eip=804f03fb esp=fc1719d4 ebp=fc1719f4 iopl=0 nv up
ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000246
nt!CcGetVirtualAddress+7b:
804f03fb 8b3c81 mov edi,[ecx+eax*4]
kd> kb
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
fc1719f4 805808d9 000c37a8 00000000 00000000
nt!CcGetVirtualAddress+0x7b
fc171a5c fc3f6ba3 811c8028 fc171a88 00001000 nt!CcMapData+0x8b
fc171a90 fc3f66a9 811f4008 e15b4840 00000000
Fastfat!FatReadDirectoryFile+0x90
fc171b60 fc3f7317 811f4008 e15b4840 e18be608
Fastfat!FatLocateDirent+0xf0
fc171c98 fc3f6285 811f4008 8117a008 fc3f7706
Fastfat!FatQueryDirectory+0x4ab
fc171ca4 fc3f7706 811f4008 8117a008 811cb230
Fastfat!FatCommonDirectoryControl+0x3d
fc171ce8 804eca36 81250be8 8117a008 806c9190
Fastfat!FatFsdDirectoryControl+0x65
fc171cf8 8058b076 fc171d64 00f0f894 805951e4 nt!IopfCallDriver+0x31
fc171d0c 8059523f 81250be8 8117a008 810e5c40
nt!IopSynchronousServiceTail+0x5e
fc171d30 804da140 00000488 00000000 00000000
nt!NtQueryDirectoryFile+0x5b
fc171d30 7ffe0304 00000488 00000000 00000000 nt!KiSystemService+0xc4
00f0f85c 77f75fba 77e7eb29 00000488 00000000
SharedUserData!SystemCallStub+0x4
00f0f860 77e7eb29 00000488 00000000 00000000
ntdll!ZwQueryDirectoryFile+0xc
WARNING: Stack unwind information not available. Following
frames may be
wrong.
00f0fb54 77e7eb75 00528260 00000488 00f0fb8c
kernel32!FindFirstFileExW+0x1b8
00f0fea4 00000000 00000000 00000000 00000484
kernel32!FindFirstFileW+0x13

Regards
Subodh


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com