[Issue 6116] New: May not join spawn()'ed threads

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jun 6 16:37:40 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6116

           Summary: May not join spawn()'ed threads
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: Phobos
        AssignedTo: nobody at puremagic.com
        ReportedBy: acehreli at yahoo.com


--- Comment #0 from Ali Cehreli <acehreli at yahoo.com> 2011-06-06 16:33:09 PDT ---
Version: 2.053

The command line:

~/dmd2.053/linux/bin64/dmd deneme.d  -ofdeneme  -unittest -J. -w  

Although I have multiple threads spawning each other here, I also had problems
with just a single thread spawned from main. I wanted to keep this example as
it exposes many different outputs for me.

import std.stdio;
import std.concurrency;
import core.thread;

void foo()
{
    foreach (i; 0 .. 5) {
        Thread.sleep(dur!"msecs"(500));
        writeln(i, " foo");
    }
}

void intermediate3()
{
    spawn(&foo);
    writeln("intermediate3 done");
}

void intermediate2()
{
    spawn(&intermediate3);
    writeln("intermediate2 done");
}

void intermediate()
{
    spawn(&intermediate2);
    writeln("intermediate done");
}

void main()
{
    spawn(&intermediate);
    writeln("main done");
}

1) ThreadException:

$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done
core.thread.ThreadException at src/core/thread.d(866): Unable to join thread
----------------
----------------

real    0m0.003s
user    0m0.000s
sys    0m0.000s

2) No output from foo() (foo() is not joined)

$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done

real    0m0.003s
user    0m0.000s
sys    0m0.000s

3) Segmentation fault:

$ time ./deneme
main done
intermediate done
Segmentation fault

real    0m0.003s
user    0m0.000s
sys    0m0.000s

4) Expected behavior:

$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done
0 foo
1 foo
2 foo
3 foo
4 foo

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list