[讨论] [HotSpot VM] Bug 报告贴

ZHH2009 2014-10-24
之前发现的HotSpot VM中的Bug不是在微博就是在ITeye站内信中发给@RednaxelaFX,
然后让他确认后提交到Oracle的Bug数据库。

微博和ITeye站内信不方便排版和汇总,所以专门发个贴来记录Bug吧,
其他人如果也发现Bug或疑似Bug都可以发在这里。
ZHH2009 2014-10-24
JDK版本: OpenJDK8u-dev debug版
操作系统: Windows 7
Bug标题: 开启+EnableTracing参数导致HotSpot VM Crash
Bug描述:
引用

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=\runtime/thread.hpp:669
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (E:\openjdk\jdk8u-dev\hotspot\src\share\vm\runtime/thread.hpp:669), pid=7652, tid=6892
#  assert(thread != NULL) failed: just checking
#
# JRE version:  (8.0) (build )
# Java VM: OpenJDK Client VM (25.40-b11-internal-debug mixed mode, sharing windows-x86 )
# Core dump written. Default location:E:\openjdk\jdk8u-dev\hotspot\build\vs-i486\hs_err_pid7652.mdmp
#
# An error report file with more information is saved as:
# E:\openjdk\jdk8u-dev\hotspot\build\vs-i486\hs_err_pid7652.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#



通过-XX:Flags来指定一个Flags File,
然后这个文件中只要先配置+EnableTracing,
然后前后只要跟一些其他bool、int类型的参数,就会导致crash,

以下是方法调用堆栈:
引用

jvm.dll!Thread::current() Line 669
jvm.dll!ResourceMark::ResourceMark() Line 116
jvm.dll!EventBooleanFlagChanged::writeEvent() Line 685
jvm.dll!TraceEvent<EventBooleanFlagChanged>::commit() Line 109
jvm.dll!trace_flag_changed<EventBooleanFlagChanged,bool>(...) Line 612
jvm.dll!CommandLineFlags::boolAtPut(..) Line 627


不满足断言:
Thread* thread = ThreadLocalStorage::thread();
assert(thread != NULL, "just checking");


原因是在解析参数时,main_thread线程还没有调用initialize_thread_local_storage
所以ThreadLocalStorage::thread()是NULL。
ZHH2009 2014-11-03
JDK版本: Oracle JDK 8 (build 1.8.0-b132)、(build 1.8.0_25-b18)
操作系统: Windows 7
Bug标题: JVMTI的MethodEntry和MethodExit在有些情况下没有成对出现
Bug描述:

通过JVMTI注册MethodEntry和MethodExit的回调方法时,
发现下面的方法出现在MethodExit中,但是没有出现在MethodEntry中:
引用

Lsun/misc/URLClassPath; -> getLoader( (I)Lsun/misc/URLClassPath$Loader; )
Lsun/misc/URLClassPath; -> getResource( (Ljava/lang/String;Z)Lsun/misc/Resource; )
Ljava/net/URLClassLoader$1; -> run( ()Ljava/lang/Class; )
Ljava/net/URLClassLoader$1; -> run( ()Ljava/lang/Object; )


另外,我在JDK 6/7中都没发现这个问题,

在我自己构建的比较新的OpenJDK8u (build 1.8.0-internal-fastdebug-_2014_10_28_23_08)也没发现这个问题。

目前原因还不清楚。
Global site tag (gtag.js) - Google Analytics