Skip to content

Using LZMA compression with RNTupleWriter leads to memory corruption #14508

@Dr15Jones

Description

@Dr15Jones

Check duplicate issues.

  • Checked for duplicates

Description

When I used RNTupleWriter to store CMS miniAOD like data using LZMA compression with level 4 I got libc errors about problems with free. Running valgrind on the job turned up many 'invalid writes' in calls to lzma

==1855575== Invalid write of size 1
==1855575==    at 0x4046BE3: memmove (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x700C7DA: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x7011C2F: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x700CB55: lzma_code (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x596A683: R__zipLZMA (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libCore.so)
==1855575==    by 0x4D6E315: ROOT::Experimental::Detail::RPageSink::SealPage(ROOT::Experimental::Detail::RPage const&, ROOT::Experimental::Detail::RColumnElementBase const&, int, void*, bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D6378E: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575==  Address 0x29d07560 is 0 bytes after a block of size 16 alloc'd
==1855575==    at 0x403C617: operator new[](unsigned long) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x4D63568: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575==    by 0x4114AE: main (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575== 
==1855575== Invalid write of size 2
==1855575==    at 0x4046BB3: memmove (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x7023ABA: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x7018963: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x701014B: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x7011B46: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x700CB55: lzma_code (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x596A683: R__zipLZMA (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libCore.so)
==1855575==    by 0x4D6E315: ROOT::Experimental::Detail::RPageSink::SealPage(ROOT::Experimental::Detail::RPage const&, ROOT::Experimental::Detail::RColumnElementBase const&, int, void*, bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D6378E: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==  Address 0x32f0a6b4 is 0 bytes after a block of size 36 alloc'd
==1855575==    at 0x403C617: operator new[](unsigned long) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x4D63568: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575==    by 0x4114AE: main (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575== 
==1855575== Invalid write of size 1
==1855575==    at 0x4046BE3: memmove (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x7023ABA: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x7018963: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x701014B: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x7011B46: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x700CB55: lzma_code (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1855575==    by 0x596A683: R__zipLZMA (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libCore.so)
==1855575==    by 0x4D6E315: ROOT::Experimental::Detail::RPageSink::SealPage(ROOT::Experimental::Detail::RPage const&, ROOT::Experimental::Detail::RColumnElementBase const&, int, void*, bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D6378E: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==  Address 0x32f0a6bc is 8 bytes after a block of size 36 alloc'd
==1855575==    at 0x403C617: operator new[](unsigned long) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1855575==    by 0x4D63568: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1855575==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1855575==    by 0x4114AE: main (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)

I see the same valgrind error when just storing one std::vector<int> and one std::vector<float> to RNTuple. In this case, the job completes without the error from 'free'.

==1920683== Invalid write of size 1
==1920683==    at 0x4046BE3: memmove (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1920683==    by 0x700C7DA: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1920683==    by 0x7011C2F: ??? (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1920683==    by 0x700CB55: lzma_code (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/xz/5.2.5-6f3f49b07db84e10c9be594a1176c114/lib/liblzma.so.5.2.5)
==1920683==    by 0x596A683: R__zipLZMA (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libCore.so)
==1920683==    by 0x4D6E315: ROOT::Experimental::Detail::RPageSink::SealPage(ROOT::Experimental::Detail::RPage const&, ROOT::Experimental::Detail::RColumnElementBase const&, int, void*, bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.
01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4D6378E: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee4
2f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1920683==  Address 0xe6151ac is 0 bytes after a block of size 12 alloc'd
==1920683==    at 0x403C617: operator new[](unsigned long) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/external/valgrind/3.22.0-e989c977f8949fc48f1bc1206f1f87c8/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1920683==    by 0x4D63568: ROOT::Experimental::Detail::RPageSinkBuf::CommitPage(ROOT::Experimental::Detail::RPageStorage::RColumnHandle, ROOT::Experimental::Detail::RPage const&) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee4
2f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4CDDA89: ROOT::Experimental::Detail::RColumn::Flush() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4CE95CB: ROOT::Experimental::Detail::RFieldBase::CommitCluster() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4D24A3C: ROOT::Experimental::RNTupleWriter::CommitCluster(bool) (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x4D24D9D: ROOT::Experimental::RNTupleWriter::~RNTupleWriter() (in /cvmfs/cms-ib.cern.ch/sw/x86_64/nweek-02821/el8_amd64_gcc12/lcg/root/6.31.01-184a5ee42f3c094c02e1b303c901e8e4/lib/libROOTNTuple.so)
==1920683==    by 0x459E52: cce::tf::RNTupleOutputer::~RNTupleOutputer() (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1920683==    by 0x4114AE: main (in /uscms_data/d2/cdj/build/temp/rntuple/root_serialization/build-root-serialization/threaded_io_test)
==1920683== 

Reproducer

The following shows the problem when run using valgrind.

#include <ROOT/RNTupleModel.hxx>
#include <ROOT/RField.hxx>
#include <ROOT/RNTuple.hxx>

#include <vector>

int main() {
  auto model = ROOT::Experimental::RNTupleModel::Create();
  model->AddField( ROOT::Experimental::Detail::RFieldBase::Create("ints","std::vector<int>").Unwrap());
  model->AddField( ROOT::Experimental::Detail::RFieldBase::Create("floats","std::vector<float>").Unwrap());
  auto writeOptions = ROOT::Experimental::RNTupleWriteOptions();
  writeOptions.SetCompression(ROOT::RCompressionSetting::EAlgorithm::kLZMA, 4);

  auto writer = ROOT::Experimental::RNTupleWriter::Recreate(std::move(model), "Events", "dummy.root", writeOptions);

  std::vector<int> ints ={1,2,3};
  void* pInts = &ints;
  void** ppInts = &pInts;
  std::vector<float> floats = {2.0, 4.0, 6.0};
  void* pFloats = &floats;
  void** ppFloats = &pFloats;
  {
    auto entry = writer->CreateEntry();
    entry->CaptureValueUnsafe("ints", *ppInts);
    entry->CaptureValueUnsafe("floats", *ppFloats);
    writer->Fill(*entry);
  }
  writer.reset();

  return 0;
}

ROOT version

   ------------------------------------------------------------------
  | Welcome to ROOT 6.31/01                        https://root.cern |
  | (c) 1995-2023, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for linuxx8664gcc on Jan 21 2024, 23:43:23                 |
  | From heads/master@tags/v6-31-01                                  |
  | With g++ (GCC) 12.3.1 20230527                                   |
  | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
   ------------------------------------------------------------------

Installation method

CMSSW release

Operating system

linux

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugexperimentAffects an experiment / reported by its software & computimng expertsin:RNTuple

Type

No type

Projects

Status

Issues

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions