RFR: 8193513: add support for printing a stack trace on class loading [v7]

Doug Simon dnsimon at openjdk.org
Fri Jul 7 18:01:15 UTC 2023


On Fri, 7 Jul 2023 16:59:05 GMT, Ioi Lam <iklam at openjdk.org> wrote:

> We should organize the logging so that they are grouped logically.

There's nothing ungrouped about the original order; the order of `class+load` and `class+load+cause` were swapped but they were still grouped together.

> This happens before the class is actually loaded, so those logs cannot appear after the main class+load tag.

Maybe I'm interpreting the output incorrectly, but that's not what I see:

> java "-Xlog:class+load=debug,class+load+cause=info,class+load+placeholders=debug" -XX:LogClassLoadingCauseFor=java.lang.StringCoding --version
...
[1.917s][debug][class,load,placeholders] entry java/lang/StringCoding : find_and_add LOAD_INSTANCE
[1.917s][debug][class,load,placeholders] loadInstanceThreadQ threads:0x000000013080a000,
[1.917s][debug][class,load,placeholders] superThreadQ threads:
[1.917s][debug][class,load,placeholders] defineThreadQ threads:
[1.917s][info ][class,load             ] java.lang.StringCoding source: /Users/dnsimon/dev/jdk-jdk/open/build/macosx-aarch64/jdk/modules/java.base
[1.917s][debug][class,load             ]  klass: 0x000000030007acf8 super: 0x0000000300041170 loader: [loader data: 0x00006000034ccaa0 of 'bootstrap'] bytes: 1361 checksum: af8c723a
[1.917s][info ][class,load,cause       ] Java stack when loading java.lang.StringCoding:
[1.917s][info ][class,load,cause       ]        at java.lang.String.encodeUTF8(java.base/String.java:1302)
[1.917s][info ][class,load,cause       ]        at java.lang.String.encode(java.base/String.java:867)
[1.917s][info ][class,load,cause       ]        at java.lang.String.getBytes(java.base/String.java:1818)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.Util.toBytes(java.base/Util.java:55)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.UnixFileSystem.<init>(java.base/UnixFileSystem.java:82)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.BsdFileSystem.<init>(java.base/BsdFileSystem.java:50)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.MacOSXFileSystem.<init>(java.base/MacOSXFileSystem.java:52)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.MacOSXFileSystemProvider.newFileSystem(java.base/MacOSXFileSystemProvider.java:44)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.MacOSXFileSystemProvider.newFileSystem(java.base/MacOSXFileSystemProvider.java:37)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.UnixFileSystemProvider.<init>(java.base/UnixFileSystemProvider.java:78)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.BsdFileSystemProvider.<init>(java.base/BsdFileSystemProvider.java:38)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.MacOSXFileSystemProvider.<init>(java.base/MacOSXFileSystemProvider.java:39)
[1.917s][info ][class,load,cause       ]        at sun.nio.fs.DefaultFileSystemProvider.<clinit>(java.base/DefaultFileSystemProvider.java:35)
[1.917s][info ][class,load,cause       ]        at java.nio.file.FileSystems.getDefault(java.base/FileSystems.java:186)
[1.917s][info ][class,load,cause       ]        at java.nio.file.Path.of(java.base/Path.java:148)
[1.917s][info ][class,load,cause       ]        at jdk.internal.module.SystemModuleFinders.ofSystem(java.base/SystemModuleFinders.java:188)
[1.917s][info ][class,load,cause       ]        at jdk.internal.module.ModuleBootstrap.boot2(java.base/ModuleBootstrap.java:244)
[1.917s][info ][class,load,cause       ]        at jdk.internal.module.ModuleBootstrap.boot(java.base/ModuleBootstrap.java:174)
[1.917s][info ][class,load,cause       ]        at java.lang.System.initPhase2(java.base/System.java:2227)
[1.917s][debug][class,load,placeholders] entry java/lang/StringCoding : find_and_add DEFINE_CLASS
[1.917s][debug][class,load,placeholders] loadInstanceThreadQ threads:0x000000013080a000,
[1.917s][debug][class,load,placeholders] superThreadQ threads:
[1.917s][debug][class,load,placeholders] defineThreadQ threads:0x000000013080a000,
[1.917s][debug][class,load,placeholders] entry java/lang/StringCoding : find_and_remove DEFINE_CLASS , InstanceKlass 'java/lang/StringCoding'
[1.917s][debug][class,load,placeholders] loadInstanceThreadQ threads:0x000000013080a000,
[1.917s][debug][class,load,placeholders] superThreadQ threads:
[1.917s][debug][class,load,placeholders] defineThreadQ threads:0x000000013080a000,
[1.917s][debug][class,load,placeholders] entry java/lang/StringCoding : find_and_remove LOAD_INSTANCE , InstanceKlass 'java/lang/StringCoding'
...


I've pushed another commit with your suggested change: 4b910b16dbd6f72a3d74fc0c72703aec5e7d9671

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14553#discussion_r1256216296


More information about the hotspot-dev mailing list