digitalmars.D.bugs - [Issue 17326] New: 2.072 gc changes totally broke 32 bit Windows DLLs
- via Digitalmars-d-bugs (25/25) Apr 14 2017 https://issues.dlang.org/show_bug.cgi?id=17326
https://issues.dlang.org/show_bug.cgi?id=17326 Issue ID: 17326 Summary: 2.072 gc changes totally broke 32 bit Windows DLLs Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: regression Priority: P1 Component: druntime Assignee: nobody puremagic.com Reporter: bugzilla digitalmars.com How it is supposed to work is that if a program dynamically loads a DLL, then they need to share the same GC instance. This is done by the DLL, when it loads, calling gc_setProxy(the main program's gc instance pointer). The DLL links in gcstub/gc.d, which contained a Proxy struct with a bunch of fields that are pointers to functions. The equivalent is gc/gc.d. Unfortunately, 2.072 totally revamped everything about this in gc/*, but failed to update gcstub/gc. So now gcstub.gc_setProxy() gets sent a pointer to a completely different interface, causing it to crash when used. This is a disastrous bug, as it makes using D DLLs completely unusable in Win32, and is likely the source of the common complaint that Windows DLLs do not work. --
Apr 14 2017