python - urllib3 段错误(核心已转储)

标签 python linux segmentation-fault urllib3

我每周运行一个 python 程序时遇到段错误(“非法操作(核心已转储)”),多年来我一直没有出现错误。我还在 Nitrous 上运行 Ubuntu。我记得以前用 C 编写代码时曾处理过这些问题,最近我不必处理它们。

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

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

谢谢!

最佳答案

"Illegal operation"

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

Importing the library urllib3 seems to be causing the problem.

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

best workflow for diagnosing these problems

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

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

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

关于python - urllib3 段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938381/

相关文章:

python - Tornado Web 服务器与 AngularJS 运算符表达式一起工作时效果不佳

python - 如何按 Pandas 数据框中的对象属性进行过滤

linux - SVN 连接被拒绝

linux - 在 KVM 上引导克隆的 aws 实例的原始文件

linux - 禁用伪 tty 分配

c - 在 C 中使用 strtok() 的段错误

php - 使用 is_file() 和 is_dir() 进行文件访问会导致段错误

python - Pandas 滚动申请不做任何事情

python - Tornado Sentry 集成

c - 吉尼 错误代码 139 : Segmentation fault (Core dumped) using C