https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81591

            Bug ID: 81591
           Summary: segmentation fault when using priorities of nested
                    tasks
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sistek at seznam dot cz
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

Hello,

we develop the PLASMA numerical library (https://bitbucket.org/icl/plasma)
using OpenMP tasks. We are suffering from a problem with tasks with priorities
in the recent GOMP library.

In particular, if we prescribe priorities on nested tasks, the code sometimes
produces a segfault in the priority_list_downgrade_task function.

I attach the output from gdb below. It seems that the 
priority_queue_lookup_priority
function returns NULL on line 941 of task.c
Then, in the following call to the
priority_list_downgrade_task
function on line 942, the empty pointer is accessed, resulting in the
exception.

Is it a bug in gomp or on our side?

Thank you very much for your help.

Best wishes,

Jakub Sistek


Thread 1 "test" received signal SIGSEGV, Segmentation fault.
0x00007ffff393b220 in priority_list_downgrade_task (list=0x0, list=0x0,
child_task=0x7fffa4000a70, type=PQ_CHILDREN) at
../../../gcc_svn/libgomp/task.c:876
876       if (list->tasks == node)
(gdb) where
#0  0x00007ffff393b220 in priority_list_downgrade_task (list=0x0, list=0x0,
child_task=0x7fffa4000a70, type=PQ_CHILDREN) at
../../../gcc_svn/libgomp/task.c:876
#1  priority_queue_downgrade_task (task=0x7fffa4000a70, head=0xecfb08,
type=PQ_CHILDREN) at ../../../gcc_svn/libgomp/task.c:942
#2  gomp_task_run_pre (team=<optimized out>, parent=0xecfb00,
child_task=0x7fffa4000a70) at ../../../gcc_svn/libgomp/task.c:972
#3  GOMP_taskwait () at ../../../gcc_svn/libgomp/task.c:1359
#4  0x00007ffff7a51c99 in plasma_pdamax () from
/home/sistek/programming/plasma_jakub_sistek/lib/libplasma.so
#5  0x00007ffff7a2d80c in plasma_omp_dsgesv () from
/home/sistek/programming/plasma_jakub_sistek/lib/libplasma.so
#6  0x00007ffff7a2ede7 in plasma_dsgesv._omp_fn () from
/home/sistek/programming/plasma_jakub_sistek/lib/libplasma.so
#7  0x00007ffff3937a6f in GOMP_parallel (fn=0x7ffff7a2e4cc
<plasma_dsgesv._omp_fn>, data=0x7fffffffca10, num_threads=4, flags=0)
    at ../../../gcc_svn/libgomp/parallel.c:168
#8  0x00007ffff7a2ca8e in plasma_dsgesv () from
/home/sistek/programming/plasma_jakub_sistek/lib/libplasma.so
#9  0x00000000005f96f9 in test_dsgesv ()
#10 0x000000000049ce3b in run_routine ()
#11 0x000000000049c89b in test_routine ()
#12 0x000000000049c446 in main ()
(gdb)

Reply via email to