2

我有一个问题,我现在花了几个月的时间来解决!

本质上,我正在运行需要读取并保存到 HD5 文件的代码。我为此使用 h5py。

调试起来非常困难,因为问题(无论是什么)只发生在大约 5% 的情况下(每次运行需要几个小时),当它到达那里时,它会完全崩溃 python,所以用 python 本身调试是不可能的。使用简单的日志也无法确定确切的崩溃情况——它似乎是非常随机的,在代码中的不同点崩溃,或者有延迟。

我尝试使用 OllyDbg 来弄清楚发生了什么,并且可以安全地得出结论,它始终在以下位置崩溃:http: //i.imgur.com/c4X5W.png图片

似乎是在调用 python 本机 PyObject_ClearWeakRefs 后不久,出现访问冲突错误消息。奇怪的是文件被成功写入。什么会导致访问冲突错误?或者是python内部(例如堆栈?)而不是文件(即我的代码)相关?

有谁知道这里发生了什么?如果没有,是否有更聪明的方法来找出到底发生了什么?也许一些隐藏的python日志或我不知道的东西?谢谢

4

3 回答 3

1

PyObject_ClearWeakRefs在 python 解释器本身中。但如果它只发生在少量运行中,它可能与硬件有关。你可以尝试的事情:

  • 在另一台机器上运行你的程序。如果它在那里没有崩溃,则可能是硬件问题。
  • 重新安装 python,以防安装的版本以某种方式损坏。
  • 运行内存测试程序。
于 2012-08-15T15:00:24.653 回答
1

感谢所有的答案。这次我运行了两个版本,一个带有新的 python 安装和我的相同程序,另一个在我的原始计算机/安装上,但是用 numpy 读/写程序替换了所有 HDF5 读/写程序。

该程序继续在我的第二台计算机上偶尔崩溃,但在我的主计算机上,更改代码后我的崩溃为零。因此,我认为可以安全地得出结论,这些问题与 HDF5 或更具体地与 h5py 相关。似乎更多的人在这方面遇到了 h5py 的问题。鉴于我的应用程序中的任何错误都可能导致巨大的财务损失,我决定完全抛弃 HDF5 以支持其他稳定的解决方案。

于 2012-09-26T21:46:53.090 回答
-2

使用 try catch 语句。这可以放入程序中,以防止程序在输入错误数据时崩溃

于 2014-05-17T09:03:32.650 回答