At least on Linux RTLD_LOCAL is the default for dlopen (when RTLD_GLOBAL isn't specified).
I think what went wrong is that moonlight itself dlopen'd a sublibrary with RTLD_GLOBAL, and when icedtea was loaded (with RTLD_LOCAL) it found the now-global symbol from moonlight. (icedtea's symbols themselves weren't exposed to later plugins, but its references to symbols were matched up to the existing global symbols from moonlight.)
At least on Linux RTLD_LOCAL is the default for dlopen (when RTLD_GLOBAL isn't specified).
I think what went wrong is that moonlight itself dlopen'd a sublibrary with RTLD_GLOBAL, and when icedtea was loaded (with RTLD_LOCAL) it found the now-global symbol from moonlight. (icedtea's symbols themselves weren't exposed to later plugins, but its references to symbols were matched up to the existing global symbols from moonlight.)