The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
I am debugging a service hang issue where critical section is being used as synchronization object between threads. I have taken the service memory dump file after it hangs.
When I run the !locks command in the dump file, it lists one CS having Lock count 7 as shown below. When I want to see the stack of the thread that is holding the CS, I see only one function in the stack and that thread is also waiting for an object. How can get full call stack of this thread to check what it is waiting for?
95 Id: af8.3aa8 Suspend: -1 Teb: 000007ff
ffee8000 Unfrozen # Child-SP RetAddr : Args to Child : Call Site 00 0000000017caf958 00000000
00000000 : 000000004ea4718c 00000000
77591b06 0000000000000000 00000000`00000000 : ntdll!ZwWaitForSingleObject+0xa
CritSec lib!g_critsec+0 at 000007fecda9bcb8
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Internals & Software Drivers||7 February 2022||Live, Online|
|Kernel Debugging||21 March 2022||Live, Online|
|Developing Minifilters||23 May 2022||Live, Online|
|Writing WDF Drivers||12 September 2022||Live, Online|