Ubuntu 20.04下普通用户运行nano/pico出现段错误的问题排查
普通用户运行nano/pico报Segmentation Fault,sudo运行正常的问题解决与分析
问题现象
- Ubuntu 20.04系统中,普通用户身份执行
nano或pico时触发段错误:user@hostname:~$ nano Segmentation fault (core dumped) - 以
sudo nano/sudo pico方式运行则完全正常,vi编辑器无此异常 - 近期操作:完成Ubuntu常规更新、创建多个conda虚拟环境、修改
LD_LIBRARY_PATH以适配CUDA+TensorFlow,当前环境变量输出:/usr/local/cuda-11.5/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/rattie/miniconda3/lib/
问题定位与解决
- 经排查,
LD_LIBRARY_PATH中包含的/home/rattie/miniconda3/lib/路径是直接诱因 - 错误配置方式:在conda基础环境中全局设置了该变量,而非仅在TensorFlow专用虚拟环境中隔离配置(正确做法是通过
$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh脚本,仅在激活目标虚拟环境时加载自定义LD_LIBRARY_PATH) - 解决步骤:移除
LD_LIBRARY_PATH中的/home/rattie/miniconda3/lib/路径后,nano/pico恢复正常运行
原因解释
- 普通用户环境下,
LD_LIBRARY_PATH的优先级高于系统默认库搜索路径,nano启动时会优先加载conda库目录中的系统依赖(如libc、ncurses等),这些库的版本与系统预装nano的编译依赖不匹配,导致运行时触发段错误 - 使用
sudo运行时,默认会重置用户环境变量(不继承LD_LIBRARY_PATH),此时系统会加载原生系统库,nano可以正常执行 vi不受影响是因为其依赖库与conda目录中的库版本兼容,或者自身编译逻辑对依赖版本的兼容性更强
内容的提问来源于stack exchange,提问作者Wall-E
相关产品推荐
相关产品推荐

