Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6650373
Votes 0
Synopsis Assert in methodOopDesc::make_adapters().
Category hotspot:compiler2
Reported Against
Release Fixed hs12(b02)
State 10-Fix Delivered, bug
Priority: 4-Low
Related Bugs
Submit Date 15-JAN-2008
Description
I hit this assert when running my EA VM with CTW

#  Internal Error (src/share/vm/utilities/growableArray.hpp:173), pid=8075, tid=2
#  Error: assert(0 <= i && i < _len,"illegal index")

CodeCache is full (without EA it is full few methods further) as result
the index to growable array is -2:

address methodOopDesc::make_adapters(methodHandle mh, TRAPS) {
...
  AdapterHandlerEntry* adapter = AdapterHandlerLibrary::get_adapter(mh);
  if (adapter == NULL ) {
    THROW_0(vmSymbols::java_lang_OutOfMemoryError());
  }


class AdapterHandlerLibrary: public AllStatic {
  static GrowableArray<AdapterHandlerEntry*> * _handlers; // the corresponding handlers
...
  static AdapterHandlerEntry* get_entry( int index ) { return _handlers->at(index); }
  static AdapterHandlerEntry* get_adapter(methodHandle method)  { return get_entry(get_create_adapter_index(method)); }


int AdapterHandlerLibrary::get_create_adapter_index(methodHandle method) {
...
    B = BufferBlob::create(AdapterHandlerEntry::name, &buffer);
    if (B == NULL)  return -2;          // Out of CodeCache space
Posted Date : 2008-01-15 01:22:01.0
Work Around
N/A
Evaluation
There are few problems here:

0. AdapterHandlerLibrary::get_create_adapter_index() should return
   0 (instead of -2) when CodeCache is full. The NULL adaper value 
   is stored in the first array element AdapterHandlerLibrary::_handlers[0].
1. methodOopDesc::make_adapters() doesn't check that compilation was disabled.
   It is only check that VM runs with -Xint option.
2. VM doesn't exit immediately if CodeCache is full in methods
   AdapterHandlerLibrary::get_create_adapter_index() and turn_off_compilser()
   when VM runs with -XX:+CompileTheWorld or -XX:+ExitOnFullCodeCache.
Posted Date : 2008-01-15 01:22:01.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang