IBM Support

LI77683: Incorrect DWARF for threadprivate common block

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Incorrect DWARF information is found for threadprivate common
    block in TLS.
    
    Consider the following test case.
    
    ===== TESTCASE:
    $cat tx_omp_f_threadprivate.f90
    ! "Parallel Programming in OpenMP" ISBN 1-55860-671-8
    ! Copyright 2001 by Academic Press
    ! Example 4.7 (pp 104-105) with slight modifications
    
          program correct
          integer omp_get_num_threads, omp_get_thread_num
          integer iarray(100), N, nthreads, iam, chunk, istart, iend
          common /bounds/ istart, iend
    !$omp threadprivate(/bounds/)
    
          N = 100
    !$omp parallel private(nthreads, iam, chunk)
    
          ! Compute the subset of iterations executed by each thread
          nthreads = omp_get_num_threads()
          iam = omp_get_thread_num()
          chunk = (N + nthreads - 1)/nthreads
          istart = iam * chunk + 1
          iend = min((iam + 1) * chunk, N)
    !      print *, nthreads, iam, chunk, istart, iend
    
          call work(iarray)
    !$omp end parallel
          print *
          print *, iarray
          PRINT *, "Hello, World."
          end
    
          subroutine work(iarray)
    
          integer iarray(100), istart, iend, i
          common /bounds/ istart, iend
    !$omp threadprivate(/bounds/)
    
          do i = istart, iend
              iarray(i) = i * i
          enddo
          return
          end
    
    
    bgxlf90_r -qsmp=omp:noauto:noopt -g -q64 -qnosave
    tx_omp_f_threadprivate.f90 -o tx_omp_f_threadprivate.bgq
    
    readelf --debug-dump=info tx_omp_f_threadprivate.bgq|grep
    DW_TAG_common_block -A18
    
    The resulted
    
    <2><18d>: Abbrev Number: 12 (DW_TAG_common_block)
        <18e>   DW_AT_sibling     : 0x0 0x1e2
        <196>   DW_AT_location    : 9 byte block: 3 0 0 0 0 10 1 12
    78      (DW_OP_addr: 10011278)
        <1a0>   DW_AT_name        : bounds
    
    The DWARF DW_AT_location does not reflect the fact that the
    common block named /bounds/ is in TLS. The members of the
    common block should be offsets from the beginning of /bounds/,
    which is in TLS.
    

Local fix

  • n/a
    

Problem summary

  • PROBLEM DESCRIPTION: The DWARF DW_AT_location does not reflect
    the fact that the common block member is in TLS.
    
    USERS AFFECTED: users who want to debug with -qsmp option
    

Problem conclusion

  • Added the correct location attribute to the dwarf info and the
    issue was fixed
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI77683

  • Reported component name

    XL FORTRAN FOR

  • Reported component ID

    5799AH100

  • Reported release

    E10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-11-26

  • Closed date

    2014-02-18

  • Last modified date

    2014-02-19

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    LI77823 IV56781

Fix information

  • Fixed component name

    XL FORTRAN FOR

  • Fixed component ID

    5799AH100

Applicable component levels

  • RE10 PSY

       UP

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS2MB5","label":"XL Fortran for Blue Gene\/Q"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"ALL VERSIONS","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
19 February 2014