XFree86(X.org)の色リソース管理の弱点を見つけた。

short型の参照カウンタが簡単にオーバフローする。オーバフローした時に異常が発現するのなら分かりやすいのだが、どうやらそうではなくて、オーバフローさせたクライアントが終了するときのリソース解放処理で爆発的に傷口が広がって、その後別のクライアントの何気ない動作の結果として致命的な異常が発現するという分かりにくさ。これは癌の発病に似ているかな?重要な部分なのに、どうして管理方式がここまで稚拙なまま放置されているんだろう?何だかなあ…。
今日はXサーバの内部ロジックを改造して弱点を克服する対策を試作したが、クライアント終了時に別の余計なリソース解放処理が走るため、さらに追加対策が必要だな。