You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04下Fortran程序出现segmentation fault无core文件生成如何解决

Ubuntu 18.04 Fortran程序段错误无core文件排查方案

核心原因排查项

  • 检查程序运行的工作目录写入权限
    你配置的core_pattern为相对路径core,会生成在程序启动时的工作目录下,先进入对应目录执行touch test_file验证是否有写入权限,无权限则先调整目录权限,也可以直接将core存储路径改为公共可写目录:
    echo "/tmp/core_%e_%p" > /proc/sys/kernel/core_pattern
    
  • 验证ulimit配置的生效范围
    ulimit -c unlimited是会话级配置,仅在当前执行命令的终端生效,若你在其他终端启动程序、或是用sudo启动程序,配置会失效。sudo启动时需携带ulimit配置:
    sudo sh -c "ulimit -c unlimited && ./LPDM_gnu_omp"
    
    如需全局生效,可编辑/etc/security/limits.conf添加如下两行,重启终端后生效:
    * soft core unlimited
    * hard core unlimited
    
  • 关闭apport服务拦截
    Ubuntu默认的apport崩溃上报服务会拦截core文件生成,执行如下命令关闭后再测试:
    systemctl stop apport
    
  • 调整suid_dumpable内核参数
    执行sysctl fs.suid_dumpable查看参数值,若为0则会限制特殊权限程序生成core,改为1即可:
    sysctl -w fs.suid_dumpable=1
    
  • 调整栈大小限制
    你的ulimit配置中栈大小仅为8M,Fortran OpenMP程序极易出现栈溢出触发段错误,栈溢出时可能会破坏core生成的执行逻辑,先调大栈大小再测试:
    ulimit -s unlimited
    

临时替代方案

你当前用gdb启动程序直接触发段错误,无需等待core文件生成,在gdb触发段错误后直接执行bt命令即可打印完整调用栈,直接定位崩溃位置。

内容的提问来源于stack exchange,提问作者yufei159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:45:04