Follow-up Comment #4, bug #98102 (project xrootd):
While Solaris is still an open question the MacOS answer is pretty much
settled. XrdSysPlugin works as advertised, The problem is that MacOS only
allows dlopen() to occur on the main thread. The web is littered with
complaints about this. The one that strikes close to home involves
Pool/Cool:
https://savannah.cern.ch/bugs/?81005
A couple of others:
http://stackoverflow.com/questions/8744608/dlopen-in-multithreaded-application-exit-with-trace-bpt-trap
https://issues.apache.org/jira/browse/MESOS-164?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel
It works out that the threading model in MacOS is relatively weak with the
main thread "owning" the executable space. You cannot add to or delete from
that space unless you are running in the main thread. The server gets away
with it because all plugins are loaded in the main thread. The old client
gets away with it because, at least, the initial login to a data server
happens on a main thread. Unfortunately, XrdCl is not so lucky. The dlopen()
occurs on thread 2 not thread 1.
There are a few ugly solution to this; none of which are satisfying. I can
discuss these with you. Otherwise, I consider the MacOS issue closed relative
to XrdSysPlugin.
_______________________________________________________
Reply to this item at:
<http://savannah.cern.ch/bugs/?98102>
_______________________________________________
Message sent via/by LCG Savannah
http://savannah.cern.ch/
########################################################################
Use REPLY-ALL to reply to list
To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1
|