Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenJDKに初めてパッチを出した話(JJUGナイトセミナー 2020年8月26日 発表資料)

OpenJDKに初めてパッチを出した話

JJUGナイトセミナー「おうちで!ビール片手にLT大会!」 2020年8月26日 発表資料
https://jjug.doorkeeper.jp/events/109209

株式会社NTTデータ 技術開発本部
阪田 浩一

  • Be the first to comment

OpenJDKに初めてパッチを出した話(JJUGナイトセミナー 2020年8月26日 発表資料)

  1. 1. © 2020 NTT DATA Corporation OpenJDKに初めてパッチを出した話 2020年8月26日 株式会社NTTデータ 技術開発本部 阪田 浩一
  2. 2. © 2020 NTT DATA Corporation 2 自己紹介 • 阪田 浩一(さかた -) • 通称 じゅくちょー • JVMになりたい人 • NTTデータでJava/OpenJDK + GraalVM の研究開発とサポート業に従事しています • Javaチャンピオン • OpenJDK Author(1週間前に承認) jyukutyo
  3. 3. © 2020 NTT DATA Corporation 3 劇的に変化した環境(個人的) • 転職 • 40年住んだ関西から東京へ • 職種 • Webアプリ開発運用から研究開発へ
  4. 4. © 2020 NTT DATA Corporation 4 「OpenJDKに パッチをガンガン 書いてください」
  5. 5. © 2020 NTT DATA Corporation 5 もちろん これをやりたくての 転職でした
  6. 6. © 2020 NTT DATA Corporation 6 レビュワーの同僚から パッチを書く元ネタを もらえました
  7. 7. © 2020 NTT DATA Corporation 7 パッチの元ネタ • GCCのバージョンを最新の10にしてOpenJDKをビルドすると コンパイルの警告が出る • 警告の検出内容が改善されている • パッチを書いて警告が出ないようにしよう!
  8. 8. © 2020 NTT DATA Corporation 8 やることリスト 1. 警告を解消するよう修正する 2. 最新リビジョンで最終確認をする 3. OpenJDKメーリングリストにパッチをメールする 4. パッチのスポンサーを見つけ、リポジトリへプッシュしてもらう
  9. 9. © 2020 NTT DATA Corporation 9 1. 警告を解消するよう修正する • 警告の内容を確認(抜粋) /home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 130 | _body[index] = value; | ~~~~~~~~~~~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19: error: 'exc.retval' may be used uninitialized in this function [-Werror=maybe- uninitialized] 743 | return exc.retval; | ~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: '__builtin_strncpy' output may be truncated copying 15 bytes from a string of length 15 [-Werror=stringop-truncation] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  10. 10. © 2020 NTT DATA Corporation 10 1. 警告を解消するよう修正する • 以下のコードが対象 • symbol.{hpp,cpp} • k_standard.c • NetworkInterface.c
  11. 11. © 2020 NTT DATA Corporation 11 四苦八苦しながら 修正する (各ファイル数行) 理解の記録:https://www.sakatakoichi.com/entry/2020/06/22/HotSpot_VMのシンボル名に関わるコード
  12. 12. © 2020 NTT DATA Corporation 12 2. 最新リビジョンで最終確認をする • 念のため、複数のGCCバージョンでビルドを実行して確認した • ビルドなので、確認に時間がかかる
  13. 13. © 2020 NTT DATA Corporation 13 3. メーリングリストにパッチをメールする どのMLに出す??
  14. 14. © 2020 NTT DATA Corporation 14 3. メーリングリストにパッチをメールする • hotspot-runtime-devのMLへパッチをメールする ↓ • 一部をJBSにissue登録してもらえた • パッチに対するコメントももらえた
  15. 15. © 2020 NTT DATA Corporation 15 ただ、ここから反応がなく 数週経ってしまう
  16. 16. © 2020 NTT DATA Corporation 16 3. メーリングリストにパッチをメールする • 一部をJBSへ登録してもらえた • パッチに対するコメントももらえた ↓ • 再度メールし、「この課題を進めたいです」と主張してみる ↓ • パッチへのコメントが再開 • 最終的にレビューまで進んだ!
  17. 17. © 2020 NTT DATA Corporation 17 参考: MLへの英語メール • 文章表現がとても難しく感じた • ビジネスメールでもない • プライベートでもない • メールなのでGitHubでやり取りするときの感じだと簡素すぎ!? • 数行の英語メールを書くのにものすごく時間がかかる • Google翻訳で英語を書き、和訳が変でないかを確認する • (日本語を英語にするのではなく、逆にする)
  18. 18. © 2020 NTT DATA Corporation 18 主要開発者の方 からも長文の コメントをもらえた
  19. 19. © 2020 NTT DATA Corporation 19 1. スポンサーを見つけ、リポジトリへプッシュしてもらう • パッチへのコメントから最終的にレビューまで進んだ! ↓ • レビュー者にスポンサーとしてリポジトリにプッシュしてもらえた
  20. 20. © 2020 NTT DATA Corporation 20 ついに僕も JVMの一部に…!
  21. 21. © 2020 NTT DATA Corporation 21 めでたしめでたし (ん!?待てよ)
  22. 22. © 2020 NTT DATA Corporation 22 3. メーリングリストにパッチをメールする • hotspot-runtime-devのMLへパッチをメールする ↓ • 一部をJBSへ登録してもらえた
  23. 23. © 2020 NTT DATA Corporation 23 パッチの残りの部分を 新たに進めなくては!
  24. 24. © 2020 NTT DATA Corporation 24 私のやること 3. メーリングリストにパッチをメールする • 別のML(core-libs-dev)に パッチの残りの部分をメールする 4. スポンサーを見つける 5. スポンサーにパッチを適用し、リポジトリへプッシュしてもらう
  25. 25. © 2020 NTT DATA Corporation 25 3. メーリングリストにパッチをメールする • 別のML(core-libs-dev)にパッチの残りの部分をメールする ↓ • 残りの中のさらに一部をレビューしてもらえた • 最後の1ファイルは長年更新がなく、レビューできる人が 簡単に見つからない ↓ • コード修正ではない解決方法を模索し、提案をメールする • ビルドでその警告を無視する設定など
  26. 26. © 2020 NTT DATA Corporation 26 3. メーリングリストにパッチをメールする • しばらくやり取りしていると、 ここをレビューできる方からメールがあり (つまりOpenJDK主要開発者からのメール) 、 レビューOKをもらえた! • 同僚(OpenJDKレビュワー)のレビューも加えて、 そのままスポンサーになってもらう
  27. 27. © 2020 NTT DATA Corporation 27 4. スポンサーを見つける/パッチを適用してプッシュしてもらう • リポジトリにプッシュしてもらえた
  28. 28. © 2020 NTT DATA Corporation 28 図解 最初に作ったパッチ パッチ1 HotSpot系 (Symbol) パッチ2 core-libs系 レビュー1 NetworkInterface レビュー2 k_standard
  29. 29. © 2020 NTT DATA Corporation 29 まとめ • OpenJDKへのパッチは、ひるまず自分から動いていこう! • 規模が大きいだけに、パッチを出して終わりではない • その分プッシュされたときの喜びもひとしお • Project SkaraでOpenJDKがGitHubベースになっても、 この作業内容は変わらないはず
  30. 30. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です

×