jstack -F 命令在Linux 64位机器报错:get_thread_regs failed for a lwp

jstack -F 命令在Linux 64位机器报错:get_thread_regs failed for a lwp

最近发现一个线上项目运行一段时间之后会僵死。程序不报任何异常,占有系统资源也都正常,就是对外提供不了服务了。

(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen

根据经验,应该是程序有死锁情况,于是在线上运行“jstack –F <pid>”命令,想把线程堆栈dump下来。

但是,发现这个命令老是报下面的错误:

Thread 27316: (state = BLOCKED)
Error occurred during stack walking:
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp

线上环境是:

Linux 2.6.18-194.el5 x86_64 x86_64 x86_64 GNU/Linux

java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

经过分析发现,这是JDK6u23之前版本的一个Bug,将JDK升级到最新版本(1.6.0_31)就可以解决问题了。

jstack -F 命令在Linux 64位机器报错:get_thread_regs failed for a lwp_第1张图片

(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen

你可能感兴趣的:(jstack -F 命令在Linux 64位机器报错:get_thread_regs failed for a lwp)