While I wasn't able to fully track down the real problem, it seems that dynamic library loading doesn't stand a DOD run, which is artificially triggered by string_compare, when --gc-debug is on.
The whole static MMD table stuff, where the error hit the surface, is doomed anyway, and eventually we have to create all persistent core structures in constant (non-GCed) memory pools.
leo