Bug 4368 – Fork() on OS X 2.047 results in a core.thread.ThreadException

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
druntime
Product
D
Version
D2
Platform
x86
OS
Mac OS X
Creation time
2010-06-22T16:12:46Z
Last change time
2020-01-16T13:32:02Z
Assigned to
Sean Kelly
Creator
Byron Heads
See also
https://issues.dlang.org/show_bug.cgi?id=14205

Comments

Comment #0 by bheads — 2010-06-22T16:12:46Z
import core.sys.posix.unistd, std.stdio; void main() { auto pid = fork(); if( pid > 0 ) { writeln( "Parent" ); } else if( pid == 0 ) { writeln( "Child" ); } else { writeln( "Failed to fork!" ); } } $ ./fork Parent Child core.thread.ThreadException: Unable to load thread state ---------------- 5 fork 0x00006e0d thread_suspendAll + 85 6 fork 0x0000b014 D2gc3gcx3Gcx11fullcollectMFPvZk + 32 7 fork 0x0000afe1 D2gc3gcx3Gcx16fullcollectshellMFZk + 41 8 fork 0x0000a0c6 D2gc3gcx2GC18fullCollectNoStackMFZv + 54 9 fork 0x00008060 gc_term + 44 10 fork 0x0000cf1a D2rt6dmain24mainUiPPaZi6runAllMFZv + 90 11 fork 0x0000cdea D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv + 42 12 fork 0x0000cd78 main + 168 13 fork 0x00001acd start + 53halle109-82:dbug admin$
Comment #1 by soul8o8 — 2010-06-23T07:02:57Z
// Workaround (+ possible clue to what the cause is) import core.sys.posix.unistd, core.thread, //++++ std.stdio; void main() { auto pid = fork(); if( pid > 0 ) { writeln( "Parent" ); } else if( pid == 0 ) { thread_attachThis(); // ++++ writeln( "Child" ); } else { writeln( "Failed to fork!" ); } }:
Comment #2 by pro.mathias.lang — 2020-01-16T13:32:02Z
This isn't an issue anymore.