Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SieExtPub.dll not working in version 6.6.3.5?

213 views
Skip to first unread message

v...@gmx.de

unread,
Feb 16, 2006, 5:28:27 AM2/16/06
to
When I was debugging a hang scenario in a COM environment I wanted to
use the functions
!critlist, !waitlist and !comcalls of SieExtPub.dll.
Although it is very clear, that several threads were waiting for some
sections, I got following message:

0:009> !critlist
No threads waiting on critical sections.

Also those commands didn't give me anything:
0:009> !waitlist
0:009> !comcalls

I'm using SIE Extension - Version 1.75.

Could you please tell me, if this should work or if there is a newer
version available?

Thanks,
Volker

ps.: SieExtPub.dll is a very very usefull extension. Please do not skip
it!

Drew Bliss [MSFT]

unread,
Feb 16, 2006, 2:38:38 PM2/16/06
to
Where did you get sieextpub.dll from? The windbg team does not produce,
support nor distribute it, so we can't be much help to you.

Did you get it from SIE directly? I'd report your problem to your contact
there.

"v...@removespam.gmx.de" <v...@gmx.de> wrote in message
news:1140085707.4...@f14g2000cwb.googlegroups.com...

Volker von Einem

unread,
Feb 17, 2006, 2:52:24 AM2/17/06
to
This is were I got it from:

http://www.microsoft.com/downloads/thankyou.aspx?familyId=7c6ec49c-a8f7-4323-b583-6a7a6aeb5e66&displayLang=en&amp;oRef=http%3a%2f%2fblogs.msdn.com%2ftess%2farchive%2f2006%2f01%2f20%2f515259.aspx

Initially I got the hint from a SIE visiting our company (unfortunately
I forgot the name :-( ).

Thanks,
Volker

Tess

unread,
Feb 17, 2006, 4:18:51 AM2/17/06
to
It does work in 6.6.3.5 (I just tested it).

The reason your commands are not working is likely that your symbol
path is wrong or you dont have symbols for the ntdll or kernel32
version you are using, in which case those commands will yield no
results.

Tess

v...@gmx.de

unread,
Feb 17, 2006, 6:51:31 AM2/17/06
to
Hm,

I have this in my sympath:
srv*C:\windbg\symbols*http://msdl.microsoft.com/download/symbols
Shouldn't I get the correct symbols then?

v...@gmx.de

unread,
Feb 17, 2006, 7:15:01 AM2/17/06
to
Hi Tess,

thanks a lot for your effort! Actually I'm using MS symbol server, so
symbols should be ok (I checked the ones for ntll and kernel32).

Please have a look at my example. This is a hang scenario:

0:006> ~* k

0 Id: 1860.1fd4 Suspend: 1 Teb: 7ffdf000 Unfrozen
ChildEBP RetAddr
0012f8c0 7c90e9ab ntdll!KiFastSystemCallRet
0012f8c4 7c8094f2 ntdll!ZwWaitForMultipleObjects+0xc
0012f960 77564822 kernel32!WaitForMultipleObjectsEx+0x12c
0012f9dc 664013e6 ole32!CoWaitForMultipleHandles+0x100
0012fa30 664021c5 DATAAC_1!CServiceModule::Run+0xcb
0012fa54 66401c5f DATAAC_1!CServiceModule::Start+0x4c
0012ff24 6641d007 DATAAC_1!wWinMain+0x27e
0012ffc0 7c816d4f DATAAC_1!wWinMainCRTStartup+0x15b
0012fff0 00000000 kernel32!BaseProcessStart+0x23

1 Id: 1860.1f58 Suspend: 1 Teb: 7ffde000 Unfrozen
ChildEBP RetAddr
00a4feb8 7c90e31b ntdll!KiFastSystemCallRet
00a4febc 7c80cbd9 ntdll!ZwRemoveIoCompletion+0xc
00a4fee8 664185e6 kernel32!GetQueuedCompletionStatus+0x29
00a4ff78 66418594 DATAAC_1!CTraceBPL::EventsWorker+0x3f
00a4ff80 77c3a3b0 DATAAC_1!CTraceBPL::InitThreadFunc+0x13
00a4ffb4 7c80b50b msvcrt!_endthreadex+0xa9
00a4ffec 00000000 kernel32!BaseThreadStart+0x37

2 Id: 1860.998 Suspend: 1 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr
00f3fdf4 7c90e9ab ntdll!KiFastSystemCallRet
00f3fdf8 7c8094f2 ntdll!ZwWaitForMultipleObjects+0xc
00f3fe94 7c809c86 kernel32!WaitForMultipleObjectsEx+0x12c
00f3feb0 66419a63 kernel32!WaitForMultipleObjects+0x18
00f3ff08 6641571d DATAAC_1!CClientEventThreadManager::Post+0xc4
00f3ff54 6641562d
DATAAC_1!CInstrumentControl::MyEventDispatcherThread+0x71
00f3ff80 77c3a3b0
DATAAC_1!CInstrumentControl::EventDispatcherThread+0x4a
00f3ffb4 7c80b50b msvcrt!_endthreadex+0xa9
00f3ffec 00000000 kernel32!BaseThreadStart+0x37

3 Id: 1860.1aac Suspend: 1 Teb: 7ffdc000 Unfrozen
ChildEBP RetAddr
0103fe2c 7c90e9c0 ntdll!KiFastSystemCallRet
0103fe30 7c91901b ntdll!ZwWaitForSingleObject+0xc
0103feb8 7c90104b ntdll!RtlpWaitForCriticalSection+0x132
0103fec0 66419b67 ntdll!RtlEnterCriticalSection+0x46
0103ff14 66415a15
DATAAC_1!CClientEventThreadManager::CleanUpDeadClients+0x3a
0103ff54 66415820 DATAAC_1!CInstrumentControl::MyCleanupThread+0x160
0103ff80 77c3a3b0 DATAAC_1!CInstrumentControl::CleanupThread+0x4c
0103ffb4 7c80b50b msvcrt!_endthreadex+0xa9
0103ffec 00000000 kernel32!BaseThreadStart+0x37

4 Id: 1860.1114 Suspend: 1 Teb: 7ffdb000 Unfrozen
ChildEBP RetAddr
0114fe18 7c90e399 ntdll!KiFastSystemCallRet
0114fe1c 77e76703 ntdll!NtReplyWaitReceivePortEx+0xc
0114ff80 77e76c22 RPCRT4!LRPC_ADDRESS::ReceiveLotsaCalls+0xf4
0114ff88 77e76a3b RPCRT4!RecvLotsaCallsWrapper+0xd
0114ffa8 77e76c0a RPCRT4!BaseCachedThreadRoutine+0x79
0114ffb4 7c80b50b RPCRT4!ThreadStartRoutine+0x1a
0114ffec 00000000 kernel32!BaseThreadStart+0x37

5 Id: 1860.1d08 Suspend: 1 Teb: 7ffda000 Unfrozen
ChildEBP RetAddr
0124ff24 7c90e9c0 ntdll!KiFastSystemCallRet
0124ff28 7c8025db ntdll!ZwWaitForSingleObject+0xc
0124ff8c 774fe407 kernel32!WaitForSingleObjectEx+0xa8
0124ffa8 774fe444 ole32!CRpcThread::WorkerLoop+0x5c
0124ffb4 7c80b50b ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x1b
0124ffec 00000000 kernel32!BaseThreadStart+0x37

6 Id: 1860.1998 Suspend: 1 Teb: 7ffd9000 Unfrozen
ChildEBP RetAddr
0141f4ac 7c90e9c0 ntdll!KiFastSystemCallRet
0141f4b0 7c91901b ntdll!ZwWaitForSingleObject+0xc
0141f538 7c90104b ntdll!RtlpWaitForCriticalSection+0x132
0141f540 66419956 ntdll!RtlEnterCriticalSection+0x46
0141f56c 66414ee8 DATAAC_1!CClientEventThreadManager::Stop+0x22
0141f574 66402b40 DATAAC_1!CInstrumentControl::OnAfterUnadvise+0xc
0141f58c 77e79dc9
DATAAC_1!CProxy_IDAQInstrumentControlNotify<CInstrumentControl>::Unadvise+0x3c

0141f5a8 77ef321a RPCRT4!Invoke+0x30
0141f9ac 77ef3bf3 RPCRT4!NdrStubCall2+0x297
0141fa04 77600c31 RPCRT4!CStdStubBuffer_Invoke+0xc6
0141fa44 77600bdb ole32!SyncStubInvoke+0x33
0141fa8c 7750f237 ole32!StubInvoke+0xa7
0141fb64 7750f15c ole32!CCtxComChnl::ContextInvoke+0xe3
0141fb80 77600b11 ole32!MTAInvoke+0x1a
0141fbb0 776009bc ole32!AppInvoke+0x9c
0141fc84 77600715 ole32!ComInvokeWithLockAndIPID+0x2e0
0141fcd0 77e7988c ole32!ThreadInvoke+0x1cd
0141fd04 77e797f1 RPCRT4!DispatchToStubInC+0x38
0141fd58 77e7971d RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x113
0141fd7c 77e8a067 RPCRT4!RPC_INTERFACE::DispatchToStub+0x84

7 Id: 1860.1f4c Suspend: 1 Teb: 7ffd6000 Unfrozen
ChildEBP RetAddr
0171fe18 7c90e399 ntdll!KiFastSystemCallRet
0171fe1c 77e76703 ntdll!NtReplyWaitReceivePortEx+0xc
0171ff80 77e76c22 RPCRT4!LRPC_ADDRESS::ReceiveLotsaCalls+0xf4
0171ff88 77e76a3b RPCRT4!RecvLotsaCallsWrapper+0xd
0171ffa8 77e76c0a RPCRT4!BaseCachedThreadRoutine+0x79
0171ffb4 7c80b50b RPCRT4!ThreadStartRoutine+0x1a
0171ffec 00000000 kernel32!BaseThreadStart+0x37

8 Id: 1860.1cc4 Suspend: 1 Teb: 7ffd7000 Unfrozen
ChildEBP RetAddr
0161fdec 7c90e9ab ntdll!KiFastSystemCallRet
0161fdf0 7c8094f2 ntdll!ZwWaitForMultipleObjects+0xc
0161fe8c 77564822 kernel32!WaitForMultipleObjectsEx+0x12c
0161ff08 664110dd ole32!CoWaitForMultipleHandles+0x100
0161ff58 66410ffc DATAAC_1!CInstrument::ChipDetectThread+0x82
0161ff80 77c3a3b0 DATAAC_1!CInstrument::ChipDetectThreadProc+0x36
0161ffb4 7c80b50b msvcrt!_endthreadex+0xa9
0161ffec 00000000 kernel32!BaseThreadStart+0x37

9 Id: 1860.1d68 Suspend: 1 Teb: 7ffd5000 Unfrozen
ChildEBP RetAddr
0181f860 7c90e3ed ntdll!KiFastSystemCallRet
0181f864 77e7c968 ntdll!ZwRequestWaitReplyPort+0xc
0181f8b0 77e7a716 RPCRT4!LRPC_CCALL::SendReceive+0x228
0181f8bc 776016bf RPCRT4!I_RpcSendReceive+0x24
0181f8d8 776011b6 ole32!ThreadSendReceive+0xf5
0181f8f4 7760109a
ole32!CRpcChannelBuffer::SwitchAptAndDispatchCall+0x13d
0181f9d4 7751047c ole32!CRpcChannelBuffer::SendReceive2+0xb9
0181fa40 77510414 ole32!CAptRpcChnl::SendReceive+0xab
0181fa94 77ef3db5 ole32!CCtxComChnl::SendReceive+0x113
0181fab0 77ef3eac RPCRT4!NdrProxySendReceive+0x43
0181fe8c 77ef3e42 RPCRT4!NdrClientCall2+0x1fa
0181feac 77e89aa4 RPCRT4!ObjectStublessClient+0x8b
0181febc 66419e4e RPCRT4!ObjectStubless+0xf
0181fefc 66419490
DATAAC_1!CProxy_IDAQInstrumentControlNotify<CInstrumentControl>::Fire_StatusChanged+0xa2

0181ff50 66419298 DATAAC_1!CClientEventThread::MyClientEventThread+0xa5

0181ff80 77c3a3b0 DATAAC_1!CClientEventThread::ClientEventThread+0x8c
0181ffb4 7c80b50b msvcrt!_endthreadex+0xa9
0181ffec 00000000 kernel32!BaseThreadStart+0x37

10 Id: 1860.538 Suspend: 1 Teb: 7ffad000 Unfrozen
ChildEBP RetAddr
01c1fc20 7c90e9ab ntdll!KiFastSystemCallRet
01c1fc24 7c8094f2 ntdll!ZwWaitForMultipleObjects+0xc
01c1fcc0 77564822 kernel32!WaitForMultipleObjectsEx+0x12c
01c1fd3c 6640d21e ole32!CoWaitForMultipleHandles+0x100
01c1fd5c 6640dfd7 DATAAC_1!CHelpers::WaitForSingleObject+0x36
01c1fd94 6640e0c6 DATAAC_1!CInstrument::OnError+0x9f
01c1fda8 5ec0ffac DATAAC_1!CInstrument::OnError+0x17
01c1fe04 5ec09591
BioReader!CProxy_IDAQBioReaderEvents<CCuReader>::Fire_OnError+0x9c
01c1fe48 5ec08cca BioReader!CCuReader::FireError+0x122
01c1ff00 5ec18499 BioReader!CCuReader::NewDataReceived+0x14f
01c1ff3c 5ec183df BioReader!CSimulator::ReadSimulationFile+0x76
01c1ff50 5ec18331 BioReader!CSimulator::RunThread+0xf
01c1ff80 77c3a3b0 BioReader!CSimulator::RunThreadProc+0x4a
01c1ffb4 7c80b50b msvcrt!_endthreadex+0xa9
01c1ffec 00000000 kernel32!BaseThreadStart+0x37

# 11 Id: 1860.1ac4 Suspend: 1 Teb: 7ffd4000 Unfrozen
ChildEBP RetAddr
0129ffc8 7c9507a8 ntdll!DbgBreakPoint
0129fff4 00000000 ntdll!DbgUiRemoteBreakin+0x2d
0:006> !sieextpub.help

SIE Extension - Version 1.75

!kdall = Executes kd for the full range of current
thread's stack
!filevers = Show version and paths of all loaded modules
!critlist = List CritSecs that threads are waiting on
!waitlist = Lists handles each thread is blocking on
!sr2 <addr> = Get target process/thread from 1st param of
SendReceive2
!waitreply <addr> = Get target process/thread from 2nd param of
RequestWaitReplyPort
!comcalls = Show COM calls on all threads
!vbcheck <module> = Check Unattended Execution/Retained In Memory
settings
!vbcheckall = Check UE/RIM settings on all modules
!stackrange = Shows start/end stack addresses of current
thread
!rangesearch = Search an address range for values within a
range
!showstring <addr> = Prints an ASCII string
!showstringw <addr> = Prints a double byte string
!showvariant <addr> = Shows the contents of a variant object
!showctime <val> = Converts a ctime DWORD to a string

Step commands repeat a command from a starting address.
Use %x and %d as placeholders in command.
For example: !stepptr 04002C34 4 dc %x
!stepval <val> <count> <cmd> = Repeats command on each value
!stepptr <addr> <count> <cmd> = Repeats command on each pointer

0:006> !critlist


No threads waiting on critical sections.

0:006> !waitlist
0:006> !comcalls
Thread 9 - MTA
Target Process ID: 3d476aae = 1028090542
Target Thread ID: 00006000 (STA - Possible junk values)
0:006> !critsec
0:006> !locks

CritSec DATAAC_1!TraceBPL+c0 at 6642f2e0
LockCount -4
RecursionCount -3
OwningThread 0
EntryCount 0
ContentionCount 0
*** Locked

CritSec +8139d8 at 008139d8
LockCount 0
RecursionCount 1
OwningThread 1aac
EntryCount 0
ContentionCount 0
*** Locked

CritSec +813a3c at 00813a3c
LockCount 2
RecursionCount 1
OwningThread 998
EntryCount 2
ContentionCount 2
*** Locked

Scanned 410 critical sections

!locks is better than nothing but it can't beat !waitlist, as it also
lists the waiters.

Oleg Starodumov

unread,
Feb 17, 2006, 9:26:57 AM2/17/06
to

Hi Volker,

Are you working on Win2003 SP1?

This version of SieExtPub is old (made in 2002?), so I suspect that it cannot work
with Win2003 SP1's new format of CRITICAL_SECTION structure.

If you are working on another OS, I would suspect that some of the critical
sections can be corrupted (you can use lock verifier and pageheap to test for that).

> !locks is better than nothing but it can't beat !waitlist, as it also
> lists the waiters.

You can use the parameters passed to RtlEnterCriticalSection calls to see what
the threads are waiting on.

Oleg
http://www.debuginfo.com/


v...@gmx.de

unread,
Feb 20, 2006, 2:59:25 AM2/20/06
to
Hi Oleg,

thanks a lot for the hints!
The version of windows I'm using is XP SP2.

The clue about the !waitlist extension, is that you do not need to
build the picture yourself, you get it for free.

Could you tell me, how to get the waiting threads from that parameters
passed to RtlEnterCriticalSection?

Do you know if there is a newer version of sieextpub.dll and were to
get it?

Thanks,
Volker

Oleg Starodumov

unread,
Feb 20, 2006, 4:19:48 AM2/20/06
to

> Could you tell me, how to get the waiting threads from that parameters
> passed to RtlEnterCriticalSection?
>

The first parameter passed to RtlEnterCriticalSection is the address of
CRITICAL_SECTION structure, therefore you can see what critical
section this thread is waiting on.

> Do you know if there is a newer version of sieextpub.dll and were to
> get it?
>

I don't know about any newer versions, unfortunately.

Oleg


0 new messages