vgteam / vg

tools for working with genome variation graphs
https://biostars.org/tag/vg/
Other
1.1k stars 194 forks source link

vg giraffe signal 11 crash on v1.45.0 #3826

Closed jmonlong closed 1 year ago

jmonlong commented 1 year ago

When trying to align short reads to the HPRC pangenome, I got a signal 11 error. It works with vg 1.44.0.

I downloaded the HPRC CHM13-based pangenome index from the S3 repo and ran with:

wget https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/minigraph-cactus/filtered/hprc-v1.0-mc-chm13-minaf.0.1.xg
wget https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/minigraph-cactus/filtered/hprc-v1.0-mc-chm13-minaf.0.1.gbwt
wget https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/minigraph-cactus/filtered/hprc-v1.0-mc-chm13-minaf.0.1.gg
wget https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/minigraph-cactus/filtered/hprc-v1.0-mc-chm13-minaf.0.1.min
wget https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/minigraph-cactus/filtered/hprc-v1.0-mc-chm13-minaf.0.1.dist

wget -O vg44 https://github.com/vgteam/vg/releases/download/v1.44.0/vg
chmod +x vg44

GRAPH=hprc-v1.0-mc-chm13-minaf.0.1

## doesn't work with vg 1.45.0
vg giraffe --progress --sample "test" --output-format gaf -f ../../reads/ERR903030_1.fastq.gz -f ../../reads/ERR903030_2.fastq.gz -x $GRAPH.xg -H $GRAPH.gbwt -g $GRAPH.gg -d $GRAPH.dist -m $GRAPH.min -t 8 | gzip > test.hprc-v1.0-mc-chm13-minaf.0.1.gaf.gz

## seems to work with vg 1.44.0
./vg44 giraffe --progress --sample "test" --output-format gaf -f ../../reads/ERR903030_1.fastq.gz -f ../../reads/ERR903030_2.fastq.gz -x $GRAPH.xg -H $GRAPH.gbwt -g $GRAPH.gg -d $GRAPH.dist -m $GRAPH.min -t 8 | gzip > test.hprc-v1.0-mc-chm13-minaf.0.1.gaf.gz

When using v1.45.0, it crashes very fast. vg version returns:

vg version v1.45.0 "Alpicella"
Compiled with g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 on Linux
Linked against libstd++ 20210601
Built by anovak@octagon

The error message is:

ERROR: Signal 11 occurred. VG has crashed. Visit https://github.com/vgteam/vg/issues/new/choose to report a bug.
Stack trace path: /tmp/vg_crash_boPHQq/stacktrace.txt
Please include the stack trace file in your bug report!

The stack trace is:

Crash report for vg v1.45.0 "Alpicella"
Stack trace (most recent call last) in thread 33345:
#11   Object "", at 0xffffffffffffffff, in 
#10   Object "/public/home/jmonlong/bin/vg", at 0x1f3c532, in __clone
#9    Object "/public/home/jmonlong/bin/vg", at 0x14498f8, in start_thread
#8    Object "/public/home/jmonlong/bin/vg", at 0x1e70d3d, in gomp_thread_start
#7    Object "/public/home/jmonlong/bin/vg", at 0x10412e5, in unsigned long vg::io::paired_for_each_parallel_after_wait<vg::Alignment>(std::function<bool (vg::Alignment&, vg::Alignment&)>, std::function<void (vg::Alignment&, vg::Alignment&)>, std::function<bool ()>, unsigned long) [clone ._omp_fn.0]
#6    Object "/public/home/jmonlong/bin/vg", at 0xd371e8, in std::_Function_handler<void (vg::Alignment&, vg::Alignment&), main_giraffe(int, char**)::{lambda()#1}::operator()() const::{lambda(vg::Alignment&, vg::Alignment&)#6}>::_M_invoke(std::_Any_data const&, vg::Alignment&, vg::Alignment&)
#5    Object "/public/home/jmonlong/bin/vg", at 0xf9df64, in vg::MinimizerMapper::map_paired(vg::Alignment&, vg::Alignment&, std::vector<std::pair<vg::Alignment, vg::Alignment>, std::allocator<std::pair<vg::Alignment, vg::Alignment> > >&)
#4    Object "/public/home/jmonlong/bin/vg", at 0xf98f15, in vg::MinimizerMapper::map_paired(vg::Alignment&, vg::Alignment&)
#3    Object "/public/home/jmonlong/bin/vg", at 0xf8cafa, in void vg::MinimizerMapper::process_until_threshold_c<double>(unsigned long, std::function<double (unsigned long)> const&, std::function<bool (unsigned long, unsigned long)> const&, double, unsigned long, unsigned long, vg::LazyRNG&, std::function<bool (unsigned long)> const&, std::function<void (unsigned long)> const&, std::function<void (unsigned long)> const&) const [clone .constprop.0]
#2    Object "/public/home/jmonlong/bin/vg", at 0xf86ada, in std::_Function_handler<bool (unsigned long), vg::MinimizerMapper::map_paired(vg::Alignment&, vg::Alignment&)::{lambda(unsigned long)#20}>::_M_invoke(std::_Any_data const&, unsigned long&&)
#1    Object "/public/home/jmonlong/bin/vg", at 0x1b43861, in vg::Alignment::Alignment(vg::Alignment const&)
#0    Object "/public/home/jmonlong/bin/vg", at 0x1b4eb81, in void google::protobuf::internal::RepeatedPtrFieldBase::MergeFrom<google::protobuf::RepeatedPtrField<vg::Path>::TypeHandler>(google::protobuf::internal::RepeatedPtrFieldBase const&)

When using vg 1.44.0, it seems to work (as in doesn't crash right away).

I was running this on courtyard/plaza from: /public/groups/vg/jmonlong/vg_issues/giraffe_hprc_1.45.0 in case that helps

adamnovak commented 1 year ago

It looks like the pairing code now ends up referring to an alignment that doesn't exist, and when we go to use it, we segfault.