DLL and GC

Paolo Invernizzi arathorn at fastwebnet.it
Tue Sep 23 08:18:46 PDT 2008


Hi all,
I've some doubts about the interaction between DLLs and the GC (DMD 1.035).

If I take the example from "D code calling D code in DLLs" with version=DYNAMIC_LOAD, and I add the following line in the DLL implementation:

...
class MyClass {
    char[] concat(char[] a, char[] b){
        auto socketSet = new SocketSet(); /// >>> Added!
        return a ~ " " ~ b;
    }
...

I've a GPF on program exit, probably for a collection right before exiting the program.
If I add a std.gc.fullCollect() just before doing the std.gc.endGCHandle(), all is ok.

Now, I cannot understand why the GC choke when collecting something it allocated, and if the fullCollect() is mandatory before releasing the gc handle (and in this case, I think it's better to add it into the documentation example)...

Comments are welcome!

Paolo Invernizzi






More information about the Digitalmars-d mailing list