Problem with TFile::Write() in ROOT 5.18

Hello,

I observe an error when calling TFile::Write() using ROOT 5.18.00. This error does not occur when working with ROOT 5.14.00e. Both ROOT versions are compiled and used on a 64 bit machine.

The test program compiles but at runtime one gets the following error message when using ROOT 5.18.00:
Error in TPluginManager::FindHandler: Cannot find plugin handler for TVirtualStreamerInfo! Does $ROOTSYS/etc/plugins/TVirtualStreamerInfo exist?
Program received signal SIGSEGV, Segmentation fault.

Checking the file from the error message:
$ ls $ROOTSYS/etc/plugins/TVirtualStreamerInfo
P010_TStreamerInfo.C

The stacktrace is:
(gdb) bt
#0 0x0000002a959fb235 in TClass::GetStreamerInfo () from /scratch/user/floss/workspace/root-51800/lib/libCore.so
#1 0x0000002a9670d53d in TStreamerInfo::Build () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#2 0x0000002a966d9228 in TBufferFile::WriteClassBuffer () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#3 0x0000002a96c6f49d in TH1F::Streamer () from /scratch/user/floss/workspace/root-51800/lib/libHist.so
#4 0x0000002a96702842 in TKey::TKey () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#5 0x0000002a966eb6a9 in TFile::CreateKey () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#6 0x0000002a966e1f6b in TDirectoryFile::WriteTObject () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#7 0x0000002a959839d7 in TObject::Write () from /scratch/user/floss/workspace/root-51800/lib/libCore.so
#8 0x0000002a966e1aa0 in TDirectoryFile::Write () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#9 0x0000002a966edf45 in TFile::Write () from /scratch/user/floss/workspace/root-51800/lib/libRIO.so
#10 0x000000000040775c in main () at test.cpp:147

Trying to find the error:
(gdb) up
#10 0x00000000004077fc in main () at test.cpp:158
158 theRootFile->Write();
(gdb) return
Make main return now? (y or n) y
#0 0x0000003bba01c3fb in __libc_start_main () from /lib64/tls/libc.so.6

Does anybody has an idea what might cause this problem and what to do about it?

Thanks,
Alex

You do not provide enough information:
-Did you install from source?
-from binaries
-did you copy from one place to another place.

It looks like your $ROOTSYS/etc directory does not contain the plug-ins

Rene

Hi Rene,

yes, I installed from source. ROOT was compiled on the same machine I used it on.

From above:

Error in TPluginManager::FindHandler: Cannot find plugin handler for TVirtualStreamerInfo! Does $ROOTSYS/etc/plugins/TVirtualStreamerInfo exist?
Program received signal SIGSEGV, Segmentation fault.

Checking the file from the error message:
$ ls $ROOTSYS/etc/plugins/TVirtualStreamerInfo
P010_TStreamerInfo.C

So the directory suggested by the error message exists, but I don’t know whether it contains all files it should.
Is another plugin needed as well?

Thanks,
Alex

Did you configure with --prefix (and if you did, did you run gmake install)?

Philippe

Yes, I did. But I checked to get sure and now spotted a message, I’ve missed before.

Installing config files in /etc/root
mkdir: cannot create directory `/etc/root’: Permission denied

This isn’t really intended, is it? I set a prefix and bin, lib, incude and share have been installed there… Repeating make install as root with the rights to write to /etc the installation worked and now I can use ROOT. But a directory in /etc is not really what I want to have… :wink: Something must have gone terribly wrong during the installation, so I think I’ve got to repeat the whole installation procedure.

Thanks a lot to all of you,
Alex

Hi Alex,

this is actually the intended behavior (I’m not claiming I like it :slight_smile: If you do not want the config files to be in /etc/root you’ll need to specify --etcdir=whatever explicitly. Notice configure --help mentions its default as /etc/root - irrespective of any prefix setting.

Cheers, Axel.