尝试从gdb运行java应用程序导致segfault,但单独运行app却没有.这个应用程序是.JAR,它使用JOGL和一些内存映射来与GPU通信.
下面的Stacktrace暗示了某种内存访问问题,但我不明白它为什么会出现在GDB中而不是现实生活中.是否有一些环境因素gdb需要知道才能正确执行?
这个问题在JVM OpenJDK 6和7以及Oracle JRE 7之间仍然存在.在启用segfault之前,oracle JRE在启动时运行得更远.所有段错误在试验之间的发生和位置都是一致的.
Segfault在GPU和驱动程序之间持续存在(!!):nvidia,radeon,fglrx current和fglrx beta(14.xx).GDB将成功附加到已经运行的程序实例,但是gDEBugger似乎不可能这样做,这最终需要工作.
没有意图使用gdb进行实际调试.相反,我试图使用gDEBugger来执行OpenGL调试.gDEBugger显然依赖于GDB作为其后端的一部分,因此如果GDB失败,gDEBugger也会失败.这导致尝试单独运行gdb以隔离问题.
gDEBugger output:
GDB String: [Thread debugging using libthread_db enabled]
GDB String: Using host libthread_db library /lib/x86_64-linux-gnu/libthread_db.so.1 .
Thread Created: 140737353893632 (LWP: 3265)
Thread Created: 140737294624512 (LWP: 3266)
Thread Created: 140737293571840 (LWP: 3267)
Thread Created: 140737292519168 (LWP: 3268)
Thread Created: 140737155180288 (LWP: 3269)
Thread Created: 140737154127616 (LWP: 3270)
Thread Created: 140736913602304 (LWP: 3271)
Thread Created: 140736909629184 (LWP: 3272)
Thread Created: 140736908576512 (LWP: 3273)
Thread Created: …Run Code Online (Sandbox Code Playgroud)