User Guide

  • 2020
  • 10/21/2020
  • Public Content
Contents

Pane: Analysis Type-Threading Errors

Pane position in window
Before Analysis
(One way) To access this
Intel Inspector
pane:
Choose
File
New
Analysis...
. Then choose
Threading Error Analysis
from the Analysis Type drop-down list.
Use this pane on the
Analysis Type
window to:
  • Choose and, if necessary, fine-tune a preset threading error analysis type.
  • Configure a threading error analysis to investigate problems in an interactive debugging session.
If the combination of analysis type settings in the preset threading error analysis types does not meet your needs at all, try creating a custom threading error analysis type.
During Analysis
To access this pane: Click the
Analysis Type
button on the
Navigation
toolbar.
Use this to review the analysis type settings for this analysis run.
After Analysis Is Complete
To access this pane: Click the
Analysis Type
button on the
Navigation
toolbar.
Use this pane to:
  • Review the analysis type settings for this analysis run.
  • Re-inspect - run another analysis using the same analysis type settings.
Use This
To Do This
Analysis Type drop-down list
Switch to another category of analysis types.
Configuration slider
Choose a preset analysis type (drag slider).
Analysis Time Overhead
gauge
Analysis Time gauge
Quickly estimate the time it may take to collect a result using various preset analysis types. Time is expressed in relation to normal application execution time.
For example, 2x - 20x is 2 to 20 times longer than normal application execution time. If normal application execution time is 5 seconds, estimated collection time is 10 to 100 seconds.
Memory Overhead
gauge
Memory Overhead gauge
The
Memory Overhead
gauge helps you quickly estimate the memory the
Intel Inspector
may consume to detect errors using this preset analysis type. Memory is expressed in blue-filled bars.
The gauge does not show memory used by the running application during analysis.
Copy
button
Create a new custom analysis type based on the currently selected analysis type.
Analyze without debugger
radio button
Select to run an analysis without launching an interactive debugging session. Useful for investigating all types of memory and threading problems.
You can later use the
Debug This Problem
function from within a result to launch a new analysis in conjunction with a debugger to stop at problems of interest. The rerun analysis is automatically focused to find the selected problems, making it return to the problems more quickly. The
Debug This Problem
function is the recommended method for investigating threading errors in an interactive debugging session.
Enable debugger when problem detected
radio button
Select to allow investigation of every problem detected in an interactive debugging session. Useful for investigating all types of memory problems except memory and resource leaks.
Select analysis start location with debugger
radio button
Select to allow investigation of problems in a particular area of code during an interactive debugging session. Typical scenario: You need to check for errors in a specific section of application code, but the
Intel Inspector
does not provide the appropriate granularity to analyze only that code section. This option quickly takes you near that execution point in a debugging session. Useful for investigating all types of memory problems except memory and resource leaks.
You can also use this option to investigate all types of threading errors, but it may be quicker to use the
Debug This Problem
function in a result if you plan to investigate a single threading problem.

Configurable Threading Error Analysis Type Settings

The following list shows the configurable settings (in alphabetical order) for preset threading analysis types.
Configurable
means you can change the setting without creating a custom analysis type.
  • Remove duplicates
    checkbox (configurable for the
    Locate Deadlocks and Data Races
    analysis type only)
  • Scope
    drop-down list (configurable for the
    Locate Deadlocks and Data Races
    analysis type only)
  • Stack frame depth
    drop-down list
  • Terminate on deadlock
    checkbox
  • Use maximum resources
    checkbox (configurable for the
    Locate Deadlocks and Data Races
    analysis type only)

Threading Error Analysis Type Settings

Use the
Details
region to review current analysis type settings. The following table describes the purpose, usefulness, and
cost
(low, medium, high, or proportional in terms of time and resources) for each threading error analysis type configuration setting. (The settings are listed in alphabetical order.)
Setting
Purpose, Usefulness, and Cost
Cross-thread stack access detection
Use to set the alert mechanism for when a thread accesses stack memory of another thread.
The alert mechanism helps you decide if this is an issue that requires handling.
All options are low
cost
if
Detect data races
is selected.
Recommendation:
  • Use
    Hide problems/Hide warnings
    if using an OpenMP* or Intel® Threading Building Blocks programming model; or if cross-thread stack accesses are anticipated. Also select
    Detect races on stack
    .
  • Use
    Hide problems/Show warnings
    if cross-thread stack accesses are not anticipated. Also deselect
    Detect data races on stack
    .
  • Use
    Show problems/Hide warnings
    if cross-thread stack accesses are not anticipated but a previous analysis indicated they exist and you are not using an OpenMP* or Intel Threading Building Blocks programming model. Also deselect
    Detect data races on stack
    .
Detect data races
Select to detect problems where multiple threads access the same memory location without proper synchronization and at least one access is a write.
Selecting is useful when you suspect data races that are not yet evident.
High
cost
.
Recommendation: Select. Consider also deselecting
Use maximum resources
to reduce cost.
Detect data races on stack
(previously called Detect data races on stack accesses)
Available only if
Detect data races
is selected.
Select to detect data races for variables allocated on the stack.
Selecting is useful when threads in an application share variables from the stack and you suspect data races on the variables.
High
cost
.
Recommendation: Deselect. If you select, consider also deselecting
Use maximum resources
to reduce cost.
Detect deadlocks
Select to detect problems where two or more threads are waiting for the other to release resources, but none of the threads releases the resources. Thus no thread can proceed.
Selecting is useful when you want to troubleshoot the location of a deadlock.
Low
cost
.
Detect lock hierarchy violations
Select to detect problems where the acquisition hierarchy order of multiple synchronization objects in one thread differs from the acquisition hierarchy order in another thread, and could cause a deadlock under certain conditions.
Selecting is useful when an application has complicated synchronization and it is hard to verify correctness.
Low
cost
unless an application has a significant number of locks.
Filter guaranteed atomics
Available only if
Detect data races
is selected.
Select to ignore data races on guaranteed atomic operations on the Intel® P6 processor family or newer. For details, please refer to the
Guaranteed Atomic Operations
section of the .
Selecting is useful if you observe many false data race reports on simple operations like Load or Store to shared variables and the size of those variables is less than the processor cache line size.
Do not select this option if you develop cross-platform code that should work on other architectures.
Selecting this option might also hide true-races on variables that were properly aligned during this run but might not be aligned in general, e.g., if it just works “by chance”.
Low
cost
.
Recommendations: Use this option with caution only if you observe many false reports on simple memory operations.
Race analysis byte granularity
(previously called Memory access byte granularity
)
Available only if
Detect data races
is selected.
Use to set the size of the smallest memory block the
Intel Inspector
considers a single block of memory when determining if non-synchronized accesses to a memory block constitute a data race.
Selecting is useful to control memory consumption during analysis for some applications.
High
cost
when set to 1 byte.
Recommendation: Set to 4 unless you continually see data races based on safe access to smaller memory blocks. If so, reset to 1.
Remove duplicates
Deselect to show all occurrences of a detected problem in the
Code Locations
pane.
Deselecting is:
  • Useful when you need to fully visualize all threads and problem occurrences in relation to time
  • Low
    cost
    in terms of time; however, the number of duplicate errors could crowd out the number of unique errors.
Recommendation: Select.
Save stack on first access
Available only if
Detect data races
is selected.
Select to show as much information as possible on all threads involved in a data race.
Selecting is useful when investigating complex data race problems.
High
cost
.
Recommendation: Deselect on initial analysis runs. Select only when you need the maximum information and context about all threads involved in a data race to solve the problem.
Save stack on lock creation
Select to show creation information on synchronization objects involved in deadlocks, lock hierarchy violations, and data races.
Selecting is useful when acquisition stacks are not sufficient to understand the problem.
Low
cost
.
Save stack on memory allocation
(previously called Save stack on allocation)
Available only if
Detect data races
is selected.
Select to identify the allocation site of dynamically allocated memory objects involved in data races.
Medium
cost
.
Recommendation: Select when you need to identify the object hierarchy of low-level objects involved in data races. For example: If object R is involved in a data race and is instantiated within objects O1, O2, and O3, the allocation call stack can help you identify which encapsulating object is not properly protecting access to object R.
Stack frame depth
Use to provide more or less call stack context for detected errors.
A high setting is useful when analyzing highly object-oriented applications.
A higher number does not significantly impact
cost
with one exception: Choosing a higher number plus selecting
Save stack on first access
increases
cost
.
Recommendation: Use only as large a value as an application requires to display complete call paths.
Terminate on deadlock
Available only if
Detect deadlocks
is selected.
Select to stop analysis and application execution if the
Intel Inspector
detects a deadlock.
Selecting is useful when running your application as part of a kernel or unit testing suite.
Low
cost
.
Recommendation: Deselect. Instead, use the corresponding knob in the command line interface to perform kernel or unit testing in a nightly scenario. If the
Intel Inspector
identifies a deadlock, decide if it is appropriate to continue analysis.
Use maximum resources
Select to potentially find more problems.
High
cost
.
Recommendation: Deselect to run a quicker analysis that should find most of your data race and cross-thread stack access problems. Once you have found and fixed these problems, select to get more complete analysis coverage of possible data race and cross-thread stack access problems.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804