Hi David,
It seems Test166 (the new condition variable one) sometimes deadlocks. I'm able 
to reliably reproduce with the following:

> ./configure
> make -j2 compiler
> make -j2 compiler
> while true; do make -j2 check; done

(The -j2's are probably irrelevant, but I'm including them for completeness)

On the 40th iteration of the loop it got stuck for me:

> val runTests = fn: string -> bool
> Test028.ML => Passed
> Test166.ML =>

Threads:

> Thread 9 (Thread 0x7faf066fc700 (LWP 29448)):
> #0  pthread_cond_wait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
> #1  0x000055ff143b7e30 in Processes::WaitInfinite(TaskData*, SaveVecEntry*) 
> ()  
> #2  0x000055ff143b7f4f in PolyThreadCondVarWait ()
> #3  0x000055ff1426496d in area1 ()
> #4  0x00007faf0ce71c00 in ?? ()
> #5  0x00007faf066fbe08 in ?? ()
> #6  0x00007faf0fb79040 in ?? () from /lib64/ld-linux-x86-64.so.2
> #7  0x00007faf0e6f0e48 in __GI___libc_malloc (bytes=140389730295024) at 
> malloc.c:2925
> #8  0x000055ff143c5477 in initThreadSignals(TaskData*) ()                     
>      
> #9  0x000055ff143b8990 in NewThreadFunction(void*) ()                         
>      
> #10 0x00007faf0f73f424 in start_thread (arg=0x7faf066fc700) at 
> pthread_create.c:333
> #11 0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
>                                                                               
>                                                                               
>                            
> Thread 8 (Thread 0x7faf06efd700 (LWP 29447)):                                 
>                    
> #0  pthread_cond_wait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185                 
> #1  0x000055ff143b7e30 in Processes::WaitInfinite(TaskData*, SaveVecEntry*) ()
> #2  0x000055ff143b7f4f in PolyThreadCondVarWait ()       
> #3  0x000055ff1426496d in area1 ()                                  
> #4  0x00007faf0ce71c00 in ?? ()                                               
>      
> #5  0x00007faf06efce08 in ?? ()                                               
>      
> #6  0x00007faf0fb79040 in ?? () from /lib64/ld-linux-x86-64.so.2
> #7  0x00007faf0e6f0e48 in __GI___libc_malloc (bytes=140389730294192) at 
> malloc.c:2925
> #8  0x000055ff143c5477 in initThreadSignals(TaskData*) ()                     
>                                                                               
>                            
> #9  0x000055ff143b8990 in NewThreadFunction(void*) ()                         
>                    
> #10 0x00007faf0f73f424 in start_thread (arg=0x7faf06efd700) at 
> pthread_create.c:333                                
> #11 0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
>                                                          
> Thread 7 (Thread 0x7faf076fe700 (LWP 29446)):                       
> #0  pthread_cond_wait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
> #1  0x000055ff143b7e30 in Processes::WaitInfinite(TaskData*, SaveVecEntry*) 
> ()     
> #2  0x000055ff143b7f4f in PolyThreadCondVarWait ()
> #3  0x000055ff1426496d in area1 ()           
> #4  0x00007faf0ce71c00 in ?? ()                                               
>                                                                               
>                                                   
> #5  0x00007faf076fde08 in ?? ()                                               
>                                            
> #6  0x00007faf0fb79040 in ?? () from /lib64/ld-linux-x86-64.so.2              
>                                                              
> #7  0x00007faf0e6f0e48 in __GI___libc_malloc (bytes=140389730242944) at 
> malloc.c:2925
> #8  0x000055ff143c5477 in initThreadSignals(TaskData*) ()
> #9  0x000055ff143b8990 in NewThreadFunction(void*) ()                         
>      
> #10 0x00007faf0f73f424 in start_thread (arg=0x7faf076fe700) at 
> pthread_create.c:333
> #11 0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
>                                              
> Thread 6 (Thread 0x7faf07fff700 (LWP 29445)):                                 
>                               
> #0  pthread_cond_wait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
> #1  0x000055ff143b7237 in Processes::WaitForSignal(TaskData*, PLock*) ()
> #2  0x000055ff143c4f8f in PolyWaitForSignal ()
> #3  0x000055ff13f1b8ba in area1 ()                                            
>                                                                               
>                                                                      
> #4  0x00007faf0ce71c00 in ?? ()    
> #5  0x00007faf07ffee08 in ?? ()
> #6  0x00007faf0fb79040 in ?? () from /lib64/ld-linux-x86-64.so.2
> #7  0x00007faf0e6f0e48 in __GI___libc_malloc (bytes=140389730232720) at 
> malloc.c:2925
> #8  0x000055ff143c5477 in initThreadSignals(TaskData*) ()
> #9  0x000055ff143b8990 in NewThreadFunction(void*) ()
> #10 0x00007faf0f73f424 in start_thread (arg=0x7faf07fff700) at 
> pthread_create.c:333     
> #11 0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105  
> 
> Thread 5 (Thread 0x7faf0ce72700 (LWP 29444)):
> #0  pthread_cond_wait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
> #1  0x000055ff143b7e30 in Processes::WaitInfinite(TaskData*, SaveVecEntry*) ()
> #2  0x000055ff143b7f4f in PolyThreadCondVarWait ()
> #3  0x000055ff1426496d in area1 ()
> #4  0x000055ff14b34e00 in gHeapSizeParameters ()
> #5  0x00007faf0ce71e08 in ?? ()
> #6  0x00007faf0fb64000 in ?? ()
> #7  0x000055ff143a7988 in MemMgr::GrowOrShrinkStack(TaskData*, unsigned long) 
> ()
> #8  0x000055ff15c76870 in ?? ()
> #9  0x000055ff15c76870 in ?? ()
> #10 0x000055ff15c76660 in ?? ()
> #11 0x000055ff15c76668 in ?? ()
> #12 0x000055ff143c9681 in X86TaskData::EnterPolyCode() ()
> #13 0x000055ff143b8990 in NewThreadFunction(void*) ()
> #14 0x00007faf0f73f424 in start_thread (arg=0x7faf0ce72700) at 
> pthread_create.c:333
> #15 0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
> 
> Thread 4 (Thread 0x7faf0d673700 (LWP 29443)):
> #0  0x00007faf0f747536 in futex_abstimed_wait_cancelable (private=0, 
> abstime=0x0, expected=0, futex_word=0x55ff14b34b40 <gTaskFarm>) at 
> ../sysdeps/unix/sysv/linux/futex-internal.h:205
> #1  do_futex_wait (sem=sem@entry=0x55ff14b34b40 <gTaskFarm>, abstime=0x0) at 
> sem_waitcommon.c:111
> #2  0x00007faf0f7475e4 in __new_sem_wait_slow (sem=0x55ff14b34b40 
> <gTaskFarm>, abstime=0x0) at sem_waitcommon.c:181
> #3  0x000055ff143a61a3 in PSemaphore::Wait() ()
> #4  0x000055ff143a313d in GCTaskFarm::ThreadFunction() ()
> #5  0x000055ff143a3229 in GCTaskFarm::WorkerThreadFunction(void*) ()
> #6  0x00007faf0f73f424 in start_thread (arg=0x7faf0d673700) at 
> pthread_create.c:333
> #7  0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
> 
> Thread 3 (Thread 0x7faf0de74700 (LWP 29442)):
> #0  0x00007faf0f747536 in futex_abstimed_wait_cancelable (private=0, 
> abstime=0x0, expected=0, futex_word=0x55ff14b34b40 <gTaskFarm>) at 
> ../sysdeps/unix/sysv/linux/futex-internal.h:205
> #1  do_futex_wait (sem=sem@entry=0x55ff14b34b40 <gTaskFarm>, abstime=0x0) at 
> sem_waitcommon.c:111
> #2  0x00007faf0f7475e4 in __new_sem_wait_slow (sem=0x55ff14b34b40 
> <gTaskFarm>, abstime=0x0) at sem_waitcommon.c:181
> #3  0x000055ff143a61a3 in PSemaphore::Wait() ()
> #4  0x000055ff143a313d in GCTaskFarm::ThreadFunction() ()
> #5  0x000055ff143a3229 in GCTaskFarm::WorkerThreadFunction(void*) ()
> #6  0x00007faf0f73f424 in start_thread (arg=0x7faf0de74700) at 
> pthread_create.c:333
> #7  0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
> 
> Thread 2 (Thread 0x7faf0e675700 (LWP 29441)):
> #0  0x00007faf0f747536 in futex_abstimed_wait_cancelable (private=0, 
> abstime=0x0, expected=0, futex_word=0x55ff14b35fc0 
> <SigHandler::Init()::waitSemaphore>) at 
> ../sysdeps/unix/sysv/linux/futex-internal.h:205
> #1  do_futex_wait (sem=sem@entry=0x55ff14b35fc0 
> <SigHandler::Init()::waitSemaphore>, abstime=0x0) at sem_waitcommon.c:111
> #2  0x00007faf0f7475e4 in __new_sem_wait_slow (sem=0x55ff14b35fc0 
> <SigHandler::Init()::waitSemaphore>, abstime=0x0) at sem_waitcommon.c:181
> #3  0x000055ff143a61a3 in PSemaphore::Wait() ()
> #4  0x000055ff143c4c91 in SignalDetectionThread(void*) ()
> #5  0x00007faf0f73f424 in start_thread (arg=0x7faf0e675700) at 
> pthread_create.c:333
> #6  0x00007faf0e75e9bf in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
> 
> Thread 1 (Thread 0x7faf0fb49740 (LWP 29440)):
> #0  pthread_cond_timedwait@@GLIBC_2.3.2 () at 
> ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
> #1  0x000055ff143a604e in PCondVar::WaitFor(PLock*, unsigned int) ()
> #2  0x000055ff143b8c9f in Processes::BeginRootThread(PolyObject*) ()
> #3  0x000055ff143aaf13 in polymain ()
> #4  0x00007faf0e6962b1 in __libc_start_main (main=0x55ff13f15dc0 <main>, 
> argc=1, argv=0x7ffe94073258, init=<optimized out>, fini=<optimized out>, 
> rtld_fini=<optimized out>, stack_end=0x7ffe94073248) at 
> ../csu/libc-start.c:291
> #5  0x000055ff13f1661a in _start ()

Any ideas? This is on Debian amd64 unstable, but I've seen it on non-x86 
architectures too with the latest version. Interestingly I can't seem to 
reproduce it on macOS.

Regards,
James

> On 21 Feb 2017, at 12:48, David Matthews <david.matth...@prolingua.co.uk> 
> wrote:
> 
> The latest version, provisionally called 5.6.1, has had very little change 
> for several months.  I'm not aware of any show-stoppers so I think it would 
> be a good time to make a release.  Because there have been some major changes 
> I was planning to call it 5.7.  This is the last chance to do any last tests 
> before the release.
> 
> David
> _______________________________________________
> polyml mailing list
> polyml@inf.ed.ac.uk
> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to