I am performing genome polishing on some PacBio data using PacBio tool gcpp
(arrow algorithm). The first iteration of polishing goes well, but during the second run, it crashed with a little informative error message:
terminate called without an active exception
Aborted
Gcpp seems to not have an Issues page available at GitHub, so it is difficult to get a proper feedback to this. As far as I understand, this is an C++ error usually related to multi-threading problems, but do not understand why this would happen during a second run and not the first one.
Previous running arrow, files are aligned with pbmm2
(the same kind of alignment is also done for iteration 1):
pbmm2 align arrow1.asm.fa subreads.bam asm.pbmm2.v2.bam --sort -j 24
Then arrow is executed as follow:
gcpp -j 24 asm.pbmm2.v2.bam -r arrow1.asm.fa -o arrow2.asm.gff,arrow2.asm.fa,arrow2.asm.fq
Which leads to the crash,
Any ideas on what is going on here and how could it be fixed?
EDIT: The error persist running the same files on a different system, and also lowering the number of threads (or not using parallelization at all). Start wondering if any input file got corrupted in a previous step?
EDIT2 Enabling --log-level DEBUG
will reveal that program breaks after a particular step "Calling variants for contig" for one contig
20210218 13:53:26.651 -|- INFO -|- MaybeFlushContig -|- 0x7efc226e5700|| -|- Calling variants for contig: contig_133_1|arrow
Which is the fifth contig whose variants are called. Don't know yet how this could be related to the error above though.
EDIT3 Just realized there is an open issue for this at the pbbioconda repository. Not solved yet though.
EDIT4 Using arrow through variantCaller 2.3.3
worked for me. The issue remains open but they are looking into it. Hope this eventually solves with agcpp
update.
Don't know what is causing the error, but I suspect a memory issue. It all depends on how the memory is shared between multiple CPUs. I'd go with the same command but 8-12 threads instead of 24.
I have reduced the number of cores to 8, and then to 1, but still the same error appears. Will try on a different platform next.