[JDEV] Modification to running jabberd on Mac OS X

Max Horn max at quendi.de
Sat Apr 13 06:48:34 CDT 2002


At 17:35 Uhr -0700 12.04.2002, Sean Voisen wrote:
>After quite a bit of pain, I successfully got jabberd 1.4.2 running 
>on Mac OS X.  I was having problems with the dlcompat library 
>packaged with fink.

Note that the olde ones were also packaged with Fink at some point, 
and all the dlcompats versions you see out there are probably based 
on us :-)


>For some reason the older dlcompat version 20020120 works, while the 
>newer 20020322 does not.  I'm not sure why - but if anyone is able 
>to succeed with the newer version, I'd like to know.
>
>Just thought any Mac developers might find this useful.

Most interesting. We (or rather Jorge and Peter) have rewritten 
dlcompat from scratch in the newer releases, adding some features.

But I can reproduce your problem over here when trying to run jabberd 
with the new dlcompat:

>Loading ./jsm/jsm.so failed: 'dlcompat: unable to find symbol "__init"'


What happens is this: jabberd tries to dlopen jsm.so in 
jabberd/load.c, function load_loader(). Now our dlopen method works 
fine, but in the end, it tries to run an "_init" method, if existing, 
from the module. This function is not there, so  _init() is not 
called - fine. Only that we use dlsym to retrieve the symbol, which, 
upon failing, sets the error string used by dlerror. Not good, since 
now we indicate an error occured! A clear bug, I think

OTOH, this is also a bug in Jabberd, since it relies on dlerror to 
detect an error - but it should rather check the return value of 
dlopen, and only if that is NULL, should it call dlerror()!


Thanks Sean, we'll look into it, and if Peter agrees, will release a 
fixed version ASAP. I hope jabberd will also be fixed soon, too :-)


Max
-- 
-----------------------------------------------
Max Horn
Software Developer

email: <mailto:max at quendi.de>
phone: (+49) 6151-494890



More information about the JDev mailing list