【问题标题】:urllib3 segfault (core dumped)urllib3 段错误(核心转储)
【发布时间】:2016-08-14 01:20:02
【问题描述】:

我遇到了一个 python 程序的段错误(“非法操作(核心转储)”),该程序我每周都运行了很长时间而没有错误。我也在 Nitrous 上运行 Ubuntu。我记得以前用 C 编码时处理过这些 yonks,而最近我不必处理它们。

导入库 urllib3 似乎是导致问题的原因。有人知道解决办法吗?

另外,有人可以建议或链接到未来诊断这些问题的最佳工作流程吗?

谢谢!

【问题讨论】:

标签: python linux segmentation-fault urllib3


【解决方案1】:

“非法操作”

通常意味着您正在为功能更强大的处理器(例如Haswell)在功能较弱的处理器(例如Ivy Bridge)上运行编译的代码。

导入库 urllib3 似乎是导致问题的原因。

在我的 Ubuntu 机器上,import urllib3 加载 libssl.so.1.0.0libcrypto.so.1.0.0_ssl.x86_64-linux-gnu.so。这些加密库很可能使用您的处理器可能不支持的AVXAVX2 等指令进行编译。

诊断这些问题的最佳工作流程

您的第一步应该是找出导致SIGILL 的指令。为此,请运行:

gdb python
(gdb) run
>>> import urllib3  # do whatever is necessary to reproduce SIGILL
(gdb) x/i $pc
(gdb) info sym $pc

上面的最后两个命令应该为您提供导致SIGILL 的指令,以及使用该指令的库。一旦您知道该指令是什么,您就可以验证您的处理器不支持它,并联系“有罪”库的分销商以获得不同的编译(一个不使用您的 CPU 不支持的指令的编译)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 2021-06-03
    相关资源
    最近更新 更多