python - docker中cmp指令的python解释器分段错误
问题描述
我在 docker 环境中运行 python 脚本,运行几个小时后,我在 python3 上遇到了分段错误和核心转储。我使用 gdb 分析核心,似乎核心转储的最后一帧在__GI___select select.c:41
. 其他帧只是??()
和_PyEval_EvalFrameDefault()
。
我尝试反汇编最后一帧,它显示崩溃发生在 上=> 0x00007ff212080ff7 <+23>: cmp $0xfffffffffffff000,%rax
,它尝试将 select syscall 返回值与 -4096 进行比较,以确定它们是否应该将负部分移动到 errno。该指令不应导致任何段错误,因为没有内存访问。
$rax 的值是-514 (ERESTARTNOHAND)
,看起来很实用。
根据日志,损坏似乎发生在我的 try 块上subprocess.run(arg_test, timeout=5)
我原本以为是栈大小有限造成的,但是在将 stack ulimit 设置为 262144 kb 后我遇到了同样的问题
谁能告诉我我想如何调试这种问题?太感谢了
- - - - - - - - - - 编辑 - - - - - - - - - - - -
崩溃位置似乎是随机的,我在 的 处发现了另一个崩溃=> 0x00007f50813c31cc <+108>: cmp $0xfffffffffffff000,%rax
,而的__GI___sigtimedwait
值为。$rax
-11
我不明白这条指令如何导致分段错误。
解决方案
推荐阅读
- jquery - 从jQuery中的父元素内部获取前(n)个元素
- angular - 从子组件自动重定向到父组件
- angular - 类错误地实现了接口“OnInit”。“组件”类型中缺少属性“ngOnInit”,但在“OnInit”类型中是必需的
- python - Windows10:无法打开 Anaconda 导航器或 Spyder
- python - 基于多列转置数据框
- visual-studio-code - 在 VS Code 中使用组进行搜索和替换
- html - 数据仅在角度刷新后显示
- karate - Chrome.robot 是否支持并行运行
- python - 为什么我的 Heroku 应用程序会无限期加载?
- r - Google Maps Platform 服务器使用 rstudio 拒绝了您的请求