yar-3 の hiki より。 ガハハハッ、いきなり熊谷っすか。
日本経済新聞の記事より。 衛星の故障だそうで。 一瞬、ニセモノ GPS 信号で電波ハイジャックされたんじゃないかって思ったんだけど。 ニセモノ GPS 衛星として、GPS衛星の電波送出装置をドコゾの山の上 (例えば箱根とか) に置いて、本物の GPS 衛星が送出する電波を被せられる程度の電波をニセモノから送出すると、それなりに威力ある攻撃になるんじゃないかって思うことがあるんだけど、どうなんだろう。 au の cdmaOne/cdma2000 とかで同期とれなくなったり、千葉と茨城を間違えたりするんだろうな、きっと。
Linux 版 Flash Player でクサる理由の真髄が、なんとなく見えてきたんだよな。 libX11 の IM 周りで printf() debug したり、gdb でその辺に break point を設定したりして気づいたんだけど、妙に同一プロセス同一ウィンドウ内の複数のスレッドで、やたらと XOpenIM() しまくっている。 他のアプリというか toolkit の実装を見ていると、一つのウィンドウでは XOpenIM() は一度だけ実行するようになっていて、そのあとに起こされるスレッドは、先の XOpenIM() で得た XIM のコネクションをそのまま利用している。
ここで思いついたのが、同一ウィンドウ内に複数の swf が存在する場合だとこの問題がよく発生するっていうこと。 おのおのの swf を実行するたびに FlashPlayer のスレッドが立ち上げられるんだけど、おのおののスレッドの起動時に XOpenIM() を実行しているとしたら。 同一プロセス同一ウィンドウ内で複数の XOpenIM() が実行されているっていうことの説明がつく。 ひとつのウィンドウにつき XOpenIM() は一度だけ実施するように、FlashPlayer を変更してみるっていうのも手かもしれないな。
解決策としては... libflashplayer.so で global scope な変数を準備して、Window ID がキーで XOpenIM() の結果が value なハッシュテーブル作ってやって... っていうのは可能なのかなぁ。