正在修复bcftools中的分段错误



我正在尝试使用bcftools合并3000个细菌bcf文件。vcf文件是使用GATK生成的,并转换为bcf,并由bcftools进行索引。bcftools继续分析20%的数据,但它总是过早终止,并只为一部分变体(从2M个细菌基因组中最多500kb(产生合并的bcf文件。我使用的代码是这样的:

bcftools1.7/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b > CombinedVCF

输出错误为:

/bin/sh: line 1: 17041 Segmentation fault (core dumped) bcftools/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b > CombinedVCF

之前,我对400个样本尝试了相同的命令,没有任何问题。

在线搜索时,"当对变量的引用位于该变量所在的段之外时,或者当试图写入只读段中的位置时,会发生segfault"。该命令运行在特定作业具有80Gb可用RAM的群集上。我不确定这个错误是由于bcftools软件本身的问题还是由于运行该命令的系统的限制?

以下是用于复制错误的示例bcf文件(https://figshare.com/articles/BCF_file_segfault/7412864)。这个错误只出现在大样本量的情况下,所以我无法进一步缩小样本量。

我不确定这个错误是由于bcftools软件本身的问题还是由于运行该命令的系统的限制?

当一个程序崩溃时,总是程序本身的错误——如果它遇到系统的限制,它应该告诉你这样做(例如unable to allocate NNN bytes(,而不是崩溃。

你的第一步应该是找出它在哪里崩溃:

gdb -ex run --args bcftools1.7/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b

GDB应停止使用Program received SIGSEGV。此时,在(gdb)提示符下键入whereinfo registersinfo localsx/20i $pc-40,并使用输出更新问题。

此输出可能使某人能够确定您遇到的错误、可能的解决方案等。

如果你要向bfctools的开发人员报告这个问题,这也是他们需要的信息。

我在用bcftools合并数千个vcf文件时也遇到了问题。在我的案例中,问题在于打开的文件数量。您可能需要增加打开文件的限制。尝试以下命令:

# check soft limit
ulimit -Sn
#check hard limit
ulimit -Hn
#set soft limit
ulimit -Sn <number>

这是bcftools中的一个错误,作者在通知后友好地修复了它:

https://github.com/samtools/bcftools/issues/929#issuecomment-443614761

相关内容

  • 没有找到相关文章

最新更新