OutOfMemoryError in D DLL appending to module-level array
Adam D. Ruppe
destructionator at gmail.com
Sun May 2 02:42:46 UTC 2021
On Sunday, 2 May 2021 at 02:34:41 UTC, cc wrote:
> which seems to fix it, but I'm not entirely sure what's going
> on, if this is expected behavior, if that's the correct way to
> handle it, and so on.
Oh I've been working on this the last couple weeks and having a
hard time reproducing outside the work application. In the work
app, the GC wasn't scanning the dll's TLS variables and freeing
them prematurely.
In a sample test program, I used a thing kinda like yours, if a
dll creates a thread and calls back into the exe you get a
separate problem of partially initialize data.
D dlls on Windows work in simple cases right now but break down
in more advanced cases. The good news is there's major fixes
coming soon - my druntime hack might be coming, gdc is getting
full dll support very soon from mingw, there's a good chance ldc
is going to in a release or two as well outside mingw.
But the bad news is none of that is actually out right now, so
dll + tls variables (which includes the top-level things on
modules) are potentially buggy among other things like duplicated
symbols.
You might find some improvement making your variable __gshared
there.
But if you can do any reduced test case I'd really appreciate it.
More tests that we can do in public is better!
More information about the Digitalmars-d-learn
mailing list