Seems core.thread.Fiber is broken dmd windows 64-bit build

Carl Sturtivant via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Mar 8 11:18:48 PDT 2015


The following crashes on Windows 7 sp1 64-bit edition when build 
at 64 bits with dmd and the Microsoft linker that comes with 
Windows SDK 7.1 (i.e. MSVC 2010 linker). I've had no trouble with 
other D code when using that arrangement, though I have not used 
threads. When built at 32 bits with dmd and optlink it runs fine.
==============
import core.thread, std.stdio;

void main() {
     writefln( "A pointer is %d bytes", (void*).sizeof);
         void f1() {
             writeln( 1);
             Fiber.yield();
             writeln( 3);
         }
     auto fiber = new Fiber( &f1);
     fiber.call();
     writeln( 2);
     fiber.call();
     writeln( 4);
}
===============
The 64 bit version outputs 1 and crashes when yield is executed. 
Other tests reveal that yield is the problem.

Should I be doing something special with linkage so this works? 
What is going on?


More information about the Digitalmars-d-learn mailing list