我正在通过PBS批处理作业运行plink软件。当我运行作业时出现此错误:
*** glibc detected *** /software/plink: double free or corruption (out): 0x000000018dfafca0 ***
======= Backtrace: =========
[0x7d7691]
[0x7d8bea]
[0x45f5ed]
[0x47bb11]
[0x40669a]
[0x7bdb2c]
[0x400209]
然而,它只发生在我的一个文件(bw 30-60 gb的文件)上,每次重新运行都显示完全相同的回溯跟踪映射。我尝试不通过批处理调度器运行它,并再次收到相同的错误,具有相同的回溯映射。我只是在使用这个软件(plink),并没有写它,所以网上的大多数答案都是关于在你的程序中写和释放内存。
对
有什么想法吗?- 是什么导致这个错误,和
- 我该如何修复它?
是什么导致这个错误,和
plink
我该如何修复它?
你不能。你可以做两件事中的一件,这取决于你知道和理解的程度。
首先,从源代码构建最新版本的plink
,看看问题是否仍然存在。
如果没有,您就完成了(或者至少您可能希望其他人发现并修复了这个问题)。
如果它确实存在,您必须为您或plink
开发人员充分调试问题以修复它。一些工具应该有帮助:Valgrind和Address Sanitizer(注意:除了Clang, Address Sanitizer也包含在GCC-4.8中)。
一旦您有了一个好的报告(内存被分配的位置,以及它被损坏的位置),您应该修复它并将修复提交给plink
开发人员,或者给他们一个带有分配和损坏位置和堆栈跟踪的错误报告。