Search code examples
javacrashjvmcrash-dumps

What does L and IL mean in the crash dump string?


While going through a crash dump, I encountered following line

j  java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35

I have few quesions which I eagerly want to understand.

What does IL and L stand for in the string ILjava/awt/Conditional;Ljava/awt/EventFilter;

What is V+35 at the end of the string?


Solution

  • Those are type strings in a method signature.

    (ILjava/awt/Conditional;Ljava/awt/EventFilter;)V
    

    The I means int

    The Ljava/awt/Conditional; means java.awt.Conditional

    The Ljava/awt/EventFilter; means java.awt.EventFilter

    The V means void.

    So the method on the callstack is

      void pumpEventsForFilter(int, Conditional, EventFilter)
    

    This internal type string syntax is documented in the javadoc for Class.getName() and also in the JVM specification. (The same syntax appears in the strings generated by Object.toString ... assuming that it hasn't been overridden with something more human friendly.)

    And the +35 is a bytecode offset; i.e. an indication of where the method execution had gotten to in this stackframe.