[Windows] Troubleshoot programs that hang – but not crash – with WhatIsHang

We know we can use WinCrashView to analyze crashed programs and BlueScreenView to diagnose Windows’ blue screen of death. How about programs that hang but not crash? Is there a tool to help troubleshoot hung apps? Yes, there is; and it is called WhatIsHang.

WhatIsHang is a tool – by the famous NirSofer – that helps users troubleshoot hung programs by analyzing and displaying relevant information about them. Most of the information displayed about hung programs will only be understood by programmers; so to get your issue solved you may have to export the report to relevant knowledgeable parties. However, other information can be understood by laymen, allowing us normal people the opportunity to solve our issues before running to the geeks.

What exactly does WhatIsHang give us in its reports? The following:

  • Remarks: This section displays general hints that may give you a first impression of what might be wrong with the hanging problem. The first remark always specify the type of the detected hang problem – whether it’s a single system call problem or infinite loop/very long loop problem. Additional remarks might be displayed according to the call stack of the hang problem. For example, if a filename on a remote computer is detected, WhatIsHang will display a warning that this network access might cause the problem.
  • Strings found in the stack: WhatIsHang collects the strings from the calls made by the hang program and displays them in this section. These strings might give you a clue of what is wrong in the hang program.
  • Modules found in the stack: This section displays the list of DLL files found in the calls made by the hang program. It might be especially useful for hang problems of Windows Explorer, because if the problem is caused by 3-party software, you’ll probably find the DLL of the problemtic software in the list.
  • Execute Address (For Programmers): The execution memory address that the hang problem was detected.
  • Call Stack (For Programmers): Displays the calls found in the stack, like every debugger software does.
  • Stack Data (For Programmers): Displays values, addresses, and string points found in the stack.
  • Processor Registers (For Programmers): Displays the current values of the basic processor registers (EAX, EBX, ECX, and so on)
  • Memory Data: WhatIsHang collects the memory content of all valid memory pointers found in the calls of the hanging program. This section displays all memory data found by WhatIsHang in ‘Hex Dump’ format, and it might give you more clues of what might cause the hang.
  • All Threads: This section simply displays the list of all threads found in the hang program.

Using WhatIsHang is fairly simple. Run WhatIsHang when a program is hung (program must still be running — WhatIsHang will not work if you close it). Upon launching WhatIsHang will detect any hung programs display them in a list. You must then select the hung program you want to analyze and pressing F9 on your keyboard or go to File -> Get Hang Information. (Alternatively you can do Ctrl + F9 or File -> Get Hang Information – All Threads for an enhanced report.) WhatIsHang will then analyze the program and display relevant information, which you can then export. Exporting reports is done by copying the whole report [F8 or Edit -> Copy Entire Report] or by copying only a part of the report [Ctrl + C or Edit -> Copy Selected Items] and pasting it in an e-mail, message board, text file, etc.

As potentially useful as WhatIsHang is, it does have limitations:

  • WhatIsHang cannot detect hung programs that have no user interface.
  • WhatIsHang cannot run if your whole system is hung.
  • WhatIsHang currently only works for 32-bit programs — it cannot analyze 64-bit programs. 64-bit Windows users can still use WhatIsHang, but they can only use it for 32-bit programs.

Additionally,

  • With its regular report, WhatIsHang is unable to analyze a program that hangs because its waiting for another thread. To get around this there is the Get Hang Information – All Threads report, which attempts to display information about all threads. Do take note, though, this enhanced report is experimental and may not work as well as the normal report.
  • Windows Vista and higher users need to run WhatIsHang with administrator access to allow it to troubleshoot hung programs that run with administrator access.

You can grab WhatIsHang from the links below; it is portable, requiring no installation:

Version reviewed: v1.10

Supported OS: Windows 2000 and higher

Download size: 53 KB

WhatIsHang homepage [direct download]

Related Posts