Re: Unhandled exception when pushing esi
- From: "Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx>
- Date: Sat, 27 May 2006 23:00:24 -0400
In some circumstances (in particular if a thread has been converted to a GUI
thread by making a call to win32k.sys), the kernel stack will be grown to be
larger than 12K.
For example:
lkd> !thread 8883e8f0 f
THREAD 8883e8f0 Cid 0fec.484c Teb: 7ffdd000 Win32Thread: e6939008 RUNNING
on processor 0
Not impersonating
DeviceMap e976c1b0
Owning Process 880f7020 Image: windbg.exe
Wait Start TickCount 8323115 Ticks: 7 (0:00:00:00.109)
Context Switch Count 734 LargeStack
UserTime 00:00:00.0390
KernelTime 00:00:00.0062
Start Address 0x7c810856
Win32 Start Address 0x01029120
Stack Init 9cfd3000 Current 9cfd2d34 Base 9cfd3000 Limit 9cfcf000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 16
(16K stack size here on an x86 system.)
"David J. Craig" <Dave@xxxxxxxxxxxxx> wrote in message
news:eaI60yfgGHA.356@xxxxxxxxxxxxxxxxxxxxxxx
12KB is not the 'usual', it is the fixed unchanging size. 16KB on x64.
The kernel guys said that it would not be increased according to Microsoft
at one of the IFS PlugFests.
"Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx> wrote in message
news:uW7IaPfgGHA.4276@xxxxxxxxxxxxxxxxxxxxxxx
`!thread' will tell you about the stack region for a particular thread
(assuming you have enough information saved in your dump file).
By default, non-GUI threads will have around 12K of kernel stack on x86
systems, I believe. If you need to check this at runtime, there is an
`IoGetRemainingStackSize' call that you can use in kernel mode.
"Oracle" <wong.kam.keung@xxxxxxxxx> wrote in message
news:1148763290.206786.302740@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ivan,
Is there a way that I can check the currently used stack size for that
thread in the dump file? What will be the usual size limit for a kernel
stack for a thread?
Thanks for any advice.
Ivan Brugiolo [MSFT] wrote:
My wild guess would be that you have exhausted the kernel stack
for that thread, by either creating a large on-the-stack variable,
of, by calling some _alloca() derivative function.
.
- References:
- Unhandled exception when pushing esi
- From: wong . kam . keung
- Re: Unhandled exception when pushing esi
- From: Ivan Brugiolo [MSFT]
- Re: Unhandled exception when pushing esi
- From: Oracle
- Re: Unhandled exception when pushing esi
- From: Skywing
- Re: Unhandled exception when pushing esi
- From: David J. Craig
- Unhandled exception when pushing esi
- Prev by Date: Re: [SOL] Punting DrvTextOut and DrvStrokePath causes BSOD in mirror driver, why?
- Next by Date: Re: how can I return BytesReturned in IKSControl::KSProperty for Extension Unit.
- Previous by thread: Re: Unhandled exception when pushing esi
- Next by thread: Re: Unhandled exception when pushing esi
- Index(es):
Relevant Pages
|
|