the code from https://dlang.org/library/std/concurrency/generator.html

gives a seg fault at the end.

import std.concurrency;
import std.stdio;


void main()
{
    auto tid = spawn(
    {
        while (true)
        {
            writeln(receiveOnly!int());
        }
    });

    auto r = new Generator!int(
    {
        foreach (i; 1 .. 10)
            yield(i);
    });

    foreach (e; r)
    {
        tid.send(e);
    }
}


0x00007FF7BDDA05E5 in std.concurrency.receiveOnly!int.receiveOnly.__lambda3 at \..\..\src\phobos\std\concurrency.d(805) 0x00007FF7BDDA1997 in void std.concurrency.Message.map!(pure @nogc @safe void function(std.concurrency.OwnerTerminated)*).map(pure @nogc @safe void function(std.concurrency.OwnerTerminated)*) at \..\..\src\phobos\std\concurrency.d(163) 0x00007FF7BDDA0B04 in D3std11concurrency10MessageBox160__T3getTDFNaNbNiNfiZvTPFNaNiNfC3std11concurrency14LinkTerminatedZvTPFNaNiNfC3std11concurrency15OwnerTerminatedZvTPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ3getMFDFNaNbNiNfiZvPFNaNiNfC3std11concurrency14LinkTerminatedZvPFNaNiNfC3std11concurrency15OwnerTerminatedZvPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ13onStandardMsgMFKS3std11concurrency7MessageZb 0x00007FF7BDDA0EA0 in D3std11concurrency10MessageBox160__T3getTDFNaNbNiNfiZvTPFNaNiNfC3std11concurrency14LinkTerminatedZvTPFNaNiNfC3std11concurrency15OwnerTerminatedZvTPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ3getMFDFNaNbNiNfiZvPFNaNiNfC3std11concurrency14LinkTerminatedZvPFNaNiNfC3std11concurrency15OwnerTerminatedZvPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ13onLinkDeadMsgMFKS3std11concurrency7MessageZb at \..\..\src\phobos\std\concurrency.d(1988) 0x00007FF7BDDA0F4A in D3std11concurrency10MessageBox160__T3getTDFNaNbNiNfiZvTPFNaNiNfC3std11concurrency14LinkTerminatedZvTPFNaNiNfC3std11concurrency15OwnerTerminatedZvTPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ3getMFDFNaNbNiNfiZvPFNaNiNfC3std11concurrency14LinkTerminatedZvPFNaNiNfC3std11concurrency15OwnerTerminatedZvPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ12onControlMsgMFKS3std11concurrency7MessageZb at \..\..\src\phobos\std\concurrency.d(2000) 0x00007FF7BDDA0FFA in D3std11concurrency10MessageBox160__T3getTDFNaNbNiNfiZvTPFNaNiNfC3std11concurrency14LinkTerminatedZvTPFNaNiNfC3std11concurrency15OwnerTerminatedZvTPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ3getMFDFNaNbNiNfiZvPFNaNiNfC3std11concurrency14LinkTerminatedZvPFNaNiNfC3std11concurrency15OwnerTerminatedZvPFS3std7variant18__T8VariantNVmi20Z8VariantNZvZ4scanMFKS3std11concurrency36__T4ListTS3std11concurrency7MessageZ4ListZb at \..\..\src\phobos\std\concurrency.d(2016) 0x00007FF7BDDA094C in bool std.concurrency.MessageBox.get!(pure nothrow @nogc @safe void delegate(int), pure @nogc @safe void function(std.concurrency.LinkTerminated)*, pure @nogc @safe void function(std.concurrency.OwnerTerminated)*, void function(std.variant.VariantN!(20uL).VariantN)*).get(pure nothrow @nogc @safe void delegate(int), pure @nogc @safe void function(std.concurrency.LinkTerminated)*, pure @nogc @safe void function(std.concurrency.OwnerTerminated)*, void function(std.variant.VariantN!(20uL).VariantN)*) at \..\..\src\phobos\std\concurrency.d(2115) 0x00007FF7BDDA0579 in std.concurrency.receiveOnly!int.receiveOnly at \..\..\src\phobos\std\concurrency.d(806)
0x00007FF7BDD9F50D in main.main.__lambda1 at main.d(82)
0x00007FF7BDDA46C2 in std.concurrency._spawn!(void function())._spawn.exec at \..\..\src\phobos\std\concurrency.d(538)
0x00007FF7BDDE9302 in void core.thread.Thread.run()
0x00007FF7BDDD5CBD in thread_entryPoint
0x00007FF7BDE5D96D in thread_start<unsigned int (__cdecl*)(void * __ptr64)> at d:\th\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(115)
0x00007FF9EB178364 in BaseThreadInitThunk
0x00007FF9EBD570D1 in RtlUserThreadStart


Also, if one tries to create a global generator an error about PAGESIZE not being a compile time value is given.

Reply via email to