Wednesday, 25 April 2012
« Major SOSEX Update | Main | Fix for XP Incompatibility »

Sosex has been updated to work with .NET 4.5.  This version of SOSEX has also been enhanced with DML pretty much everywhere.

The main new feature is the addition of heap indexing.  For large dumps, !bhi (Build Heap Index) will index all of the heap objects and all of the object references in a disk file.  This provides the ability for the new !mroot and existing !refs commands to very quickly locate object roots and references.  With a heap index, !mroot and !refs return nearly instantaneously.  By default, the index is named <DUMP_PATH_AND_NAME>_HeapIndex.bin.  If desired, you can specify your own filename by passing it as a parameter to the !bhi command.  To load a heap index that has already been built, run !lhi (Load Heap Index).  To clear the heap index and remove its resources from memory, run !chi (Clear Heap Index).  For very large dumps, it can take several minutes to build the heap index, but if you need to search for more than a few roots and references, this up-front time is well worth the cost.

As always, PLEASE feel free to offer feedback and/or bug reports to the email address listed by the help command or via the contact link on the site.  I’m generally very responsive to bug reports.  Enjoy!

Download: 32-bit  64-bit

Wednesday, 25 April 2012 02:28:22 (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [4]  |  Trackback
Wednesday, 25 April 2012 10:10:31 (GMT Standard Time, UTC+00:00)
Steve, you rock!

Awesome tool, and the last changes just made it more awesome ;)

Victor Ivanov
Friday, 25 May 2012 01:37:49 (GMT Standard Time, UTC+00:00)
It seems like !refs has a bug when dealing with addresses past the 32-bit range:

0:000> !mdt 000000043eb7a0e0
000000043eb7a0e0 STRVAL="FindChanges[16.40.5322.1"(System.Text.StringBuilder)
m_ChunkChars:000000043eb7a098 (System.Char[], Elements: 24) expand
m_ChunkPrevious:NULL (System.Text.StringBuilder)
m_ChunkLength:0x18 (System.Int32)
m_ChunkOffset:0x0 (System.Int32)
m_MaxCapacity:0x7fffffff (System.Int32)
0:000> !refs 000000043eb7a0e0
000000003eb7a0e0 is not a valid object.

Note the address it's saying isn't valid isn't the same as the one provided to it
Friday, 25 May 2012 01:38:56 (GMT Standard Time, UTC+00:00)
I apologise if this comes through twice, first time was a little weird...

It seems like !refs has a bug when dealing with addresses past the 32-bit range:

0:000> !mdt 000000043eb7a0e0
000000043eb7a0e0 STRVAL="FindChanges[16.40.5322.1"(System.Text.StringBuilder)
m_ChunkChars:000000043eb7a098 (System.Char[], Elements: 24) expand
m_ChunkPrevious:NULL (System.Text.StringBuilder)
m_ChunkLength:0x18 (System.Int32)
m_ChunkOffset:0x0 (System.Int32)
m_MaxCapacity:0x7fffffff (System.Int32)
0:000> !refs 000000043eb7a0e0
000000003eb7a0e0 is not a valid object.
Tuesday, 05 June 2012 13:53:26 (GMT Standard Time, UTC+00:00)
Is there some runtime that has to be installed in order to load and run sosex? When I run .load SOSEX in WinDbg this error happens: 0:043> .load SOSEX
The call to LoadLibrary(SOSEX) failed, Win32 error 0n127
"The specified procedure could not be found."
Please check your debugger configuration and/or network access.

When I run depends.exe on sosex.dll it shows I'm missing wer.dll and ieshims.dll.
Comments are closed.