About Problem and Message Types

The Intel® Advisor Correctness tool identifies data sharing problems and messages as it executes and analyzes your running program. Based on its analysis as it encounters site, task, and other Intel Advisor annotations while executing your serial program, the Correctness Report window lists each problem and message found.

A problem is a small group of closely related observations that indicate an:

  • Error in the target. To fix this type of problem, modify your source code to privatize variables or add synchronization. Rebuild and run this tool again. See the help topic About Fixing Sharing Problems.
  • Error in Intel Advisor annotations. Modify your source code to fix the annotation problem, rebuild, and run this tool again.
  • Warning about lock use. Indicates a situation which is unusual, but not necessarily wrong. Examine your program to determine whether a problem does exist. If needed, Modify your source code to fix the locking problem, rebuild, and run this tool again.

In contrast, a message is simply an Informational remark related to analysis. In most cases, no action is required.

The Intel Advisor Correctness tool generates the following problems and messages:

Problem Type Name Severity and Cause

Dangling Lock

Error. Occurs when a task does not release a lock before the task ends.

Data Communication

Error. Occurs when a task writes a value that a different task reads. If not fixed prior to conversion to parallel code, a Data Communication problem could result in a data race.

Data Communication, Child Task

Error. Occurs when a task writes a value that a different (child) task reads. If not fixed prior to conversion to parallel code, a Data Communication problem could result in a data race.

Inconsistent Lock Use

Warning. Occurs when a task execution accesses a memory location more than once, under the control of different locks.

Lock Hierarchy Violation

Warning. Occurs when two or more locks are acquired in a different order in two task executions, potentially leading to a deadlock when the program's tasks execute in parallel.

Memory Reuse

Error. Occurs when two tasks write to a shared memory location. That is, a task writes to a variable with a new value but does not read the same value generated by a prior task. If not fixed prior to conversion to parallel code, this Memory Reuse problem could result in a data race.

Memory Reuse, Child Task

Error. Occurs when two tasks write to a shared memory location, where a parent task overwrites a variable with a new value that was read by a previously executed child task in the same site. If not fixed prior to conversion to parallel code, this Memory Reuse, Child Task problem could result in a data race.

Memory Watch

Remark. Occurs when a task accesses a memory location marked by an ANNOTATE_OBSERVE_USES annotation. In this case, this problem provides informational feedback only and no action is required. This is useful for finding uses of specified memory locations while a task is executing.

Missing End Site

Error. Occurs when a site-begin annotation is executed but the corresponding site-end annotation is not executed before the thread or application exits.

Missing End Task

Error. Occurs when a task-begin annotation is executed but the corresponding task-end annotation is not executed before the site, thread, or application exits.

Missing Start Site

Error. Occurs when an end-site annotation is executed but there is no active site.

Missing Start Task

Error. Occurs when an end task annotation is executed but there is no active task.

No tasks in parallel site

Warning. Occurs when a parallel site was executed but no task annotations were executed in the dynamic extent of the active parallel site.

One task instance in parallel site

Warning. Occurs when a parallel site was executed but annotations for only one task instance were executed in the dynamic extent of the active parallel site. This may be the expected behavior, or it may indicate an error in the placement of annotations or a data set that is not well suited for parallelism.

Orphaned Task

Error. Occurs when a task-begin annotation is executed that is not within an active parallel site.

Parallel Site Information

Remark. Occurs when execution enters a parallel site. This confirms that your program and its data are executing the annotations you inserted during execution of the Correctness tool analysis. In this case, this message provides informational feedback only and no action is required.

Thread Information

Remark. In this case, this message provides informational feedback and no action is required.

Unhandled Application Exception

Error. Occurs when an unhandled exception is detected that causes the application program to crash.

When needed, you can add special-purpose annotations to inform tell the Correctness tool about programming patterns such as such as user-defined memory allocation, inductive expressions, and reduction variables that look like sharing problems to the Correctness tool but are actually safe. In addition, you can use the ANNOTATE_OBSERVE_USES annotation to request that the Correctness tool provide additional detail about accesses within a specified memory region.

For more complete information about compiler optimizations, see our Optimization Notice.