[foreign] NPE when trying to lookup a symbol in the default library when no libraries are loaded

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Sep 12 20:49:19 UTC 2018

Yeah - was just about to write that.

I think currently we rely on RTLD_DEFAULT which is available in mac and 
linux. But I don't think it's very portable and I've read too that it 
doesn't work too well with Windows.

I think a more robust alternative would be to always explicitly denote 
the library name - as JNR does. For instance, if you want the standard C 
lib, just loadLibray("c"). E.g. remove the getDefaultLibrary() method 
from the API.


On 12/09/18 19:31, Jorn Vernee wrote:
>> Ok good to know! I thought as much, but couldn't find where the
>> libraries were being searched in the source code. I'm just finding a
>> call to dlsym or GetProcAddress for the call to
>> NativeLibrary.findEntry . Is the defaultLibrary field being patched
>> over by the VM? Can you point me in the right direction?
> Never mind I found it :)
> void* getDefaultHandle() {
>     // FIXME: This is not yet tested on Windows.
>     return getProcessHandle();
> }
> Jorn

More information about the panama-dev mailing list