mrubyのGCと格闘していた

昨日の夜からngx_mrubyのmrubyバージョンを上げた際に、SEGVが起こっていたので対応していた。

原因はGCで、FiberオブジェクトのirepがGC時にすでに開放されていることからSEGVになっていることは割と早くわかったのだが、対応方法をどうすべきかと悩んでおったら Matzさんが助けてくれた。

わからなかったら相談するかくらいな気持ちでおったところ、シュッと現れてシュッと解決してくださった。なんというか世界的に使われているプログラミング言語の作者がシュッと現れて、アドバイスをくれる体験、とてもすごいと思ったし、感動した。また同時にエンジニアとしてもリモートで的確な指示で情報を集めて切り分けできるの、力量の差を思い知らされた。

人、技量共に感銘を受けました。

実は僕は以前、OFF TOKYO2017というイベントでお会いしたことがあって、その時の印象は目が神々しいという印象であったのだが、とても気さくに話しかけてくれた。

ともあれ、今日は僕の人生において特別な日になった。

話は少しそれて、昨夜からひたすらGCのコード読んでたので、帰りがけ まつもとゆきひろ直伝 組込Ruby「mruby」のすべて 総集編を読みなおしたところ、GCのところは頭の中ときれいにリンクして理解が深まったのでコードと一緒に読むのがおすすめ。

あとはあれだなぁ、今回みたいにSEGVが起きないルートを通すときに、そのルートを通すことが安全であるかどうかみたいな判断を、プログラミング言語のVMやGCくらいの規模で自信、根拠を持って判断できるくらい深く理解できるようにならないと自分で貢献できないので、PRして満足じゃなくてもう少し追いかけて寝る。