How to properly take dump of 32 process on 64 bit machines.

I would not be wrong if I say that most computers these days are 64 bit. 64 bit offers many advantages over 32 bits and in general there is not much sense to install 32 bit OS pretty much anywhere, except maybe for some 32 bit virtual machine with less than 4 Gb of RAM, because in general 32 bit OS takes less memory. But even then, it is better to have 64 bit and just have couple of services running on it.

But at the same time, it is still common to run 32 code on it. For example, if you have IIS in many cases it has sense to run 32-bit worker process. Main reason behind that 32-bit code is smaller, data structures are also smaller in 32 bit. And as result it is slightly better.

But there is one caveat related to 32 bit processes running on 64 bit PC. If you try to take dump using Task Manager, this dump will be pretty much unusable. Technically for 32 bit code it is possible to switch to 32 mode, but for managed code, all commands will prints errors etc. Only Enterprise version of Visual Studio can deal with such dump files. If you try to execute this in 64 bit WinDbg:
.cordll -ve -u -l

You will get:
CLR DLL status: No load attempts

If you try to use 32 bit WinDbg then CLR Dll will load successfully. But if you try to use any commands like !clrstack you will got this:
SOS does not support the current target architecture.

Anyway, Prope dump file all you need is to use 32 bit task manager that located here:
C:\Windows\SysWOW64\Taskmgr.exe

You can use any other tool, but it should be 32 bit. After that everything will work as expected

Comments

Post comment