March 07, 2016
Greetings

I am using my D code as a dynamically loadable library that gets loaded at run time into C/C++ world. As discussed earlier on this thread, the GC does not mark TLS objects in this scenario and as a result the GC ends up collecting TLS objects even though these objects are still in use. More details of the issue can be found on the bug tracker https://issues.dlang.org/show_bug.cgi?id=15513

@Daniel provided two workarounds to this issue. One was to disable the GC altogether. I do not want to do that since my application generates too much data that necessitates regular sweeping.

The other suggested workaround was to explicitly invoke GC.addRoot for all the TLS objects. This worked for me for some situations, but in other scenarios I am still facing crashes. I think these crashes may be resulting from the invisible TLS objects in phobos and druntime etc. I have confirmed that all these crashes subside if I disable GC altogether and also that the crashes do not happen if I make a D bases executable instead of DLL.

I want to know if someone is working on this issue. If no one is, I am ready to spend time and get this behind me. Actually I have already worked on this bug and I think now I have a fair idea of what is happening.

Is it the right forum to discuss my findings, or should I put my comments on bugzilla. I need some guidance in finding the right fix.

Regards
- Puneet

March 09, 2016
The fix turned out to be much simpler than what I had thought.

https://github.com/D-Programming-Language/druntime/pull/1506
1 2
Next ›   Last »