Hi,
So now I've edited some xrootd and root ( just put in some log infos) code and can see that I was right:
The problem is, that the XrdCl::DefaultEnv is "finalized" [including dlclose() on the plug-in through its plug-in manager ] before the file object is(/are) deleted.
TNetXNGFile::~TNetXNGFile()
{
if (IsOpen())
Close();
delete fFile;
delete fUrl;
delete fInitCondVar;
}
->
Bool_t TNetXNGFile::IsOpen() const
{
return fFile->IsOpen();
}
->
bool XrdCl::File::IsOpen() const
{
if( pPlugIn )
return pPlugIn->IsOpen();
return pStateHandler->IsOpen();
}
The following call to the TNetXNGFile destructor finally tries to use the pPlugin's IsOpen() method which fails, because the plug-in library has already been unloaded.
//////Valgrind Output
Discarding syms at 0xf1876f0-0xf18f140 in /home/jknedlik/xplug/plug.so due to munmap(
...
pure virtual method called
terminate called without an active exception
Aborted
Strangely, in root 6 everything works fine, because the cxa__finalize_ does not try to finalize DefaultEnv first.
The rootv6 valgrind output is pretty comparable in everything else (until that point of course).
Maybe there is a specific option that can set some rules in the root 5 env regarding the garbage collector?
I still do not understand what I am doing different fro others though.
@xrootd-dev Can you send me your root's config.status? (if you still have that) Have you set any specific ROOT env related shared libraries? I would also appreciate you forwarding me to the source of the plug-in you are using, maybe I can find anything I am doing wrong over there
Regards
JK
—
Reply to this email directly or view it on GitHub.
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