Go to main content
Oracle® Developer Studio 12.6: Thread Analyzer User's Guide

Exit Print View

Updated: June 2017
 
 

Instrumenting the Application for Data Race Detection

Tips for instrumenting an application for data race detection before collecting an experiment:

  • The collect -r race command issues a warning if the binary is not instrumented for data race detection, as shown here:

    % collect -r race a.out
      WARNING: Target `a.out' is not instrumented for datarace
      detection; reported datarace data may be misleading
  • You can determine whether a binary is instrumented for data race detection by using the nm command and looking for calls to tha routines. If routines whose names begin with __tha_ are shown, the binary is instrumented. Example output is shown below.

    Source-level instrumentation:

    % cc -xopenmp -g -xinstrument=datarace source.c
    % nm a.out | grep __tha_
      [71] | 135408| 0|FUNC |GLOB |0 |UNDEF |__tha_get_stack_id
      [53] | 135468| 0|FUNC |GLOB |0 |UNDEF |__tha_src_read_w_frame
      [61] | 135444| 0|FUNC |GLOB |0 |UNDEF |__tha_src_write_w_frame

    Binary-level instrumentation:

    % cc -xopenmp -g source.c
    % discover -i datarace -o a.out.i a.out
    % nm a.out.i | grep __tha_
      [88] | 0| 0|NOTY |GLOB |0 |UNDEF |__tha_read_w_pc_frame
      [49] | 0| 0|NOTY |GLOB |0 |UNDEF |__tha_write_w_pc_frame