Skip to content

Missing local variables in thread dump #215

@thurka

Description

@thurka

Describe the bug
Not all local variable are displayed in thread dump extracted from a heap dump.

To Reproduce
Take a heap dump from following program:

package javaapplication2;

import java.io.PrintStream;

public class JavaApplication2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        print1(System.out);
    }

    private static void print1(PrintStream out) {
        print2(out);
    }

    private static void print2(PrintStream out) {
        print3(out);
    }

    private static void print3(PrintStream out) {
        for (int i = 0; i < 100000; i++) {
            out.println("Hello World");
        }
    }
    
}

Expected behavior
Currently the thread dump with local variables looks like this:

"main" prio=5 tid=1 RUNNABLE
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
       local variable: java.io.BufferedOutputStream#1
    at java.io.PrintStream.write(PrintStream.java:482)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
       local variable: sun.nio.cs.StreamEncoder#1
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
    at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
       local variable: java.io.OutputStreamWriter#1
    at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
    at java.io.PrintStream.write(PrintStream.java:527)
       local variable: java.lang.String#12
    at java.io.PrintStream.print(PrintStream.java:669)
    at java.io.PrintStream.println(PrintStream.java:806)
    at javaapplication2.JavaApplication2.print3(JavaApplication2.java:25)
    at javaapplication2.JavaApplication2.print2(JavaApplication2.java:20)
    at javaapplication2.JavaApplication2.print1(JavaApplication2.java:16)
       local variable: java.io.PrintStream#1
    at javaapplication2.JavaApplication2.main(JavaApplication2.java:12)
       local variable: java.lang.String[]#1

JavaApplication2.print2() and JavaApplication2.print3() are missing local variable: java.io.PrintStream#1

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions