起動しないアプリはなぜ起動しないのか

リリース目標日が近付いているので Mona で起動しないアプリがなぜ起動しないかを調べている。以前は動いていたはずなのだがいつの間にか動かなくなるものは少なくない。カーネル、ユーザーランドライブラリ、libc、ウィンドウシステムなどに手を入れるとどうしても動かなくなるものはある。2年ほど前までテストを書いていなかったのもすぐにこれらを検知できない一因。


調べると意外と深い理由で起動しないものもある。

  • ウィンドウシステムのごく小さな初期化の不備の隙間に入り込む
  • DLL のリンク順序に依存した小さなバグのせいで static initializer が呼ばれずメンバ変数が 0 のままで division by zero が発生する

など。久しぶりに起動してみると以前よりもさくさく動くアプリもあってうれしい。足回りを色々改善してきたからね。