Hi, I have followed the directives from the client/server tutorial and from one of the entries to roottalk to send/receive a TClonesArray: sender code: fEmCal = new TClonesArray("CAREmCell", 4); for (Int_t i=0; i<4; i++){ new( (*fEmCal)[i]) CAREmCell(i, i*10, i*20, i*30) ; } TMessage mess(kMESS_OBJECT); // sends a message mess.Reset(); mess.WriteObject(fEmCal); fSocket->Send(mess) receiver code : TSocket * s; TMessage * mess=0; TClonesArray * det=0; s = fMonitor->Select(); s->SetOption(kNoBlock,0); Int_t status = s->Recv(mess); if (mess->What() == kMESS_OBJECT) { TClass* clas = mess->GetClass(); if (clas) cout << clas->GetName() << endl ; det = (TClonesArray *)mess->ReadObject(clas); for (Int_t i=0; i < det->GetEntries(); i++){ CAREmCell * c = (CAREmCell *)(det->At(i)); // c->Print(); } } I get a segmentation fault on the line: det = (TClonesArray *)mess->ReadObject(clas); with the following traceback: #2 0x........ in TBuffer::ReadObject() #1 0x........ in TClonesArray::Streamer() #0 0x........ in TClass::New() It becomes really ennoying when I uncomment the line: // c->Print(); then .... everything works fine! Anybody has a clue to that ? Thanks ... Yves -- __________________________________________________________________ |Yves SCHUTZ (IN2P3 - CNRS) collaboration TAPS/WA98/ALICE | |SUBATECH | |Ecole des Mines de Nantes Telephone: (+33/0) 2 51 85 84 71 | |4, rue Alfred Kastler Fax : (+33/0) 2 51 85 84 79 | |F-44070 Nantes cedex 03 e-mail : yves.schutz@subatech.in2p3.fr| |__________________________________________________________________|
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:28 MET