[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    RFR (S): JDK-8005642 -[lambda] The VM crashes with SIGSEGV when run with serialization/deserializati
From:       Bharadwaj Yadavalli <bharadwaj.yadavalli () oracle ! com>
Date:       2013-01-31 16:19:39
Message-ID: 510A999B.2030204 () oracle ! com
[Download RAW message or body]

I would like to get a couple of code reviews for the changes at 
http://cr.openjdk.java.net/~bharadwaj/8005642/webrev that fix the 
segmentation violation.

Dereferencing a null generic MethodDescriptor results in this 
segmentation failure.

The reason for a MethodDescriptor being NULL is as follows: When a class 
that implements an interface with a default method, does not itself have 
a concrete implementation of the default method, we need to select the 
appropriate implementation for the class. The selection algorithm walks 
the superclass + superinterface hierarchy as described in 
http://cr.openjdk.java.net/~kamg/default_methods_in_hotspot.txt. This 
walk involves class resolution which might throw ClassCirculatoryError 
that needs to be recognized. When such a situation occurs, 
ClassDescriptor and MethodDescriptor are NULL. Attempting to look up for 
the default method implementation should move on to the next node in the 
search tree and not continue to operate on a NULL MethodDescriptor.

This change adds the needed check for exception.

It also has a small fix to a segmentation violation due to NULL pointer 
access when -XX:+TraceClassLoadingPreorder is specified.

Thanks,

Bharadwaj


[Attachment #3 (text/html)]

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I would like to get a couple of code reviews for the changes at
    <a class="moz-txt-link-freetext" \
href="http://cr.openjdk.java.net/~bharadwaj/8005642/webrev">http://cr.openjdk.java.net/~bharadwaj/8005642/webrev</a> \
that fix the  segmentation violation.<br>
    <br>
    Dereferencing a null generic MethodDescriptor results in this
    segmentation failure. <br>
    <br>
    The reason for a MethodDescriptor being NULL is as follows: When a
    class that implements an interface with a default method, does not
    itself have a concrete implementation of the default method, we need
    to select the appropriate implementation for the class. The
    selection algorithm walks the superclass + superinterface hierarchy
    as described in
    <a class="moz-txt-link-freetext" \
href="http://cr.openjdk.java.net/~kamg/default_methods_in_hotspot.txt">http://cr.openjdk.java.net/~kamg/default_methods_in_hotspot.txt</a>.
  This walk involves class resolution which might throw
    ClassCirculatoryError that needs to be recognized. When such a
    situation occurs, ClassDescriptor and MethodDescriptor are NULL.
    Attempting to look up for the default method implementation should
    move on to the next node in the search tree and not continue to
    operate on a NULL MethodDescriptor.<br>
    <br>
    This change adds the needed check for exception.<br>
    <br>
    It also has a small fix to a segmentation violation due to NULL
    pointer access when -XX:+<font color="black">TraceClassLoadingPreorder</font>
    is specified.<br>
    <br>
    Thanks,<br>
    <br>
    Bharadwaj<br>
    <br>
  </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic