JDK-6549267 : BigApp failure - timing bug in parallel bootstrap classloader
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2007-04-23
  • Updated: 2012-10-08
  • Resolved: 2007-06-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6 JDK 7 Other
5.0u33,hs10Fixed 6u4Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
We have run into 2 BigApps failures when running w/ shared server VM. Both are asserts w/ the same message and they happen right away.

I started another run of the same App w/o CDS on -server. It has been running OK for more than 3 days now. 

App : BigApps (see comments)
OS : Solaris 10 x64

Flags : -server  -XX:+UseSerialGC -XX:+ShowMessageBoxOnError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

VM : -server w/ sharing on
Java HotSpot(TM) Tiered VM (build 20070418083141.never.c1-fastdebug, mixed mode, sharing)

Host : jtg-sunfire-2.sfbay
root pass : please contact submitter

java process is still running :

Here is the error message :

> ------------------------------------------------------------------------------
> Internal Error at methodOop.cpp:628, pid=17954, tid=90
> Error: assert(_i2i_entry == 0,"should only be called once")
> Do you want to debug the problem?
> To debug, run 'dbx - 17954'; then switch to thread 90
> Enter 'yes' to launch dbx automatically (PATH must include dbx)
> Otherwise, press RETURN to abort...
> ============================================================================== 

(dbx) where
current thread: t@90
dbx: read of 8 bytes at address b90c2000 failed -- No such file or directory
dbx: attempt to read frame failed -- cannot derive frame pointer
  [1] ___nanosleep(0xb90c0be8, 0xb90c0bf0), at 0xbff30327
  [2] _sleep(0x64), at 0xbff24a23
  [3] os::message_box(0xbfb16676, 0xbfc50018), at 0xbecca5da
  [4] VMError::show_message_box(0xb90c0d7c, 0xbfc50018, 0x7d0), at 0xbef4f775
  [5] VMError::report_and_die(0xb90c0d7c), at 0xbef4ee15
  [6] report_assertion_failure(0xbf88f193, 0x274, 0xbf88f15e), at 0xbe6fdabb
  [7] methodOopDesc::link_method(0x98b1a900, 0x81b1954, 0x81b1000), at 0xbec6e4ba
  [8] SystemDictionary::load_shared_class(0xb90c0fa8, 0x81b1934, 0x0), at 0xbee2cc15
  [9] SystemDictionary::load_shared_class(0xb90c1020, 0x81b192c, 0x0), at 0xbee2b7af
  [10] SystemDictionary::load_instance_class(0xb90c1224, 0x81b192c, 0x0), at 0xbee2dda5
  [11] SystemDictionary::resolve_instance_class_or_null(0xb90c130c, 0x81b192c, 0x0, 0x0, 0x81b1000), at 0xbee28aad
  [12] SystemDictionary::resolve_or_null(0xb90c130c, 0x81b192c, 0x0, 0x0, 0x81b1000), at 0xbee24a4d
  [13] SystemDictionary::resolve_or_fail(0xb90c15ac, 0x81b192c, 0x0, 0x0, 0x1, 0x81b1000), at 0xbee23bf6
  [14] constantPoolOopDesc::klass_at_impl(0xb90c1778, 0x81b1928, 0xdb, 0x81b1000), at 0xbe6ec0b0
  [15] constantPoolOopDesc::klass_at(0xb90c1778, 0x98b0b028, 0xdb, 0x81b1000), at 0xbe568e01
  [16] InterpreterRuntime::_new(0x81b1000, 0x98b0b028, 0xdb, 0xbae169c4, 0x900f06d8, 0xb90c17d0), at 0xbe8226f4
  [17] 0xbae16a09(0x900f06d8, 0xb90c17fc, 0x982054e7, 0xb90c1834, 0x98b0b6e0, 0x0), at 0xbae16a08
  [18] 0xbae02f0d(0x0, 0x1, 0x0, 0x900f06c0, 0x900f06d8, 0xb90c1838), at 0xbae02f0c
  [19] 0xbae02f0d(0x2288, 0x90778ce0, 0x900f06d8, 0x900f06d8, 0x900f06f0, 0xb90c1874), at 0xbae02f0c
  [20] 0xbae02f0d(0x2288, 0x900f06f0, 0xb90c18a4, 0x940241a4, 0xb90c18d0, 0x94027270), at 0xbae02f0c
  [21] 0xbae02f0d(0x0, 0x900f06f0, 0xb90c18d4, 0x940242a5, 0xb90c18fc, 0x94027270), at 0xbae02f0c
  [22] 0xbae02ce1(0x900f06f0, 0xb90c1900, 0x9400f79b, 0xb90c19b4, 0x940219d0, 0x0), at 0xbae02ce0
  [23] 0xbae02da7(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xbae02da6
  [24] 0xbae033e9(0x9075c9f0, 0x1, 0x81b1000, 0x1f80, 0xbfba61d8, 0x81b1000), at 0xbae033e8
  [25] 0xbae0029d(0xb90c1a30, 0xb90c1ce8, 0xa, 0x98816690, 0xbae0afa0, 0xb90c1bf8, 0x1, 0x81b1000), at 0xbae0029c
  [26] JavaCalls::call_helper(0xb90c1ce4, 0xb90c1b58, 0xb90c1bf0, 0x81b1000), at 0xbe848adc
  [27] os::os_exception_wrapper(0xbe84843c, 0xb90c1ce4, 0xb90c1b58, 0xb90c1bf0, 0x81b1000), at 0xbecca7d3
  [28] JavaCalls::call(0xb90c1ce4, 0x81b1920, 0xb90c1bf0, 0x81b1000), at 0xbe848410
  [29] JavaCalls::call_virtual(0xb90c1ce4, 0x81b1914, 0xbfc4931c, 0xbfc49580, 0xb90c1bf0, 0x81b1000), at 0xbe847732
  [30] JavaCalls::call_virtual(0xb90c1ce4, 0x81b1910, 0x81b1914, 0xbfc4931c, 0xbfc49580, 0x81b1000), at 0xbe847944
  [31] thread_entry(0x81b1000, 0x81b1000), at 0xbe98188d
  [32] JavaThread::thread_main_inner(0x81b1000), at 0xbee65046
  [33] JavaThread::run(0x81b1000), at 0xbee64d86
  [34] java_start(0x81b1000), at 0xbecc44f2
  [35] _thr_setup(0xb97d5c00), at 0xbff2fd36
=>[36] _lwp_start(), at 0xbff30020
  [37] 0x0(), at 0xffffffffffffffff


EVALUATION Timing hole in logic that prevents bootstrap classloader from having more than one thread load the same class/classloader at the same time. Multiple classes can load in parallel with the bootstrap classloader. No benefit, and complications from a single class loading in parallel.

WORK AROUND specify -Xshare:off