<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="en-DE" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">></span>You can go to the declaration of the PasswordAuthentication class when looking at things like<br>
<span lang="EN-US">></span>Event: 112.303 loading class java/net/PasswordAuthentication<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US">That sounds good !<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">A colleague just today (in another context) pointed out the idea to have an option to select all the  hserr event log sections  into a single<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Log with chronological order .   That would probably also something this tool could do (or is it already implemented) .<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">></span>I haven't thought of opening source files via links from the log itself since I rarely see them there (mostly assertion failures), but it's easy enough to implement.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US">You see them in the assertion failures or guarantees .  But also in that native stacks  (even with line numbers on some platforms) .<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">See for example :<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">#  Internal Error
</span><span lang="EN-US" style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">(</span><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">/openjdk-22u-linux_aarch64-dbg/jdk/src/hotspot/share/prims/<b>jvmtiRawMonitor.cpp:174</b>),
 pid=3474004, tid=3474024<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">#  guarantee(w ->_t_state == QNode::TS_ENTER) failed: invariant<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">#<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"># JRE version: OpenJDK Runtime Environment (22.0.1) (fastdebug build 22.0.1-internal-adhoc.jenkinsi.jdk)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"># Java VM: OpenJDK 64-Bit Server VM (fastdebug 22.0.1-internal-adhoc.jenkinsi.jdk, mixed mode, sharing, tiered, compressed
 oops, compressed class ptrs, g1 gc, linux-aarch64)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"># Problematic frame:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"># V  [libjvm.so+0x10d1520]  JvmtiRawMonitor::simple_exit(Thread*)+0x18c<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">#<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">---------------  T H R E A D  ---------------<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">Current thread (0x0000ffff38001310):  JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=3474024, stack(0x0000ffff56d92000,0x0000ffff56f90000)
 (2040K)]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">Stack: [0x0000ffff56d92000,0x0000ffff56f90000],  sp=0x0000ffff56f8e600,  free space=2033k<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x10d1520]  JvmtiRawMonitor::simple_exit(Thread*)+0x18c  (<b>jvmtiRawMonitor.cpp:174</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x10d2b84]  JvmtiRawMonitor::raw_exit(Thread*)+0x44  (<b>jvmtiRawMonitor.cpp:367</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x10993ac]  JvmtiEnv::RawMonitorExit(JvmtiRawMonitor*)+0xf8  (<b>jvmtiEnv.cpp:3629</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">C  [libjdwp.so+0x2c418]  debugMonitorExit+0x38  (<b>util.c:1023</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">C  [libjdwp.so+0x13840]  reader+0xe0  (<b>debugLoop.c:288</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x10c9ee0]  JvmtiAgentThread::call_start_function()+0x60  (<b>jvmtiImpl.cpp:89</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0xddd6f0]  JavaThread::thread_main_inner()+0xec  (<b>javaThread.cpp:721</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x1756bc4]  Thread::call_run()+0xb0  (<b>thread.cpp:221</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">V  [libjvm.so+0x13aea68]  thread_native_entry(Thread*)+0x138  (<b>os_linux.cpp:789</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:9.0pt;font-family:"Lucida Console";color:#333333;background:white">C  [libc.so.6+0x82a38]  start_thread+0x2d4</span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">For the failing asssertions / guarantees it  might also be helpful to augment some info about the assertion.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">Best regards, Matthias<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="en-DE" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Maxim Kartashev <maxim.kartashev@jetbrains.com>
<br>
<b>Sent:</b> Friday, 12 April 2024 10:48<br>
<b>To:</b> Baesken, Matthias <matthias.baesken@sap.com><br>
<b>Cc:</b> discuss@openjdk.org; hotspot-dev@openjdk.org; Doerr, Martin <martin.doerr@sap.com>; Langer, Christoph <christoph.langer@sap.com><br>
<b>Subject:</b> Re: RFO: a tool to analyze HotSpot fatal error logs<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
> Does the tool  work  both with  hserr files (“HotSpot fatal error logs”)    and also   the  output  of   jcmd  <pid>  VM.info   ?<br>
<br>
Yes since the latter is more or less a short version of the former.<br>
<br>
> How well can it handle incomplete hserr files  (we sometimes see those in case of bad crashes) ?<br>
<br>
As well as can be expected; some of the crashes are naturally redacted because of induced crashes and we're taking whatever information is there. We're also processing crashes from many JVM versions each of which introduces its own variance to the content and
 format of the log.<br>
<br>
There are many heuristics in the parsing so it can yield incorrect results (rarely), but it also makes parsing quite stable in the sense that practically any log a human can read the tool can also read.<br>
<br>
> Can the tool  “mix in” / augment   additional information  into the  views of the error log   (like a bit of source code or links into the  stack traces for example) ?<br>
<br>
You can go to the declaration of the PasswordAuthentication class when looking at things like<br>
Event: 112.303 loading class java/net/PasswordAuthentication<o:p></o:p></p>
</div>
<p class="MsoNormal">I haven't thought of opening source files via links from the log itself since I rarely see them there (mostly assertion failures), but it's easy enough to implement.
<o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
> I thought about  creating s similar tool myself in the past, but did not happen so far …<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I think this is the story for many on the list. I've seen enough people on youtube turning to ad hoc scripts to make sense of addresses in the logs.<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>