Why psscor4 command does not start

For some reason, I cannot run any commands after loading psscor4. I downloaded x64 from psscor4 from the MS website and put it in the same folder where windbg is located. Before loading psscor4, I can run sos commands without any problems.

0:003> .loadby sos clr 0:003> lmvm clr start end module name 00007ffa`35630000 00007ffa`35fc8000 clr (deferred) Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Image name: clr.dll Timestamp: Wed Nov 27 19:25:30 2013 (52968D7A) CheckSum: 00996ED8 ImageSize: 00998000 File version: 4.0.30319.34011 Product version: 4.0.30319.34011 File flags: 8 (Mask 3F) Private File OS: 4 Unknown Win32 File type: 2.0 Dll File date: 00000000.00000000 Translations: 0409.04b0 CompanyName: Microsoft Corporation ProductName: Microsoft® .NET Framework InternalName: clr.dll OriginalFilename: clr.dll ProductVersion: 4.0.30319.34011 FileVersion: 4.0.30319.34011 built by: FX45W81RTMGDR PrivateBuild: DDBLD109 FileDescription: Microsoft .NET Runtime Common Language Runtime - WorkStation LegalCopyright: © Microsoft Corporation. All rights reserved. Comments: Flavor=Retail 0:003> !DumpHeap -type ConsoleApplication1.Dummy Address MT Size 0000000002022f58 00007ff9d5ec4130 40 Statistics: MT Count TotalSize Class Name 00007ff9d5ec4130 1 40 ConsoleApplication1.Dummy Total 1 objects 0:003> !DumpHeap -mt 00007ff9d5ec4130 Address MT Size 0000000002022f58 00007ff9d5ec4130 40 Statistics: MT Count TotalSize Class Name 00007ff9d5ec4130 1 40 ConsoleApplication1.Dummy Total 1 objects 0:003> !do 0000000002022f58 Name: ConsoleApplication1.Dummy MethodTable: 00007ff9d5ec4130 EEClass: 00007ff9d5fd23b8 Size: 40(0x28) bytes File: c:\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe Fields: MT Field Offset Type VT Attr Value Name 00007ffa34635740 4000001 8 System.Byte[] 0 instance 0000000012029740 bytes 00007ffa34632838 4000002 18 System.Int32 1 instance 0 <ID>k__BackingField 00007ffa3464d5b8 4000003 10 System.Double 1 instance 0.000000 <SomeThing>k__BackingField 

As soon as I load psscor4, I cannot run any sos commands

 0:003> .load psscor4 0:003> !DumpHeap -type ConsoleApplication1.Dummy The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are being moved around, or we are at the initialization or shutdown of the gc heap. Commands related to displaying, finding or traversing objects as well as gc heap segments may not work properly. !dumpheap and !verifyheap may incorrectly complain of heap consistency errors. Error requesting GC Heap data Unable to build snapshot of the garbage collector state 0:003> !DumpHeap -mt 00007ff9d5ec4130 The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are being moved around, or we are at the initialization or shutdown of the gc heap. Commands related to displaying, finding or traversing objects as well as gc heap segments may not work properly. !dumpheap and !verifyheap may incorrectly complain of heap consistency errors. Error requesting GC Heap data Unable to build snapshot of the garbage collector state 0:003> !do 0000000002022f58 <Note: this object has an invalid CLASS field> Invalid object 

I can run these commands after the sos prefix. So! Sos.do works great. But the problem is that I cannot run any special psscor4 commands. Any idea what could be wrong? I think the psscor4 output error is misleading since I don't think any GC happens when I attach windbg to this process.

EDIT The following is the configuration used for .NET 4.0. Which one could be used with psscor4? enter image description here

+6
source share
2 answers

PSSCOR4

You have .NET 4.0.30319.34011, which is actually .NET 4.5. PSSCOR4 since 2011-02-01 and is not yet available for .NET 4.5. It only works with .NET 4.0, so it is completely useless for your situation.

Since .NET 4.5 is an inplace update for .NET 4, installing the target environment on 4.0 does not help. It depends on the version of .NET that is actually installed on the PC that launches your application.

Several extensions

Some extensions may have the same commands as other extensions. You can find the available PSSCOR 4 commands on

 0:000> .extmatch /e *psscor4* * 

As you can see from the list, PSSCOR4 is a superset of SOS and has all the SOS commands plus a few more.

The naming conflict can be resolved in two ways:

  • defining a default dll using .setdll <dllname>
  • using explicitly !<extension>.<command>

By executing !sos.do , you have chosen approach 2.

+9
source

The dump executes CLR v4.5 (4.0.30319.34011). Psscor4 does not work with .NET 4.5+.

+6
source

Source: https://habr.com/ru/post/975672/


All Articles