SIGSEGV when debugging an overriden defender method

Peter Levart peter.levart at marand.si
Thu May 10 02:57:42 PDT 2012


I'm trying to debug code compiled and run by the latest lambda JDK (hg rev 
5323 (8310b83837de)) with:

-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60486,suspend=y,server=n

and get a SIGSEGV from JVM immediately after debug session starts (connection 
to debugger is established):

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f55398405d9, pid=18635, tid=140003423139584
#
# JRE version: 8.0
# Java VM: OpenJDK 64-Bit Server VM (24.0-b07 mixed mode linux-amd64 
compressed oops)
# Problematic frame:
# V  [libjvm.so+0x5c95d9]  JvmtiEnv::GetClassMethods(oopDesc*, int*, 
_jmethodID***)+0x249

The code normally runs without a problem (when not debugging). It also runs to 
completion when debugging but no breakpoints are set.

I traced down the crash to occur when the breakpoint is set inside a method in 
a class that @Overrides a defender method from the interface.

Here's an example:

import java.util.*;

public class SimpleTest
{
   static class MyList<T> extends ArrayList<T>
   {
      @Override
      public Iterable<T> sorted(Comparator<? super T> comparator)
      {
         return super.sorted(comparator); // <- put breakpoint HERE!
      }
   }

   public static void main(String[] args)
   {
      MyList<String> strings = new MyList<>();
      strings.add("aaa");
      strings.add("bbb");
      strings.add("ccc");

      System.out.println(strings.sorted(Comparators.reverseOrder()));
   }
}


I can send the hs_errXXX.log file if needed, but I think the above example can 
be used to reproduce the problem...


Regards,

Peter


More information about the lambda-dev mailing list