String#intern()を学び始めて、なぜか初めてperfをし、JMHでGCごとに測りだしたりしてる。
2018-12-21 11:38:13あれ、コアダンプ吐いた!そして @YaSuenag さんの"Core dump will be written. "も見えた!
2018-12-21 14:41:53これ、JVMのバグ??HelloWorldでいいので、 -XX:+PrintStringTableStatistics を実行してもらえませんか?OpenJDKの11、11.0.1、12だとSIGSEGVになりました。手元で試したところ、OpenJDK 7、Oracle JDK 8,9,10ではならないです。
2018-12-21 14:57:23残念!もうJBSにありましたー。- [JDK-8211821] PrintStringTableStatistics crashes JVM - Java Bug System bugs.openjdk.java.net/browse/JDK-821… twitter.com/jyukutyo/statu…
2018-12-21 14:59:04@YaSuenag 古い12で試しましたので、もう直っているかもしれません。またやってみます!
2018-12-21 21:10:11@jyukutyo やはりそうでしたか。ちょっと残念でしたねw でも、修正内容は単純ながらもHotSpotのTLS廻りを理解するのにちょうどいいかもしれませんね。 hg.openjdk.java.net/jdk/jdk/rev/84… コアを見るいい練習になりそうな気がしました。
2018-12-25 11:18:14…ちなみに、私はいつもバグっぽいのは(解析に慣れてる)Fedoraの上でjdk/jdkのOpenJDKでテストして、そのまま修正に入ります。
2018-12-25 11:21:37@YaSuenag 修正、たったこれだけなんですね…!再度コアを見つつ、自分で適用してビルドしたりしてみます!ありがとうございます。
2018-12-25 11:28:17目的なくOpenJDKのソース読もうとすると、何をすればわからなかったけど、JBSの修正済みバグを自分で再現して修正も入れて試し、その原因箇所を読むの、めちゃいい感じ。ただし、めっちゃ時間がかかってる。
2018-12-26 12:50:31C++のコードで、 StringTable::dump(outputStream* st, bool verbose) を StringTable::dump(tty) と呼び出すの、デフォルト引数じゃないのに、bool verboseの値はどう設定されますか??
2018-12-26 13:36:06@jyukutyo そうとも限らないですが、アレ?と思ったらプロトタイプ宣言もチェックしてみることをおすすめします。オーバーロードされてることもよくあるので。
2018-12-26 14:39:12@YaSuenag はい!そうします!ありがとうございます。C++、まったく知らないので、とても助かります。
2018-12-26 14:42:35ふーようやくStringTableの旅が一段落した気がする。ただ、この変更がどういう観点でImplementation of low latency data-structureとなったのかは、理解できていない。結局、僕の実力では、どこまで行っても理解できていない感触しかない。
2018-12-26 15:31:44うーん、何とかPrintAssemblyだけで、TLABにアロケートしてるところがわかってきた。
2018-12-26 18:28:24TLABSizeって効くのかな…?XX:TLABSize=524288にすると、アセンブリでは、0x128(%r15),%r10 で、TLABのサイズは296なんじゃないかと思うんだけど…
2018-12-26 19:05:20@jyukutyo 効いてないことはないと思いますよ: hg.openjdk.java.net/jdk/jdk/file/e… アセンブリがGASのMOVだと仮定するとsrcがR15の間接アドレッシングになってるので、R10へ何かロードしようとしています。なのでTLABに何かを書き込もうとしているようには見えないのですが… ポイントはR15がどこを指してるかですね。
2018-12-26 20:13:34最近某氏宛てのツイートが多い気がするw まぁ、JIT生成コードの謎を追うならコアとってHSDBとGDB両面から攻めていくのがいいかもしれない。場合によってはJITWatchでバイトコードとアセンブラ両面で攻めるのもアリかな。
2018-12-26 20:15:13@YaSuenag ありがとうございます! mov 0x118(%r15),%rax mov %rax,%r10 add $0x10,%r10 cmp 0x128(%r15),%r10 でした。ああ!間接アドレッシングを読めていませんでした。
2018-12-27 11:39:50