main之外的分段故障
Segmentation fault outside of main
我正在处理一个大型的混合C++/Fortran项目。目前,可执行程序在启动时立即发生segfault,然后到达main
、AFAICT。事实上,在加载共享库之前。
部分输出:
$ ./myprog
Segmentation fault (core dumped)
$ gdb ./myprog core
GNU gdb (Ubuntu 7.7-0ubuntu3) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./myprog...done.
[New LWP 9194]
bt
Core was generated by `./myprog'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000000001 in ?? ()
(gdb) bt
#0 0x0000000000000001 in ?? ()
#1 0x00007fff08fa02ca in ?? ()
#2 0x0000000000000000 in ?? ()
还有:
$ LD_DEBUG=all ./myprog
Segmentation fault (core dumped)
$ ldd ./myprog
linux-vdso.so.1 => (0x00007fffd81fe000)
libxerces-c-3.1.so => /usr/lib/x86_64-linux-gnu/libxerces-c-3.1.so (0x00007f774738e000)
libxml-security-c.so.17 => /usr/lib/x86_64-linux-gnu/libxml-security-c.so.17 (0x00007f7747083000)
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f7746ab6000)
liblapack.so.3 => /usr/lib/liblapack.so.3 (0x00007f774631a000)
libboost_serialization.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.54.0 (0x00007f77460af000)
libboost_filesystem.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.54.0 (0x00007f7745e98000)
libboost_system.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 (0x00007f7745c94000)
libhdf5_cpp.so.7 => /usr/lib/x86_64-linux-gnu/libhdf5_cpp.so.7 (0x00007f7745a43000)
libhdf5.so.7 => /usr/lib/x86_64-linux-gnu/libhdf5.so.7 (0x00007f77455a6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7745388000)
libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f774506f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7744e6a000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7744b5f000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7744859000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7744641000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f774427b000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7743ea1000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7743c87000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7756ed5000)
libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f7743a49000)
可以看出,它依赖于相当多的库,但在LD加载任何库之前就会崩溃。我不知道下一步该往哪里看。有什么建议吗?
这是由使用-fPIC
编译对象文件和使用-shared
编译可执行文件引起的。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST