Junfeng Zhang's Musing
things about the world, world of things
The symbolic link cannot be followed because its type is disabled
When access a symbolic link on a file server, sometimes you may see the following error: "The...
Date: 05/07/2012
Getting where the exception is thrown in Windows Error Report for managed application without a dump
A while ago, an internal thread shows how to get where the exception is thrown in Windows Error...
Date: 07/27/2009
Internal Manifest vs External Manifest
Internal manifest is the RT_MANIFEST resource in the executable. External manifest is...
Date: 05/11/2009
CLR HRESULT
CLR HRESULT’ facility code is 0x13. If an HRESULT error is 0x8013xxxx, it is likely a CLR error. All...
Date: 03/02/2009
Be careful about exception after resource allocation
The following is a common code pattern Resource resource = GetResource(); DoWork(); return resource;...
Date: 02/02/2009
Exception Filter
C# does not support exception filter. However, VB and IL support it. To add exception filter to C#,...
Date: 12/08/2008
ThreadPool.BindHandle
I mentioned that we can use ThreadPool.BindHandle to implement asynchronous IO. Here are roughly the...
Date: 12/01/2008
ThreadPool.UnsafeQueueNativeOverlapped
CLR’s thread pool has two pools of threads. The first pool is used by ThreadPool.QueueUserWorkItem....
Date: 11/24/2008
Conversion between System.String and char *
We can convert a char * to System.String with System.String’s constructor string str = new...
Date: 08/11/2008
XXX is not a valid Win32 application
If you have used your Vista SP1-based computer for extended period, you may experience some problems...
Date: 08/04/2008
Managed ThreadPool vs Win32 ThreadPool (pre-Vista)
The following is a conversation between me and a CLR dev. The conversation is very informative so I...
Date: 07/21/2008
Managed Watson Dump
From .Net Framework 2.0, Dr. Watson is able to generate dump compatible with .Net framework. This...
Date: 07/14/2008
Inspect a 32 bit Process Dump Generated by a 64 bit Debugger
64 bit Windows can run both 32 bit process and 64 bit process. For debugging though, you want to use...
Date: 06/30/2008
Getting a Full Memory Dump for a Process
To diagnose a problem for a remote customer, sometimes the easiest way is to have the customer...
Date: 06/19/2008
Event Handles “leak”
On our stress run, we saw our process’ handle count steadily increases until certain point, then it...
Date: 04/28/2008
Use !htrace to debug handle leak
Windbg Debugger’s !htrace extension is very handy to debug handle leak. The process essentially...
Date: 04/21/2008
Consider Creating a new class for locking
C# provides keyword lock for synchronized access. A good practice is to create a private object for...
Date: 04/14/2008
A case study of a NullReferenceException
We are seeing a NullReferenceException in our stress program. The investigation process may be...
Date: 04/07/2008
App Config’s root element should be namespace-less
The root element for Application config file is <configuration> <?xml...
Date: 03/24/2008
Getting the right exception context from a memory dump
When debug a memory dump, the dump may not in the right exception context when it is first loaded in...
Date: 03/03/2008
Calculating the size of each GC generation
Sos.dll does not have a command to tell the size of each GC generation. However, you can calculate...
Date: 02/25/2008
Figuring out object allocation graph from a managed memory dump
when debugging a managed memory dump, we can use Sos.dll to inspect managed objects inside the dump....
Date: 02/21/2008
Windows Update Error 0x800A0030
The other day my Windows XP machine suddenly can not use Windows Update. Internet Explorer went to...
Date: 02/18/2008
Windows Performance Tools Kit
Windows Performance Team has released Windows Performance Tools Kit to the Windows SDK for Windows...
Date: 02/11/2008
Reverse P/Invoke and exception
P/Invoke is managed code executing a native function pointer. And Reverse P/Invoke is native code...
Date: 01/28/2008
From Unhandled Exception to Debugger Attach
I was always wondering what is happening between an application throws an unhandled exception, and a...
Date: 11/19/2007
Assembly Loading and Authorization
CLR does not do anything special regarding authorization during assembly loading. It will try to...
Date: 11/12/2007
Mismatched PDBs --- Why?
If you are developing software, most likely you have encountered the "mismatched pdbs" debugger...
Date: 11/05/2007
Windows Vista Sxs Activation Context Cache
Sxs activation model is built on top of Actication Context. To create an activation context, use the...
Date: 10/01/2007
Configuring IIS to Run 32-bit or 64 bit Applications on 64-bit Windows (IIS 6.0)
I was trying VMWare Server on a 64 bit Windows Server 2003 machine to see if I can use it to create...
Date: 09/03/2007
MiniDumpAuxiliaryDlls and KnownManagedDebuggingDlls
I accidentally stumble on these two registry keys. And the expert in Windows Debugger team answers...
Date: 08/20/2007
Loading CLR DAC dll from a different path
From .Net framework 2.0, CLR creates a debugger helper dll mscordacwks.dll. The dll is used by...
Date: 08/13/2007
The Unusual Ref/Def Mismatch FileLoadException
One of my colleagues has experienced a very strange Ref/Def Mismatch FileLoadException (The located...
Date: 08/06/2007
The sequence of interactions between CLR loader and fusion during Assembly.Load
The following describes roughly the sequence of interactions between CLR loader and fusion during...
Date: 08/06/2007
advantages and disadvantages of delay load (LoadLibrary)
Some knowledgeable people posted the following wisdom about delay load. Archived here to share. The...
Date: 08/01/2007
Lock(object) and ThreadAbortException
We have experience some weird deadlock using managed code. We have a class with some shared...
Date: 07/30/2007
Don't catch all exceptions
One of the best practices on exception is don't catch all exceptions. There are many reasons why...
Date: 07/25/2007
Finding Memory leaks
MSDN and Microsoft support web site have some great information on how to find memory leaks, both...
Date: 07/23/2007
Questions and Suggestions -- July 20th Edition
This is the re-occuring post for questions and suggestions. I will not be able to provide any...
Date: 07/20/2007
64 bit gacutil.exe
32 bit gacutil.exe can install/uninstall/enumerate 64 bit assemblies for GAC, so there is really no...
Date: 07/19/2007
Unknown exception 0xe0434f4e
If you attach windows debugger to a .Net framework application, occasionally you may see debug spew...
Date: 07/16/2007
BadImageFormatException maybe thrown when loading a valid assembly
We saw some cases when loading a perfect valid assembly, CLR may throw BadImageFormatException...
Date: 07/11/2007
Reverse P/Invoke Marshaling Performance
Platform Invoke allows managed code to call unmanaged functions exported by an DLL. While the...
Date: 07/09/2007
Break on exception in Windows Debugger
In Windows Debugger, we can break on C++ exception by doing "sxe eh". We can also break on CLR...
Date: 07/05/2007
RT_MANIFEST resource, and ISOLATION_AWARE_ENABLED
RT_MANIFEST Since Windows XP, Windows reserves a new type of resource RT_MANIFEST for SxS manifests....
Date: 06/26/2007
Diagnose SideBySide failures in Windows XP/Windows Server 2003
Since I published my article on how to diagnose SideBySide failures, I have received many feedbacks...
Date: 06/12/2007
Activation Context Creation flow
The following describes how activation context is created currently in Windows XP/Windows Server...
Date: 06/12/2007
Genman32 – A tool to generate Sxs manifest for managed assembly for Registration Free COM/.Net Interop
Attached to this article is GenMan32, a tool to generate sxs manifest for managed assembly to use in...
Date: 04/14/2007
Connect Kernel Debugger to a Virtual PC/Virtual Server virtual machine
Virtual Machine completely changes how people test software (Well, definitely me.). Create a virtual...
Date: 04/04/2007
Understand why your computer restarted unexpectedly
Many people have experienced unexpected computer restarts. Unexpected restarts can be caused by bugs...
Date: 03/23/2007