The attached code usually hangs (running on OSX, dmd 2.051). It uses spawn to create a new thread. All the thread does is create a large array of doubles. In one case it uses the Array!double from std.container. In the other case it uses the built in dynamic double. It declares the array, sets the length, then sends a message to main saying it is finished and exits.
The Array!double case always runs fine. The built-in dynamic array case usually hangs, though not always in the same place. And the array has to be sufficiently big (in my case 200000 or bigger I think) or the problem doesn't occur. I've no idea why. It took me a *long* time to find this since it manifested as very mysterious hanging in a more complex piece of threaded code. Now I've switched to using Array!double in my code and it all works fine. Adam (An example run) Spawned foo 1 Spawned foo 2 Spawned foo 3 Spawned foo 4 Finished foo 1 Finished foo 2 Finished foo 3 Finished foo 4 Spawned bar 1 Spawned bar 2 Spawned bar 3 (stays here without finishing) begin 644 spawn.d M:6UP;W)T('-T9"YC;VYC=7)R96YC>3L*:6UP;W)T('-T9"YS=&1I;SL*:6UP M;W)T('-T9"YC;VYT86EN97(["FEM<&]R="!C;W)E+G1H<F5A9#L*"G9O:60@ M9F]O*'5I;G0@:RP@=6EN="!L+%1I9"!M5&ED*2`*>PH@($%R<F%Y(61O=6)L M92!A<G(["B`@87)R+FQE;F=T:"AL*3L*("!S96YD*&U4:60L:RD["GT*"@IV M;VED(&)A<BAU:6YT(&LL('5I;G0@;"Q4:60@;51I9"D@"GL*("!D;W5B;&5; M72!A<G(["B`@87)R+FQE;F=T:"`](&P["B`@<V5N9"AM5&ED+&LI.PI]"@H* M=F]I9"!M86EN*"D@"GL*("!I;6UU=&%B;&4@=6EN="!M=6QT:7!L:65R(#T@ M,3`P,#`P.PH@(&EM;75T86)L92!U:6YT(&Y4:')E861S(#T@-#L*("!A=71O M(&UA:6Y4:60@/2!T:&ES5&ED*"D["@H@(&9O<F5A8V@@*&L[(#$N+BAN5&AR M96%D<RLQ*2D@>PH@("`@875T;R!D=6UM>5]4:60@/2!S<&%W;B@F9F]O+&LL M:RIM=6QT:7!L:65R+&UA:6Y4:60I.PH@("`@=W)I=&5F;&XH(E-P87=N960@ M9F]O("5S(BQK*3L*("!]"@H@(&9O<F5A8V@H:SL@,"XN;E1H<F5A9',I"B`@ M("!R96-E:79E*"AU:6YT(&HI('L@=W)I=&5F;&XH(D9I;FES:&5D(&9O;R`E M<R(L:BD[('TI.PH*("!F;W)E86-H("AK.R`Q+BXH;E1H<F5A9',K,2DI('L* M("`@(&%U=&\@9'5M;7E?5&ED(#T@<W!A=VXH)F)A<BQK+&LJ;75L=&EP;&EE M<BQM86EN5&ED*3L*("`@('=R:71E9FQN*")3<&%W;F5D(&)A<B`E<R(L:RD[ M"B`@?0H@(&9O<F5A8V@H:SL@,"XN;E1H<F5A9',I"B`@("!R96-E:79E*"AU M:6YT(&HI('L@=W)I=&5F;&XH(D9I;FES:&5D(&)A<B`E<R(L:BD[('TI.PH@ &(`H@(`I] ` end