近況

土日は地元のお祭の運行警備をしていました。山車の運行コースに自動車が入ってこないように警備する役です。RubyKaigi行きたかったですが、これはこれで疲れましたが楽しかったです。日曜の夜に同年(みんなで警備をやった)で飲んだのですが、ちょっと濃いコンピュータの話をしてしまいました。mmapとか色々なシステムのロックの話とか、VMのハードウエア割り込みサポートとかそんな感じです。コンピュータとは関係ない集まりでそんな話ができるのは、奇跡かなと思います。2人で話していて、他の人たちにかなりひんしゅくを買ってしまいました。すみません・・・。

yarv2llvmはスレッドランタイムを書いていてはまっています。とりあえず、スレッドは作れるようになったのですが、どうもセグメンテーションフォルトとかcfp矛盾エラーとかでて(スレッドがらみだから、エラーが一定しない)、大変です。私の環境(gdbを使っています)ではLLVMが生成したコードにブレークポイントを仕掛けたり、ソースコードデバッグしたり、バックトレースを取ったりできないので、むちゃくちゃ難儀しています。デバッギ(Rubyインタープリター)を実行するときは、LLVMが生成するコードは影も形も無いからです。

何か作る前にデバッグ環境を整備したほうがいいのかなーと思います。

  • スタックフレームをCのものと互換のあるものにできるモードを作ってバックトレースを取れるようにする
  • LLVMで生成したコードを実行するときに、生成したコードのシンボルテーブルを読み込むようにする
  • ブレークポイントを管理しておき、LLVMで生成したコードを実行するときに設定する