Bug in generator

Profile Anaysis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jan 30 02:58:56 PST 2017


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.



More information about the Digitalmars-d-learn mailing list