Root > Integral parts > Options > Features page > Hang detection page

Hang detection page

Previous pageReturn to chapter overviewNext page   

This is "Hang detection" page in EurekaLog project's options.

 

 

Hang detection options

 

This page allows you to configure hang and deadlock detection feature in EurekaLog.

 

1. "Activate UI hang detection with timeout" option enables EurekaLog to monitor running application for hangs. A timeout (in seconds) indicate how long UI must be unresponsive to be detected as "hang".

 

High values will result in longer hang detection.

Low values will result in false-positive triggering.

 

Recommended value is 4 seconds.

 

Notes:

System default timeout for hang detection is 5 seconds. Thus system hang detection dialog may be triggered before EurekaLog's hang detection, if you would set timeout value to large values (larger than 5 seconds).
EurekaLog is able to detect hang of only the main thread on pre-Vista systems. EurekaLog uses SendMessageTimout function to detect whenever main thread is not able to receive messages (i.e. it hangs).
EurekaLog is able to detect deadlock between any EurekaLog-enabled threads on Vista+ systems. EurekaLog uses Wait Chain Traversal (WCT) to detect whenever there is a deadlock between two or more EurekaLog-enabled threads.
All EurekaLog-enabled threads are included in hang bug report - regardless of "Capture stack of EurekaLog-enabled threads" option.

 

 

2. "Disable under debugger" (.FreezeDisableUnderDebugger) option will disable hang detection feature if you run your application under debugger. The hang detection will be enabled when application run outside of IDE/debugger.

 

Note: this option has no effect if "Activate UI hang detection with timeout" option is not checked.

 

Important note: it is recommended to enable this option when debugging your application. Time spend in the debugger will be accounted for non-responding time of your application. Thus, a hang report may be triggered while you are debugging your application. Use this option to avoid such false-positive reports.

 

 

3. "Capture stack of RTL threads" (.csoShowRTLThreads) option includes call stacks of all RTL threads in application. By default only hanged thread and EurekaLog-enabled threads are captured.

 

"RTL threads" means thread started with TThread or BeginThread.

 

It is recommended to keep this option off and use TThreadEx and BeginThreadEx or SetEurekaLogStateInThread.

Turn this option on to capture call stack of external RTL threads (that is threads started by 3rd party code without your control).

 

Note: capturing call stack of an external thread requires thread's suspending. In rare case this can cause deadlock issues (for example: thread may be suspended when it is running memory allocation function; thus, any further memory alloc/release operation will block application forever). Do not enable this option until really needed. See Using EurekaLog in multi-threaded applications for more details.

 

Taking call stack of additional threads will require more time during exception processing.

 

 

4. "Capture stack of Windows threads" (.csoShowWindowsThreads) option includes call stacks of all non-RTL threads in application. By default only hanged thread and EurekaLog-enabled threads are captured.

 

"Windows threads" means thread started with CreateThread.

 

It is recommended to keep this option off and use TThreadEx and BeginThreadEx or SetEurekaLogStateInThread.  Alternatively, you may use "Capture stack of RTL threads" instead.

Turn this option on to capture call stack of external Windows threads (that is threads started by 3rd party code without your control).

 

Note: capturing call stack of an external thread requires thread's suspending. In rare case this can cause deadlock issues (for example: thread may be suspended when it is running memory allocation function; thus, any further memory alloc/release operation will block application forever). Do not enable this option until really needed. See Using EurekaLog in multi-threaded applications for more details.

 

Taking call stack of additional threads will require more time during exception processing.

 

 

See also:




Send feedback... Build date: 2018-11-26
Last edited: 2018-06-14
PRIVACY STATEMENT
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.


Permanent link to this article: https://www.eurekalog.com/help/eurekalog/hang_detection_page.php