Write() Segmentation Violation

Hi all,

I recently compiled Root 5.34/20 on my Mac running OSX 10.9.4. I am working with several libraries developed by some of my collaborators, which I have previously used on various linux builds. With a few changes, I was able to compile these libraries on OSX. I am trying to run some basic scripts that utilize these libraries and they seem to run as expected until I try to call a Write() command from a pointer. It seems to also fail on commands such as Close() or delete. There error I am getting is a segmentation violation:

*** Break *** segmentation violation Generating stack trace... 0x000000010e48366c in TBufferFile::WriteObjectAny(void const*, TClass const*) (in libRIO.so) (TBufferFile.cxx:2567) 0x000000010e482d52 in TBufferFile::WriteFastArray(void**, TClass const*, int, bool, TMemberStreamer*) (in libRIO.so) (TBufferFile.cxx:2275) 0x000000010e60827d in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) (in libRIO.so) (TStreamerInfoWriteBuffer.cxx:449) 0x000000010e4e7e6a in TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) (in libRIO.so) (TStreamerInfoActions.cxx:174) 0x000000010e485ecd in TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) (in libRIO.so) (iterator:1171) 0x000000010e485dea in TBufferFile::WriteClassBuffer(TClass const*, void*) (in libRIO.so) (TBufferFile.cxx:3858) 0x00000001165cce2b in ResponseMapVBS::Streamer(TBuffer&) (in libImagingTools.dylib) (ResponseMapVBS_dict.cc:127) 0x000000010e483616 in TBufferFile::WriteObjectClass(void const*, TClass const*) (in libRIO.so) (TBufferFile.cxx:2531) 0x000000010e483735 in TBufferFile::WriteObjectAny(void const*, TClass const*) (in libRIO.so) (TBufferFile.cxx:2585) 0x000000010e482d52 in TBufferFile::WriteFastArray(void**, TClass const*, int, bool, TMemberStreamer*) (in libRIO.so) (TBufferFile.cxx:2275) 0x000000010e60827d in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) (in libRIO.so) (TStreamerInfoWriteBuffer.cxx:449) 0x000000010e4e7e6a in TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) (in libRIO.so) (TStreamerInfoActions.cxx:174) 0x000000010e485ecd in TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) (in libRIO.so) (iterator:1171) 0x000000010e485dea in TBufferFile::WriteClassBuffer(TClass const*, void*) (in libRIO.so) (TBufferFile.cxx:3858) 0x0000000116802cab in ResponseBuilderVBS_NSC::Streamer(TBuffer&) (in libAnalysisAlgs.dylib) (ResponseBuilderVBS_NSC_dict.cc:127) 0x000000010e4c8508 in TKey::TKey(TObject const*, char const*, int, TDirectory*) (in libRIO.so) (TKey.cxx:254) 0x000000010e49564b in TFile::CreateKey(TDirectory*, TObject const*, char const*, int) (in libRIO.so) (TFile.cxx:960) 0x000000010e48db7f in TDirectoryFile::WriteTObject(TObject const*, char const*, char const*, int) (in libRIO.so) (TDirectoryFile.cxx:1819) 0x000000010d225c2b in TObject::Write(char const*, int, int) const (in libCore.so) (TObject.cxx:785) 0x000000010cfb21ea in G__G__Base2_11_0_53(G__value*, char const*, G__param*, int) (in libCore.so) (G__Base2.cxx:6800) 0x000000010d8671a1 in Cint::G__ExceptionWrapper(int (*)(G__value*, char const*, G__param*, int), G__value*, char*, G__param*, int) (in libCint.so) (Api.cxx:393) 0x000000010d90036b in G__execute_call (in libCint.so) (newlink.cxx:2437) 0x000000010d9007cc in G__call_cppfunc (in libCint.so) (newlink.cxx:2612) 0x000000010d8d5f0e in G__interpret_func (in libCint.so) (ifunc.cxx:5791) 0x000000010d8c4337 in G__getfunction (in libCint.so) (func.cxx:2661) 0x000000010d9c766b in G__getstructmem(int, G__FastAllocString&, char*, int, char*, int*, G__var_array*, int) (in libCint.so) (var.cxx:6821) 0x000000010d9be15d in G__getvariable (in libCint.so) (var.cxx:5408) 0x000000010d8b7e22 in G__getitem (in libCint.so) (expr.cxx:1906) 0x000000010d8b39f2 in G__getexpr (in libCint.so) (expr.cxx:1488) 0x000000010d933d3c in G__exec_statement (in libCint.so) (parse.cxx:645) 0x000000010d89a3c5 in G__exec_tempfile_core(char const*, __sFILE*) (in libCint.so) (debug.cxx:266) 0x000000010d89a5e0 in G__exec_tempfile (in libCint.so) (debug.cxx:814) 0x000000010d942507 in G__process_cmd (in libCint.so) (pause.cxx:3188) 0x000000010d1b1c44 in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) (in libCore.so) (TCint.cxx:545) 0x000000010d1b1f29 in TCint::ProcessLineSynch(char const*, TInterpreter::EErrorCode*) (in libCore.so) (TCint.cxx:624) 0x000000010d1fe003 in TApplication::ExecuteFile(char const*, int*, bool) (in libCore.so) (TApplication.cxx:1102) 0x000000010d1fcee4 in TApplication::ProcessLine(char const*, bool, int*) (in libCore.so) (TApplication.cxx:951) 0x000000010e31942e in TRint::Run(bool) (in libRint.so) (TRint.cxx:418) 0x000000010ce91e2f in main (in root) (rmain.cxx:29) 0x00007fff87cc05fd in start (in libdyld.dylib) + 1 0x0000000000000003 in <unknown function>

As mentioned, this does not occur when running on linux. Is there something special that needs to be done during an OSX build that might take care of this?

Hi,

no, nothing special.

Cheers,
Danilo

[quote=“dpiparo”]Hi,

no, nothing special.

Cheers,
Danilo[/quote]

Thanks, if there isn’t anything special, then it seems weird that a script that works on linux would not work on mac?

Hi,
How did you solve it. I am having similar error.
Thanks.

Hi,

what code are you running? On what platform?

Danilo

Hi I am running my analysis code and trying to submit a grid job. But I get following error:

*** Break *** segmentation violation
Generating stack trace…
An admin user name and password is required to enter Developer Mode.
Admin user name (pooja): pooja
Password:
0x000000011349ae3c in TBufferFile::WriteObjectAny(void const*, TClass const*) (in libRIO.5.so) (TBufferFile.cxx:2644)
0x000000011349a532 in TBufferFile::WriteFastArray(void**, TClass const*, int, bool, TMemberStreamer*) (in libRIO.5.so) (TBufferFile.cxx:2352)
0x000000011361fe1e in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) (in libRIO.5.so) (TStreamerInfoWriteBuffer.cxx:450)
0x00000001134fffba in TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) (in libRIO.5.so) (TStreamerInfoActions.cxx:174)
0x000000011349d63d in TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) (in libRIO.5.so) (iterator:1171)
0x000000011349d55e in TBufferFile::WriteClassBuffer(TClass const*, void*) (in libRIO.5.so) (TBufferFile.cxx:3945)
0x000000011adddecb in AliAnalysisTaskPi0_pp::Streamer(TBuffer&) (in AliAnalysisTaskPi0_pp_cxx.so) + 155
0x000000011349ade6 in TBufferFile::WriteObjectClass(void const*, TClass const*) (in libRIO.5.so) (TBufferFile.cxx:2608)
0x000000011349af05 in TBufferFile::WriteObjectAny(void const*, TClass const*) (in libRIO.5.so) (TBufferFile.cxx:2662)
0x000000011106bc44 in TObjArray::Streamer(TBuffer&) (in libCore.5.so) (TObjArray.cxx:459)
0x000000011349ade6 in TBufferFile::WriteObjectClass(void const*, TClass const*) (in libRIO.5.so) (TBufferFile.cxx:2608)
0x000000011349af05 in TBufferFile::WriteObjectAny(void const*, TClass const*) (in libRIO.5.so) (TBufferFile.cxx:2662)
0x000000011349a532 in TBufferFile::WriteFastArray(void**, TClass const*, int, bool, TMemberStreamer*) (in libRIO.5.so) (TBufferFile.cxx:2352)
0x000000011361fe1e in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) (in libRIO.5.so) (TStreamerInfoWriteBuffer.cxx:450)
0x00000001134fffba in TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) (in libRIO.5.so) (TStreamerInfoActions.cxx:174)
0x000000011349d63d in TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) (in libRIO.5.so) (iterator:1171)
0x000000011349d55e in TBufferFile::WriteClassBuffer(TClass const*, void*) (in libRIO.5.so) (TBufferFile.cxx:3945)
0x00000001134df948 in TKey::TKey(TObject const*, char const*, int, TDirectory*) (in libRIO.5.so) (TKey.cxx:253)
0x00000001134adbab in TFile::CreateKey(TDirectory*, TObject const*, char const*, int) (in libRIO.5.so) (TFile.cxx:960)
0x00000001134a5daa in TDirectoryFile::WriteTObject(TObject const*, char const*, char const*, int) (in libRIO.5.so) (TDirectoryFile.cxx:1820)
0x0000000110ffe29b in TObject::Write(char const*, int, int) const (in libCore.5.so) (TObject.cxx:789)
0x0000000104f7d50d in AliAnalysisAlien::WriteAnalysisFile() (in libANALYSISaliceBase.so) (AliAnalysisAlien.cxx:4031)
0x0000000104f79aa6 in AliAnalysisAlien::StartAnalysis(long long, long long) (in libANALYSISaliceBase.so) (AliAnalysisAlien.cxx:3637)
0x000000010f20e733 in AliAnalysisManager::StartAnalysis(char const*, TTree*, long long, long long) (in libANALYSIS.so) (AliAnalysisManager.cxx:1885)
0x000000010f23ae56 in G__G__ANALYSIS_214_0_16(G__value*, char const*, G__param*, int) (in libANALYSIS.so) (G__ANALYSIS.cxx:4608)
0x0000000113b85c54 in Cint::G__ExceptionWrapper(int ()(G__value, char const*, G__param*, int), G__value*, char*, G__param*, int) (in libCint.5.so) (Api.cxx:393)
0x0000000113ccc2d2 in G__execute_call (in libCint.5.so) (newlink.cxx:2413)
0x0000000113cccc16 in G__call_cppfunc (in libCint.5.so) (newlink.cxx:2612)
0x0000000113c87256 in G__interpret_func (in libCint.5.so) (ifunc.cxx:5791)
0x0000000113c6870d in G__getfunction (in libCint.5.so) (func.cxx:2660)
0x0000000113e10d4d in G__getstructmem(int, G__FastAllocString&, char*, int, char*, int*, G__var_array*, int) (in libCint.5.so) (var.cxx:6821)
0x0000000113dfefe8 in G__getvariable (in libCint.5.so) (var.cxx:5405)
0x0000000113c5716c in G__getitem (in libCint.5.so) (expr.cxx:1906)
0x0000000113c55a50 in G__getexpr (in libCint.5.so) (expr.cxx:1488)
0x0000000113d24fef in G__exec_function(G__FastAllocString&, int*, int*, int*, G__value*) (in libCint.5.so) (parse.cxx:645)
0x0000000113d1a15a in G__exec_statement (in libCint.5.so) (parse.cxx:7371)
0x0000000113c1f248 in G__exec_tempfile_core(char const*, __sFILE*) (in libCint.5.so) (debug.cxx:266)
0x0000000113c1f736 in G__exec_tempfile (in libCint.5.so) (debug.cxx:814)
0x0000000113d35ec5 in G__process_cmd (in libCint.5.so) (pause.cxx:3188)
0x0000000111076731 in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) (in libCore.5.so) (TCint.cxx:549)
0x0000000111076a89 in TCint::ProcessLineSynch(char const*, TInterpreter::EErrorCode*) (in libCore.5.so) (TCint.cxx:628)
0x0000000110fd32eb in TApplication::ExecuteFile(char const*, int*, bool) (in libCore.5.so) (TApplication.cxx:1111)
0x0000000110fd213f in TApplication::ProcessLine(char const*, bool, int*) (in libCore.5.so) (TApplication.cxx:959)
0x0000000104d06860 in TRint::Run(bool) (in libRint.5.so) (TRint.cxx:417)
0x00000001035d6598 in main (in aliroot) (aliroot.cxx:113)
0x00007fff87d995c9 in start (in libdyld.dylib) + 1
Root > 151201 14:45:56 4887 Xrd: XrdClientMessage::ReadRaw: Failed to read header (8 bytes).

I am not able to understand the reason.
Thank you for your help.

Pooja

Hi Pooja,

a runnable example reproducing the issue is necessary to help you debugging.

Cheers,
Danilo