Fortran程序读取NetCDF时SIGSEGV段错误的原因排查与解决
解决ifort编译Fortran程序读取NetCDF时的SIGSEGV段错误
问题现象
使用ifort编译的Fortran程序读取Julia/Python生成的NetCDF文件时,触发SIGSEGV, segmentation fault错误,经定位错误发生在调用nf90_get_var函数处。
排查过程
- 验证HDF5与NetCDF库安装状态正常,编写小型Fortran测试程序可正常读取目标NetCDF文件
- 在环境配置完全一致的其他机器上,该程序可正常运行;同时读取其他Julia脚本生成的NetCDF文件时也无异常
根因分析
错误的核心原因是Pointer类型变量vbuf的形状定义错误:正确的形状应为(nland, tidx2-tidx1+1),但实际代码中定义不符合要求。需要注意的是,此次SIGSEGV段错误的提示信息没有直接指向变量形状问题,给故障定位造成了干扰。
内容的提问来源于stack exchange,提问作者Liren
相关产品推荐
相关产品推荐

