Linux Anaconda环境运行Python出现Segmentation fault (core dumped)如何解决
问题排查与解决步骤
1. 调整任务CPU内存配额
你当前提交脚本中申请的CPU内存仅为3G,深度学习代码在加载数据集、初始化模型阶段会占用大量CPU内存,配额不足会直接触发段错误,哪怕GPU显存充足也会被集群的资源管理系统终止。先修改脚本中的内存申请参数:
# 将原来的3G调整为16G,若仍报错可继续上调到32G #$ -l h_vmem=16G #$ -l mem_req=16G
2. 验证虚拟环境在计算节点的兼容性
你之前仅在登录节点确认了Anaconda、TensorFlow、Python的版本匹配,但多数集群的登录节点与计算节点的系统依赖、GPU驱动版本存在差异,会导致conda环境中的二进制依赖加载失败触发段错误。
提交如下测试脚本验证环境可用性:
#!/bin/sh #$ -S /bin/sh #$ -l h_vmem=8G #$ -l mem_req=8G #$ -cwd #$ -e test_error.txt #$ -o test_output.txt source ~/local/anaconda3/etc/profile.d/conda.sh conda activate edward # 输出环境信息验证 which python3 python3 --version python3 -c "import tensorflow as tf; print('TensorFlow版本:',tf.__version__); print('GPU是否可用:',tf.config.list_physical_devices('GPU'))"
如果该测试任务也报段错误,说明环境在计算节点存在兼容问题,需要在计算节点上重新搭建虚拟环境安装对应依赖。
3. 用core dump文件定位具体报错点
你已生成core.1134崩溃文件,可通过gdb调试定位具体崩溃位置:
gdb python3 core.1134 # 进入gdb交互界面后输入bt打印调用栈,即可看到崩溃前的执行路径 bt
若调用栈指向CUDA、cuDNN相关库,说明你conda环境中安装的TensorFlow依赖的CUDA版本与计算节点的GPU驱动版本不兼容,需更换对应兼容版本的TensorFlow,或联系集群管理员更新驱动。
4. 避免Python解释器路径冲突
脚本中使用python3命令可能调用系统默认的Python而非conda虚拟环境的Python,可替换为虚拟环境Python的绝对路径规避该问题:
# 替换为你自己的虚拟环境Python路径 /home/edward/local/anaconda3/envs/edward/bin/python /home/edward/archive/cwgan-gp.learning.py
内容的提问来源于stack exchange,提问作者eddiewin
相关产品推荐
相关产品推荐

