Can't send messages to tid spawned in a Windows DLL. Bug?

kinke via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 16 07:14:25 PST 2017


On Thursday, 16 February 2017 at 12:07:40 UTC, Atila Neves wrote:
> This fails for me in a DLL:
>
> auto tid = spawn(&func);
> assert(tid != Tid.init);
>
> If I print out the tid, I find that its message box is null. 
> This is odd, since according the code in std.concurrency 
> there's nothing weird about how it gets a message box, it's 
> just `auto spawnTid = Tid(new MessageBox);`. So... `new` is 
> returning null???
>
> The really weird thing is that a thread is spawned and func 
> starts executing. I just can't send it any messages without 
> crashing.
>
> Atila

If you suspect `new` of returning null, a GC issue seems likely. 
Is your DLL linked statically against druntime, thus having its 
own GC? Or are you using a shared druntime (and thus GC) across 
multiple binaries?


More information about the Digitalmars-d-learn mailing list