Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find out more about Application Hang event?

If a VB6 app is causing an Application Hang event to appear in the Event Viewer, how can I find out more about why the application is hanging?

Does an Application Hang event mean that the app has frozen and crashed, or just that it temporarily hangs?

All I get in the event log for this event is:

Hanging application [MyAppName].exe, version [MyAppVersionNo], hang module hungapp, version 0.0.0.0, hang address 0x00000000.

That is not enough and I want to be able to find out more about why it is hanging. What code changes or other steps need to be taken to cause the app to provide more details in the event log?

like image 504
CJ7 Avatar asked Apr 05 '12 12:04

CJ7


People also ask

How can I find which applications are hanging on Windows 8?

How can I find which applications are hanging on my desktop computer that is running Windows 8? Use the Get-EventLog cmdlet to query the application log for InstanceID 1002 and a source of *hang*. Select TimeWritten and Message to see what applications are hanging and when these hangs occur.

What to do when an application hangs?

Scoping the Issue: For application hangs, there are a couple of things that you can do. First, check Task Manager. If the process is unresponsive but is not listed as "Not Responding" in Task Manager, then the application may be functioning normally but is waiting for data - possibly from a network resource.

How do I view an application's event log?

While developing software, you may encounter errors that are recorded in the application event log: Click the Windows Start button. In Windows Vista, type Event Viewer in the Start Search field. In Windows XP, click All Programs, click Administrative Tools, and then click Event Viewer.

What does application hang 1002 mean?

The event ID (1002 - Application hang) is a generic error event which occurs when application stops responding. It indicates that something has happened with the process, but provides no description of what might have happened.


2 Answers

I recommend using the Windows Performance Toolkit. The best version to use is in the Windows Assessment & Deployment Kit, http://www.microsoft.com/download/en/details.aspx?id=28997

Once it's installed, what you do is start up Windows Performance Recorder (WPR) and click the Start button to begin recording. Next, reproduce the problem with your app. Then go back to WPR and press the Save button. Next, load up Windows Performance Analyzer and open that *.ETL file that was generated. Then you want to go to System Activity section in the Graph Explorer, expand it, and find the UI Delays graph (or it might be the first graph parked on System Activity). Double click on it to get the detailed version in an Analysis tab.

Once you find the UI delay you're interested in, you can add another graph such as CPU Usage (Sampled) from the Processing node in Graph Explorer. When the two graphs are in the same Analysis tab, their scrolling and selection will be synchronized. So you can click on the UI delay event and it will also highlight the corresponding range in CPU Usage.

like image 194
Rick Brewster Avatar answered Sep 22 '22 17:09

Rick Brewster


The Application Hang event means that Windows has decided that the application is unresponsive. Since the event is generated by the operating system and not the application, your options for getting additional information in the event are extremely limited.

This is what seems to be available on an Application Hang event:

Message: Hanging application %1, version %2, hang module %3, version %4, hang address 0x%5.

From:

http://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=1002&EvtSrc=Application+Hang&LCID=1033

If you believe the cause of the event is something that your application does (as opposed to something in the environment where the application is running), then instead of trying to pass info to the hang event, you should raise the level of log info to debug mode and look in your application's log file to see what it is doing just prior to becoming unresponsive.

If you lack logging information, or a logging framework in your application, then that is where you should be focusing your efforts. The upside is that you will benefit from better logging in the future as well. Use a logging framework however, so you can disable debug level logging in a production environment, when everything is running smoothly.

like image 27
SPE Avatar answered Sep 21 '22 17:09

SPE