still segfault with TObject::Read()

From: Ulrich Jost (jost@evalo1.ific.uv.es)
Date: Mon May 10 1999 - 10:53:09 MEST


Hi,

having switched to the new(er)
Version   2.21/01   14 January 1999
on linux, I still get a segfault, both in macro and program, when I try to
Read() from a file, see the code below. Attached is the data file.
If I understood correctly, Read() makes a copy of the object in the
file into the new program object, whereas TFile::Get() does not make a
copy, so I have/want to use Read(). The file was written to with Write().

Thanks, Ulrich

Macro:
void test(const char *filename)
{
  TFile* file = new TFile(filename, "read");
  file.ls();
  file.Map();
  TPaveText *pt = new TPaveText();
  //  pt->Read("annotation");                  // <- segfault !!!!
  pt = (TPaveText*) file->Get("annotation");   // <- works fine
  pt->Draw();

  return;
}


Trace back from a program:

Program received signal SIGABRT, Aborted.
0x40aee781 in __kill ()
(gdb) where
#0  0x40aee781 in __kill ()
#1  0x40aee5af in raise (sig=6) at ../sysdeps/posix/raise.c:27
#2  0x40aef7bf in abort () at ../sysdeps/generic/abort.c:83
#3  0x408685ed in TUnixSystem::Abort ()
#4  0x408677fe in TUnixSystem::DispatchSignals ()
#5  0x4086699f in SigHandler ()
#6  0x40869560 in sighandler ()
#7  <signal handler called>
#8  0x4037f5c7 in G__ClassInfo::IsValid ()
#9  0x403801c5 in G__ClassInfo::New ()
#10 0x407523ad in TClass::New ()
#11 0x402c5a8d in TBuffer::ReadObject ()
#12 0x4031e6c0 in operator>> ()
#13 0x404eea2a in TCollection::Streamer ()
#14 0x4050dd99 in TSeqCollection::Streamer ()
#15 0x4050d749 in TList::Streamer ()
#16 0x402c5ae9 in TBuffer::ReadObject ()
#17 0x4050d71c in operator>> ()
#18 0x405ab74d in TPaveText::Streamer ()
#19 0x403229e4 in TKey::Read ()
#20 0x40328095 in TObject::Read ()
#21 0x806b6bb in MainWindow::treatList (this=0xbffff7e4, id=2) at
src/probe_mainwindow.cpp:526






This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:32 MET