gordonwatts / LINQtoROOT

Convert a LINQ query into a ROOT TSelector, and run it
GNU Lesser General Public License v2.1
1 stars 0 forks source link

All Clone Objects need to be protected from multithreading #275

Open gordonwatts opened 6 years ago

gordonwatts commented 6 years ago

The following lines buried in the ROOT infrastructure:

   //create a buffer where the object will be streamed
   //We are forced to go via the I/O package (ie TBufferFile).
   //Invoking TBufferFile via CINT will automatically load the I/O library
   TBuffer *buffer = (TBuffer*)gROOT->ProcessLine("new TBufferFile(TBuffer::kWrite,10000);");

mean that any call to TObject::Clone must be protected via our generic ROOT lock.

gordonwatts commented 6 years ago

And looks like the same crash is back:

15:51:49 LINTToTTreeLib Start: 13 : ExecuteQueuedQueriesForAScheme:  --> gwatts@tev03.phys.washington.edu -> /tmp/JENKINSBUILDDES/Query.c183d40c-a02e-454b-aa2c-1344e92b3134
15:51:49 Syntax Error: utputCSVTextFileType Maybe missing ';' (tmpfile)(2)
15:51:49 Error: Too many '}' (tmpfile)(2)
15:51:49 *** Interpreter error recovered ***
15:51:49 Fatal in <TROOT::CloneObject>: Not able to create a TBuffer!
15:51:49 aborting
15:51:49 LINTToTTreeLib Start: 13 : ExecuteQueuedQueriesForAScheme:  --> Execute: tev03.phys.washington.edu
15:51:49 LINTToTTreeLib Start: 13 : ExecuteQueuedQueriesForAScheme:  --> gwatts@tev03.phys.washington.edu -> /tmp/JENKINSBUILDDES/Query.9ef6f43d-5acb-426b-8e34-619753714c7f
15:51:50 LINTToTTreeLib Start: 13 : ExecuteQueuedQueriesForAScheme:  --> Execute: tev03.phys.washington.edu
15:51:50 LINTToTTreeLib Start: 13 : ExecuteQueuedQueriesForAScheme:  --> gwatts@tev03.phys.washington.edu -> /tmp/JENKINSBUILDDES/Query.329f83ba-eecd-446d-9f88-a28329ccce71
15:51:52 
15:51:52 ==========================================
15:51:52 =============== STACKTRACE ===============
15:51:52 ==========================================
15:51:52 
15:51:52 
15:51:52 ================ Thread 0 ================
15:51:52   ntdll!NtWaitForMultipleObjects()
15:51:52   clr!InstallCustomModule()
15:51:52   clr!InstallCustomModule()