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