https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61604
Bug ID: 61604
Summary: missing line numbers in a sanitizer backtrace from an
OMP region
Product: gcc
Version: 4.10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: Joost.VandeVondele at mat dot ethz.ch
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
as an example, the following program with leak:
> cat test.f90
SUBROUTINE S1()
INTEGER, POINTER, DIMENSION(:) :: a
!$OMP PARALLEL DEFAULT(PRIVATE)
ALLOCATE(a(100))
!$OMP END PARALLEL
END SUBROUTINE
PROGRAM TEST
CALL S1()
END PROGRAM TEST
yields:
> gfortran -O1 -g3 -fno-omit-frame-pointer -fsanitize=leak -fopenmp test.f90 ;
> export OMP_NUM_THREADS=2 ; ./a.out
=================================================================
==22952==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 400 byte(s) in 1 object(s) allocated from:
#0 0x7f3b6d8ce1bc in __interceptor_malloc
../../../../gcc/libsanitizer/lsan/lsan_interceptors.cc:66
#1 0x400865 in s1_._omp_fn.0 (/data/vjoost/gnu/bugs/a.out+0x400865)
#2 0x7f3b6e52463e in GOMP_parallel ../../../gcc/libgomp/parallel.c:167
Direct leak of 400 byte(s) in 1 object(s) allocated from:
#0 0x7f3b6d8ce1bc in __interceptor_malloc
../../../../gcc/libsanitizer/lsan/lsan_interceptors.cc:66
#1 0x400865 in s1_._omp_fn.0 (/data/vjoost/gnu/bugs/a.out+0x400865)
#2 0x7f3b6e52776d in gomp_thread_start ../../../gcc/libgomp/team.c:117
SUMMARY: LeakSanitizer: 800 byte(s) leaked in 2 allocation(s).
unfortunately, there are no line numbers but only
#1 0x400865 in s1_._omp_fn.0 (/data/vjoost/gnu/bugs/a.out+0x400865)
making it hard to find the location of the allocate, in complex code.