I am debugging a concurrency problem. So I just wanted to find out all different stacks in which my driver code is in. So I did “!stacks 2 mydrv” to get the list. It brought out 2 threads whose stack had my driver code.
Strangely when I ran through all the processors with “~procnum” I saw in one of the processors there was a third stack, I could see in the call stack window which also had my driver code. I dont understand why this one didnt show up in the !stacks command
When I did !thread in the processor where I found this third stack, I see its System Idle loop.
!stacks doesnt include System idle thread in its search?
>!stacks doesnt include System idle thread in its search?
Correct. The Idle process isn’t linked in to the active process list, so
!stacks output doesn’t include it. In this case you have your DPC being
executed within the context of the Idle process, so your output was a bit
misleading.
I always use !running -it also as part of the analysis to avoid this kind of
thing (though I suppose it would be nice for !stacks to include the Idle
threads).
-scott
–
Scott Noone
Consulting Associate and Chief System Problem Analyst
OSR Open Systems Resources, Inc. http://www.osronline.com
Thanks for the affirmation. +1 on !stacks to include the idle threads.
I find it annoying when I dont get the entire stack trace till the bottom. Both in Callstack window and “!running -it” output. Is there any settings in the windbg which will help in avoiding this downsizing behaviour in the output? Please do share if you know a way around this, I would really appreciate.
>I find it annoying when I dont get the entire stack trace till the bottom.
Both in Callstack window and “!running -it” output. Is there any >settings
in the windbg which will help in avoiding this downsizing behaviour in the
output?
.kframes will fix this for the !running output, try:
.kframes 1000
Which sets the call stack depth to the maximum of 4096.
In the call stack window you have to click the “More” button to increase the
depth, I don’t know of a way to force it to match the .kframes value (also,
not all commands listen to the .kframes setting).
-scott
–
Scott Noone
Consulting Associate and Chief System Problem Analyst
OSR Open Systems Resources, Inc. http://www.osronline.com