RFR (S) 8024667: VM crashes with "assert(method() != NULL) failed: must have set method"

Daniel D. Daugherty daniel.daugherty at oracle.com
Fri Oct 11 10:10:06 PDT 2013


 > http://cr.openjdk.java.net/~hseigel/bug_8024667/

src/share/vm/memory/metadataFactory.hpp
     No comments.

src/share/vm/oops/instanceKlass.cpp
     nit line 348: if ((ti != sti) && (ti != NULL) && !ti->is_shared()) {
         A little over parenthesized here.

     line 354: if ((local_interfaces != 
Universe::the_empty_klass_array()) &&
     line 355:     (local_interfaces != NULL) && 
!local_interfaces->is_shared()) {
         Moving the NULL check to be first would be faster.
         Also a little over parenthesized here.

     line 385: if ((method_ordering() != Universe::the_empty_int_array()) &&
     line 386:     (method_ordering() != NULL) && 
!method_ordering()->is_shared()) {
         Moving the NULL check to be first would be faster.
         Also a little over parenthesized here.

     line 411: if (secondary_supers() != 
Universe::the_empty_klass_array() &&
     line 412:     secondary_supers() != transitive_interfaces() &&
     line 413:     secondary_supers() != NULL && 
!secondary_supers()->is_shared()) {
         Moving the NULL check to be first would be faster.

     line 422:   if ((fields() != NULL) && !fields()->is_shared()) {
         A little over parenthesized here.

     line 437: if ((inner_classes() != Universe::the_empty_short_array()) &&
     line 438:     (inner_classes() != NULL) && 
!inner_classes()->is_shared()) {
         Moving the NULL check to be first would be faster.
         Also a little over parenthesized here.

     line 444: if ((annotations() != NULL) && !annotations()->is_shared()) {
         A little over parenthesized here.

None of my comments are critical so thumbs up if you're
pushed for time.

Dan


On 10/10/13 7:59 AM, harold seigel wrote:
> Hi,
>
> Please review this fix for bug 8024667.  The problem occurred because 
> function InstanceKlass::deallocate_contents() was erroneously 
> deallocating memory that was in the CDS shared region. This change 
> fixes the problem by checking if the memory is in the shared region 
> before allowing the deallocation.  The change also added asserts as an 
> additional check.
>
> Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8024667/ 
> <http://cr.openjdk.java.net/%7Ehseigel/bug_8024667/>
>
> Bug Link: https://bugs.openjdk.java.net/browse/JDK-8024667
>
> The fix was tested with JPRT and with UTE and JTREG tests with both 
> -client and -server.  It was also tested using the failed tests that 
> were reported in bugs 8024667 and 8026055.
>
> Thanks, Harold
>



More information about the hotspot-runtime-dev mailing list