Changes between Initial Version and Version 1 of Ticket #3295


Ignore:
Timestamp:
Jun 11, 2009 2:34:07 PM (6 years ago)
Author:
simonmar
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #3295

    • Property Owner set to simonmar
    • Property Difficulty changed from to Unknown
    • Property Milestone changed from to 6.12.1
    • Property Priority changed from normal to high
  • Ticket #3295 – Description

    initial v1  
    66 
    77It also only happens when +RTS -N2 or a greater number of threads is passed to the runtime. It doesn't happen when -g1 is passed to turn off distributed garbage collection. 
    8  
     8{{{ 
    99Program received signal SIGSEGV, Segmentation fault. 
    1010[Switching to Thread 1241594176 (LWP 20751)] 
     
    5454  2 Thread 1082132800 (LWP 20732)  0x00002aae2fa22548 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0 
    5555  1 Thread 46927615298704 (LWP 20729)  0x00002aae2fa20553 in pthread_cond_signal@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 
    56  
     56}}} 
    5757The values of *task and the thread in which the crash occurs is not always consistent, but the stacktrace is. For example, another crash... 
    58  
     58{{{ 
    5959(gdb) bt 
    6060#0  0x000000000067262c in schedule (initialCapability=<value optimized out>, task=0x9b4930) at rts/Schedule.c:672 
     
    9494  2 Thread 1082132800 (LWP 20825)  0x00002aae0cee86e2 in select () from /lib64/libc.so.6 
    9595  1 Thread 46927031233680 (LWP 20824)  0x00002aae0cd1c2ef in pthread_mutex_lock () from /lib64/libpthread.so.0 
    96  
     96}}} 
    9797valgrind memcheck does not report any errors prior to the NULL deref: 
     98{{{ 
    9899==20983== Thread 2: 
    99100==20983== Invalid read of size 8 
     
    105106==20983==  
    106107==20983== Process terminating with default action of signal 11 (SIGSEGV) 
    107  
     108}}} 
    108109valgrind helgrind reports numerous possible data race conditions, including one between schedule and GarbageCollect just prior to the crash: 
     110{{{ 
    109111==21106== Possible data race during read of size 8 at 0x5ccc300 by thread #5 
    110112==21106==    at 0x672612: schedule (Schedule.c:367) 
     
    120122==21106==    by 0x67009D: hs_main (RtsMain.c:117) 
    121123==21106==    by 0x5A17183: (below main) (in /lib64/libc-2.4.so) 
     124}}} 
    122125 
    123126I am still working on whether I can make a small program to reproduce this.