2010/01/24
synergy にある典型的なバグ(とパッチ)
前から synergy を使っていますが、synergyのプロセスが時々落ちます。落ちるタイミングはコピー&ペーストのコピーのタイミングです。コピーした時に100%落ちるわけではありませんが、落ちる時はコピーした時です。
誰かが修正するだろうと他力本願でしたが、一向に修正版がリリースされる気配もないので、自分で修正しようとソースを見始めました。
と勢い込んだのですが、コールスタックに現れる関数を検索していたら、あっさりとパッチが見つかりました。
- https://bugzilla.redhat.com/show_bug.cgi?id=434539
- https://bugzilla.redhat.com/attachment.cgi?id=307244&action=diff
修正版がリリースされないことと、コピー&ペーストまわりのバグということで、当初、2バイト文字関係のバグを疑っていました(英語環境で起きないバグなら、なかなか修正版がリリースされないことの説明がつくので)。
実際は環境依存のないバグでした。修正版がリリースされないのは、そもそも synergy の開発が停止中だからのようです。
バグはまさに典型的なバグです。コレクションをなめるループの中で、コレクションの要素を削除してしまうバグです。STLでのわかりやすい説明ページを参考のためにリンクしておきます。
破壊的な処理を書いている限り、この手のバグは言語を問わず起きます。
理想主義者は破壊的な操作が悪だと言いますが、現場では必要悪です。JavaならConcurrentModificationException例外が起きるので、C/C++より相当マシです。ConcurrentModificationException例外は、世界が少し平和になるささやかな工夫のひとつです。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/synergy-bug/tbping
Re:synergy にある典型的なバグ(とパッチ)
http://www.sun-inet.or.jp/~yaneurao/intensive/cppmaniax/chap0004.html