samtools / htslib-plugins

Plugins for use with HTSlib
Other
9 stars 7 forks source link

Plugin segfault issue with iRODS 4.3.1 release #7

Open kjsanger opened 10 months ago

kjsanger commented 10 months ago

samtools 1.18 htslib-plugins: 201712

Running the following (which is from one of our test suites which passes on iRODS 4.2.7, 4.2.11 and 4.2.12) fails on the current 4.3.1 release of iRODS. This is similar to, but not quite the same error as in #6, which is from a 4-3-stable iRODS branch prior to the release of 4.3.1.

The command producing the error is the same as #6 :

samtools view -C -T ./t/data/aln_data_object/test_ref.fa -o irods:/testZone/home/irods/Illumina::AlnDataObjectTest.53621.19/7915_5\#0.cram ./t/data/aln_data_object/7915_5\#0.sam
Reading symbols from samtools...
(gdb) run
Starting program: /usr/local/bin/samtools view -C -T ./t/data/aln_data_object/test_ref.fa -o irods:/testZone/home/irods/Illumina::AlnDataObjectTest.5733.19/7915_5\#0.cram ./t/data/aln_data_object/7915_5\#0.sam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a50617 in std::__1::pair<boost::unordered::detail::iterator_detail::iterator<boost::unordered::detail::node<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any>, void*>, boost::unordered::detail::bucket<boost::unordered::detail::node<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any>, void*>, void*> >, bool> boost::unordered::detail::table<boost::unordered::detail::map<std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::any, irods::irods_string_hash, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::try_emplace_unique<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) () from /lib/libirods_client.so.4.3.1
(gdb) bt
#0  0x00007ffff7a50617 in std::__1::pair<boost::unordered::detail::iterator_detail::iterator<boost::unordered::detail::node<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any>, void*>, boost::unordered::detail::bucket<boost::unordered::detail::node<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any>, void*>, void*> >, bool> boost::unordered::detail::table<boost::unordered::detail::map<std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::any> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::any, irods::irods_string_hash, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::try_emplace_unique<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) () from /lib/libirods_client.so.4.3.1
#1  0x00007ffff7abf8db in irods::plugin_base::call<char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>, char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol)::{lambda(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol)#1}::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol) const () from /lib/libirods_client.so.4.3.1
#2  0x00007ffff7abe543 in irods::error irods::plugin_base::call<char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>, char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol) () from /lib/libirods_client.so.4.3.1
#3  0x00007ffff7aba66b in sendRodsMsg(boost::shared_ptr<irods::network_object>, char const*, BytesBuf const*, BytesBuf const*, BytesBuf const*, int, iRODSProtocol) () from /lib/libirods_client.so.4.3.1
#4  0x00007ffff7ab9a5e in sendStartupPack () from /lib/libirods_client.so.4.3.1
#5  0x00007ffff7ab89a5 in connectToRhost () from /lib/libirods_client.so.4.3.1
#6  0x00007ffff7a9f3c4 in _rcConnect () from /lib/libirods_client.so.4.3.1
#7  0x00007ffff7a9f102 in rcConnect () from /lib/libirods_client.so.4.3.1
#8  0x00007ffff7b42b00 in irods_init () at hfile_irods.c:139
#9  hopen_irods (filename=0x5555556113f0 "irods:/testZone/home/irods/Illumina::AlnDataObjectTest.5733.19/7915_5#0.cram", mode=0x7fffffffe0d0 "wc") at hfile_irods.c:267
#10 0x00007ffff7ee0cf8 in hopen (fname=fname@entry=0x5555556113f0 "irods:/testZone/home/irods/Illumina::AlnDataObjectTest.5733.19/7915_5#0.cram", mode=mode@entry=0x7fffffffe0d0 "wc") at hfile.c:1274
#11 0x00007ffff7eeada9 in hts_open_format (fn=fn@entry=0x5555556113f0 "irods:/testZone/home/irods/Illumina::AlnDataObjectTest.5733.19/7915_5#0.cram", mode=mode@entry=0x7fffffffe37c "wc", fmt=fmt@entry=0x7fffffffe220) at hts.c:908
#12 0x0000555555568652 in main_samview (argc=7, argv=0x7fffffffe4e0) at sam_view.c:1194
#13 0x00007ffff7bb5d90 in __libc_start_call_main (main=main@entry=0x5555555608b0 <main>, argc=argc@entry=8, argv=argv@entry=0x7fffffffe4d8) at ../sysdeps/nptl/libc_start_call_main.h:58
#14 0x00007ffff7bb5e40 in __libc_start_main_impl (main=0x5555555608b0 <main>, argc=8, argv=0x7fffffffe4d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe4c8) at ../csu/libc-start.c:392
--Type <RET> for more, q to quit, c to continue without paging--
#15 0x00005555555611a5 in _start ()

Full samtools details:

samtools 1.18
Using htslib 1.18
Copyright (C) 2023 Genome Research Ltd.

Samtools compilation details:
    Features:       build=configure curses=no 
    CC:             gcc
    CPPFLAGS:       -I/usr/include/irods
    CFLAGS:         -Wall -g -O2
    LDFLAGS:        
    HTSDIR:         
    LIBS:           
    CURSES_LIB:     

HTSlib compilation details:
    Features:       build=configure libcurl=yes S3=yes GCS=yes libdeflate=no lzma=yes bzip2=yes plugins=yes plugin-path=/usr/local/libexec/htslib: htscodecs=1.5.1
    CC:             gcc
    CPPFLAGS:       -I/usr/include/irods
    CFLAGS:         -Wall -g -O2 -fvisibility=hidden
    LDFLAGS:        -fvisibility=hidden -rdynamic

HTSlib URL scheme handlers present:
    built-in:    preload, data, file
    Google Cloud Storage:        gs+http, gs+https, gs
    S3 Multipart Upload:         s3w, s3w+https, s3w+http
    Amazon S3:   s3+https, s3+http, s3
    mmap:        mmap
    libcurl:     imaps, pop3, gophers, http, smb, gopher, sftp, ftps, imap, smtp, smtps, rtsp, scp, ftp, telnet, mqtt, rtmp, ldap, https, ldaps, smbs, tftp, pop3s, dict
    iRODS:       irods4.3.1, irods
    crypt4gh-needed:     crypt4gh
    mem:         mem
whitwham commented 6 months ago

When we built iRODS one of our OpenStack machines it worked fine. That was using boost 1.74 on a Ubuntu Jammy machine.