Am 25.11.2013 08:07, schrieb Atila Neves:

Okay, the issue is that in your main code (app.d) gServer needs to be shared or __gshared for its value to be visible in threads other than the main thread. It is a null-dereference in line 26 that is responsible for the crash.

Oops. I feel silly now. Thanks!

BTW I've just noticed that in package.json, there is "importPaths": ["mqttd"], but to match the module declarations in the actual D files, it needs to be "importPaths": ["."] (which then also makes the test/ files visible, which in turn is the reason why I'd always recommend a separate source folder for D projects). Otherwise there will be compile errors when it's used as a library and compiled separately (e.g. when "dub generate visuald" is used).

I don't want the tests directory to be visible actually. I run them separately with my tool dtest from unit_threaded. All I want to go into the lib is in mqttd.

They won't go into the lib (i.e. they won't get compiled), but they will
be importable using import tests.xxx; - nothing really that can be
done about it without either breaking separate builds or putting the
library sources into their own root directory.