【问题标题】:Fixing segmentation fault error in bcftools修复 bcftools 中的分段错误错误
【发布时间】:2018-12-06 18:18:07
【问题描述】:

我正在尝试使用 bcftools 合并 3000 个细菌 bcf 文件。 vcf 文件已使用 GATK 生成并转换为 bcf 并由 bcftools 索引。 bcftools 继续分析 20% 的数据,但它一直过早终止并仅为部分变体生成合并的 bcf 文件(来自 2M 细菌基因组的高达 500kb)。我使用的代码是这样的:

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 个样本尝试了相同的命令,没有任何问题。

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

这里是复制错误的示例 bcf 文件 (https://figshare.com/articles/BCF_file_segfault/7412864)。 该错误仅出现在大样本量中,因此我无法进一步减小大小。

【问题讨论】:

    标签: segmentation-fault bioinformatics vcf-variant-call-format bcftools


    【解决方案1】:

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

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

    您的第一步应该是找出崩溃的位置

    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 的开发人员在您向他们报告问题时需要的信息。

    【讨论】:

      【解决方案2】:

      在将数千个 vcf 文件与 bcftools 合并时,我也遇到了问题。就我而言,问题在于打开文件的数量。您可能需要增加打开文件的限制。试试这些命令:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-31
          • 2016-03-13
          • 2017-06-04
          • 2019-07-04
          • 2013-06-08
          • 2012-09-04
          相关资源
          最近更新 更多