Copyright (c) 2011 - 2013 Nir Sofer
- WinCrashReport - Displays a report about crashed Windows application.
- BlueScreenView - View the Blue screen of death (STOP error) information stored in dump files.
- NK2Edit - Edit, merge and repair the AutoComplete files (.NK2) of Microsoft Outlook.
Sometimes, Windows or a running application hangs, the user interface abruptly
stops responding, and you cannot determine what has caused the problem or how to
troubleshoot the issue. This utility tries to detect the software or process that is currently
hung, and displays some information that may allow you to sort out and understand
what exactly is at the root of such unexpected behavior.
Most of the information displayed in WhatIsHang's report,
like Call Stack, Stack Data, Processor Registers, and Memory Data is designed for users with
Windows programming knowledge. However, WhatIsHang also presents a list of strings
and dll files related to the hang issue that can help users without
programming skills understand and overcome the causes of the problem and restore normal operation.
System Requirements And Limitations
- This utility works on any version of Windows, starting from Windows 2000 and up to Windows 8. Both 32-bit and 64-bit systems are supported.
- In order to detect hang problems of 32-bit applications, you must use the 32-bit version of WhatIsHang, even
if your operating system is 64-bit.
- In order to detect hang problems of 64-bit applications, you must use the 64-bit version of WhatIsHang.
- On Windows 7/8/2008/Vista with UAC turned on: WhatIsHang cannot detect hanging application if it's
running with SYSTEM or Administrator privilege. In order to solve this problem, you have to
right-click on WhatIsHang.exe and choose 'Run As Administrator'.
- Some hang problems cannot be detected properly by WhatIsHang, for example:
- Programs without any user interface.
- When the program hangs because one thread waits for the other one. (In this case, WhatIsHang will show the details of the waiting thread, but the problem might be in the other thread)
But... Starting from version 1.05, you can use the experimental 'All Threads' report to display
the information about all running threads.
- When the entire system hangs - In this case WhatIsHang won't be able to run...
- Version 1.20
- Added x64 build, for getting a report about freezing 64-bit applications.
- Added list of all loaded modules to the report.
- Fixed the flickering problem in the status bar.
- When WhatIsHang fails to extract information from the process, it now displays a message about that in the report, instead of showing report full of zero numbers...
- Version 1.15
- Added 'Start As Hidden' option. When this option and 'Put Icon On Tray' option are turned on, the main window of WhatIsHang
will be invisible on start.
- Version 1.10
- Added 'Put Icon On Tray' option.
- Version 1.07
- When a program hangs because it waits to another system object
(WaitForSingleObject API Call), WhatIsHang now displays the type of the system object and
its handle, on the Remarks section.
- Version 1.06
- Fixed the all threads list to display the correct start address.
- Added the Thread ID into the report.
- Fixed bug: Ordinal function names were not displayed properly.
- Version 1.05
- Added 'All Threads' experimental report (Ctrl+F9), which displays a report about all running
threads, as opposed to the standard reports that displays a report only for the thread that
stopped responding. Be aware that 'All Threads' report might be quite large.
- Version 1.00 - First release.
When you run WhatIsHang, the upper pane of the main window displays the list of all running applications that their user interface stopped responding.
If WhatIsHang cannot detect any hanging application, the upper pane will be empty, until any hang software is detected.
When the hanging application is detected and you want to get the information about the problem,
select the desired item in the upper pane, and then press F9.
WhatIsHang will inspect the hanging application and will display all information the lower pane,
as a simple text report.
Understanding The WhatIsHang Reports
First, you should be aware that there are 2 types of hang problems:
When WhatIsHang detects the first hang problem, the report will contain only one system call snapshot.
When WhatIsHang detects the second hang problem, the report will contain 3 snapshots of 3 random execution points.
- The program hangs in a single system/Kernel/API call. This means that the program request to do something
from the operating system (like opening or reading a file) but the operating system function doesn't return back and thus
cause the program to hang.
- The program hangs because there is an infinite loop, very long loop, or recursive calls.
Here's some information about every section of the WhatIsHang report:
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.
If you can't understand the report...
If you're not a programmer or Windows expert, you may not be able to understand or
analyze the report of WhatIsHang.
In this case, you can try to...
In order to send the report (to NirSoft or anybody else) press F8 to copy the entire
report to the clipboard, and then paste it with Ctrl+V inside the email message.
- Send the report of WhatIsHang to the support of the software that hangs.
Their programmers/support team might be able to find out what is the problem.
- Send the report to NirSoft Web site by using this contact page,
with a small description of the problem. sending this report will help me to improve
WhatIsHang in future versions and to make it more friendly for users without programming/Windows knowledge.
All Threads Report
Starting from version 1.05, there is a new experimental report that displays information
about all running threads instead of showing only the main user interface thread that stopped responding.
This type of report might be useful when multiple threads are involved in the hanging problem (For example when the main user interface thread waits for another thread to finish).
You can get this report by pressing Ctrl+F9. be aware that this report might be very large on
Translating WhatIsHang to other languages
In order to translate WhatIsHang to other language, follow the instructions below:
- Run WhatIsHang with /savelangfile parameter:
A file named WhatIsHang_lng.ini will be created in the folder of WhatIsHang utility.
- Open the created language file in Notepad or in any other text editor.
- Translate all string entries to the desired language.
Optionally, you can also add your name and/or a link to your Web site.
(TranslatorName and TranslatorURL values) If you add this information, it'll be
used in the 'About' window.
- After you finish the translation, Run WhatIsHang, and all translated
strings will be loaded from the language file.
If you want to run WhatIsHang without the translation, simply rename the language file, or move
it to another folder.
This utility is released as freeware.
You are allowed to freely distribute this utility via floppy disk, CD-ROM,
Internet, or in any other way, as long as you don't charge anything for this and you don't
sell it or distribute it as a part of commercial product.
If you distribute this utility, you must include all files in
the distribution package, without any modification !
The software is provided "AS IS" without any warranty, either expressed or implied,
including, but not limited to, the implied warranties of merchantability and fitness
for a particular purpose. The author will not be liable for any special, incidental,
consequential or indirect damages due to loss of data or any other reason.
If you have any problem, suggestion, comment, or you found a bug in my utility,
you can send a message to email@example.com
WhatIsHang is also available in other languages. In order to change the language of
WhatIsHang, download the appropriate language zip file, extract the 'whatishang_lng.ini',
and put it in the same folder that you Installed WhatIsHang utility.