Open tomcornelis opened 4 years ago
Hi Tom,
The offending issue is here:
at java.nio.Buffer.limit(Buffer.java:275)
at edu.vanderbilt.accre.laurelin.array.RawArray.slice(RawArray.java:29)
where I try to take a slice of a java bytebuffer. The function limit()
only supports numbers between 0 and 2GB, so this symptom is usually due to me decoding the ROOT metadata improperly and ending up trying to request to read 100s of exabytes. I'll take a look at your file and see where the explosion happened.
@tomcornelis FWIW, Is the UserData subdir in your file something useful to deserialize, or is it just metadata?
@PerilousApricot The UserData is not needed for me, it's just metadata which comes from the tree where I skimmed this subset from.
Ah, okay. The issue is that the ROOT file was somehow not closed properly, so the accounting for how many events are stored in the last basket Is stored slightly differently. Let me reverse-engineer how ROOT handles it, and run some tests
Just to update this. I've nearly got this fixed in a robust way. It's taken a bit longer than I had hoped because doing the proper fix involved a bit of a refactor to get the right information loaded at the proper time. I hope to get this cut by tomorrow or friday
I am trying to use laurelin, but even this minimal example results in a crash I can't explain.
This is the example:
resulting in the following crash:
The test file which is causing this issue can be found at http://tomc.web.cern.ch/tomc/MC_Moriond17_DY_tranch4Premix_part10_0.root