Print

Print


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