If I'm not mistaken, C global variables should be marked with __gshared for them to work correctly, since without that, they're end up being thread-local per D's type system.
http://dlang.org/interfaceToC.html
does not mention __gshared at all. It should explain that __gshared should be used on C global variable declarations in order for them not be treated as thread-local by the compiler.