Missing End Task

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

Problem type: Missing end task

ID

Code Location

Description

1

Task start

Represents the location and associated call stack when the task began execution.

2

Parallel site

If present, represents the location and associated call stack of the beginning of the parallel site that contained the task.

Example

void main()
{
    ANNOTATE_SITE_BEGIN(site_name);
        ANNOTATE_TASK_BEGIN(taskname1);
    ANNOTATE_SITE_END();
}

This example lacks an end-task annotation, ANNOTATE_TASK_END().

Note

An error also occurs if your code branches around a single ANNOTATE_TASK_END() annotation.

Possible Correction Strategies

Always execute an ANNOTATE_TASK_BEGIN(taskname) annotation before executing an ANNOTATE_SITE_END() annotation. This omission can be caused by throw exceptions, return, break, continue, and goto statements or keywords. All control flow paths out of a site need to use the ANNOTATE_TASK_END() annotations.

For more information about annotating tasks, see the general discussion of task annotations in About Annotations, as well as either Site and Task Annotations for Simple Loops With One Task, or Site and Task Annotations for Loops with Multiple Tasks (use the links under See Also below).

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