Root crashing when trying to open a .root file

Hi,

I have created with root v5.30 running in Windows XP the attached .root file that contains 26 graphs. I am getting the following error when I try to open the file:

root [0] TFile *f=new TFile(“Gph_Tue_Aug_09_12_33_16_2011.root”)
Error in TExMap::Remove: key 4194304 not found at 291
Warning in TBufferFile::CheckObject: reference to object of unavailable class TObjArray, offset=4194304 pointer will be 0

*** Break *** segmentation violation

===========================================================
There was a crash.
This is the entire stack trace of all threads:

Thread 1 (process 527):
#0 0x00007fff8845e168 in wait4 ()
#1 0x00007fff849975f5 in system ()
#2 0x000000010010f5e5 in TUnixSystem::StackTrace ()
#3 0x000000010010cd41 in TUnixSystem::DispatchSignals ()
#4
#5 0x000000010211d2cb in TFile::ReadStreamerInfo ()
#6 0x000000010211fef9 in TFile::Init ()
#7 0x0000000102120728 in TFile::TFile ()
#8 0x000000010222dd60 in G__G__IO_111_0_22 ()
#9 0x0000000100875f16 in Cint::G__ExceptionWrapper ()
#10 0x000000010093711c in G__execute_call ()
#11 0x000000010093755b in G__call_cppfunc ()
#12 0x000000010090eb63 in G__interpret_func ()
#13 0x00000001008fc992 in G__getfunction ()
#14 0x000000010092e0a0 in G__new_operator ()
#15 0x00000001008d762c in G__getexpr ()
#16 0x00000001008c0a17 in G__define_var ()
#17 0x0000000100962483 in G__exec_statement ()
#18 0x00000001008ba02d in G__exec_tempfile_core ()
#19 0x00000001008ba346 in G__exec_tempfile_fp ()
#20 0x000000010096fc61 in G__process_cmd ()
#21 0x000000010001f64e in TCint::ProcessLine ()
#22 0x000000010006702b in TApplication::ProcessLine ()
#23 0x000000010123a53f in TRint::HandleTermInput ()
#24 0x0000000101238b17 in TTermInputHandler::Notify ()
#25 0x000000010123aa3d in TTermInputHandler::ReadNotify ()
#26 0x000000010010ca02 in TUnixSystem::CheckDescriptors ()
#27 0x000000010010d475 in TUnixSystem::DispatchOneEvent ()
#28 0x00000001000a4bed in TSystem::InnerLoop ()
#29 0x00000001000a7813 in TSystem::Run ()
#30 0x0000000100065857 in TApplication::Run ()
#31 0x000000010123977b in TRint::Run ()
#32 0x00000001000019a0 in main ()

The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.

#5 0x000000010211d2cb in TFile::ReadStreamerInfo ()
#6 0x000000010211fef9 in TFile::Init ()
#7 0x0000000102120728 in TFile::TFile ()

I have tried to open the file with different versions of root running under linux, windows and macox but I get the same error everywhere.

Could someone please:

  1. point to a likely reason as to why this .root file is corrupted (i.e. what did I do wrong in the program that writes it)
  2. is there a way for me to recover the graphs inside?

Thanks a lot

Berta
Gph_Tue_Aug_09_12_33_16_2011.root (475 KB)

Hi,

I am not sure how this file ended up being corrupted (I would need a way to reproduce the corruption to know).
The reading of the file fails because the existing code was not protected against this time of corruption (it is corrected in the trunk). Once the protection are added, the file can be ‘fixed’ by copying with hadd (see attachement).

Cheers,
Philippe.
goodfile.root (417 KB)

Thanks Philippe!

Berta