October 06, 2019 [Issue 20270] New: [REG2.087] Deadlock in garbage collection when running processes in parallel | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=20270 Issue ID: 20270 Summary: [REG2.087] Deadlock in garbage collection when running processes in parallel Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: regression Priority: P1 Component: druntime Assignee: nobody@puremagic.com Reporter: dlang-bugzilla@thecybershadow.net CC: r.sagitario@gmx.de ///////////// test.d ///////////// import std.parallelism; import std.process; import std.range; void main() { foreach (i; 200.iota.parallel) execute(["true"]); } ////////////////////////////////// This program has a roughly 60% chance to deadlock and never finish executing on my machine. Inspecting the program's state with a debugger shows that the threads are generally in one of these states: Thread 11 (Thread 0x7f2a80ff9700 (LWP 424924)): #0 0x00007f2a89b82b12 in sigsuspend () from /usr/lib/libc.so.6 #1 0x0000563bd079bb08 in core.thread.thread_suspendHandler(int).op(void*) () #2 0x0000563bd079bb68 in core.thread.callWithStackShell(scope void(void*) nothrow delegate) () #3 0x0000563bd079ba95 in thread_suspendHandler () #4 <signal handler called> #5 0x00007f2a89e8da6a in read () from /usr/lib/libpthread.so.0 ... Thread 10 (Thread 0x7f2a817fa700 (LWP 424923)): #0 0x00007f2a89b82b12 in sigsuspend () from /usr/lib/libc.so.6 #1 0x0000563bd079bb08 in core.thread.thread_suspendHandler(int).op(void*) () #2 0x0000563bd079bb68 in core.thread.callWithStackShell(scope void(void*) nothrow delegate) () #3 0x0000563bd079ba95 in thread_suspendHandler () #4 <signal handler called> #5 0x00007f2a89c11414 in fork () from /usr/lib/libc.so.6 ... Thread 9 (Thread 0x7f2a81ffb700 (LWP 424922)): #0 0x00007f2a89b82b12 in sigsuspend () from /usr/lib/libc.so.6 #1 0x0000563bd079bb08 in core.thread.thread_suspendHandler(int).op(void*) () #2 0x0000563bd079bb68 in core.thread.callWithStackShell(scope void(void*) nothrow delegate) () #3 0x0000563bd079ba95 in thread_suspendHandler () #4 <signal handler called> #5 0x00007f2a89c515c9 in __lll_lock_wait_private () from /usr/lib/libc.so.6 #6 0x00007f2a89c51a88 in __run_fork_handlers () from /usr/lib/libc.so.6 #7 0x00007f2a89c113e9 in fork () from /usr/lib/libc.so.6 ... Thread 8 (Thread 0x7f2a827fc700 (LWP 424921)): #0 0x00007f2a89b82b12 in sigsuspend () from /usr/lib/libc.so.6 #1 0x0000563bd079bb08 in core.thread.thread_suspendHandler(int).op(void*) () #2 0x0000563bd079bb68 in core.thread.callWithStackShell(scope void(void*) nothrow delegate) () #3 0x0000563bd079ba95 in thread_suspendHandler () #4 <signal handler called> #5 0x00007f2a89e8e145 in nanosleep () from /usr/lib/libpthread.so.0 #6 0x0000563bd077370e in _D4core6thread6Thread5sleepFNbNiSQBf4time8DurationZv () #7 0x0000563bd07b3e2e in core.internal.spinlock.SpinLock.yield(ulong) shared () #8 0x0000563bd07b3dc4 in core.internal.spinlock.SpinLock.lock() shared () #9 0x0000563bd07c9307 in _D2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCeQCeQCcQCnQBs12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQEgQEgQEeQEp10mallocTimelS_DQFiQFiQFgQFr10numMallocslTmTkTmTxQCzZQFcMFNbKmKkKmKxQDsZQDl () #10 0x0000563bd07c1456 in _D2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkxC8TypeInfoZS4core6memory8BlkInfo_ () #11 0x0000563bd0787fe7 in gc_qalloc () ... Thread 7 (Thread 0x7f2a82ffd700 (LWP 424920)): #0 0x00007f2a89c515cb in __lll_lock_wait_private () from /usr/lib/libc.so.6 #1 0x00007f2a89bd06b3 in calloc () from /usr/lib/libc.so.6 #2 0x0000563bd07c61ad in _D2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv () #3 0x0000563bd07c5f44 in _D2gc4impl12conservativeQw3Gcx12markParallelMFNbbZv () #4 0x0000563bd07c5862 in _D2gc4impl12conservativeQw3Gcx11fullcollectMFNbbZm () #5 0x0000563bd07c4050 in _D2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv () #6 0x0000563bd07c935a in _D2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCeQCeQCcQCnQBs12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQEgQEgQEeQEp10mallocTimelS_DQFiQFiQFgQFr10numMallocslTmTkTmTxQCzZQFcMFNbKmKkKmKxQDsZQDl () #7 0x0000563bd07c1456 in _D2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkxC8TypeInfoZS4core6memory8BlkInfo_ () #8 0x0000563bd0787fe7 in gc_qalloc () ... -- |
Copyright © 1999-2021 by the D Language Foundation