I've run jcmd <pid> VM.info
diagnostic command on my Clojure application running in a Docker container - here's the basic system info:
# JRE version: OpenJDK Runtime Environment (11.0.1+13) (build
11.0.1+13-Ubuntu-3ubuntu3.18.10.1)
# Java VM: OpenJDK 64-Bit Server VM (11.0.1+13-Ubuntu-3ubuntu3.18.10.1,
mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
One thing I've noticed is the Internal exceptions (10 events)
section where I've found several instances of following exception:
Classes redefined (0 events):
No events
Internal exceptions (10 events):
Event: 4103.838 Thread 0x00007f800400c800 Exception <a 'java/lang/ClassCastException'{0x00000000c78ba0b0}: class clojure.lang.Keyword cannot be cast to class java.lang.CharSequence (clojure.lang.Keyword is in unnamed module of loader 'app'; java.lang.CharSequence is in module java.base of loader
...
Now I'm wondering what these "Internal exceptions" really are. Is that something thrown in my application code and perhaps silently ignored? Can I get more info (perhaps a stacktrace) about them?
I tried to dig into JDK source code but couldn't find as many details about the "Internal exceptions".
The only thing I've found is the VMError::print_vm_info method and related _exceptions
field in events.cpp