[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:17466] Re: X11R7.3以降、liX11のXNextEvent()が壊れている



On Thu, 2 Oct 2008 20:35:47 +0900
hito <hitoht@xxxxxxxxx> wrote:
> Xorg X11R7.3以降、liX11のXNextEvent()が壊れているようです(*1)。

 これによって、及ぼす影響範囲を簡単に教えていただけませんか?
 とりあえず Debian BTS に登録します。

 X 回りではいしかわさんが関わっていらっしゃったので、CC。
 何かツッコミあればぜひお願いします。


> 本来常に成功しなければいけないXNextEvent()が、XlibDisplayIOErrorが
> 立っている状態で呼び出すとsegfaultします。XlibDisplayIOErrorはログイン
> 時など(*2)に発生することがあり、これによってIIIMFが落ちてATOK X3が
> あがってこない、という現象に陥ります。
> 
> この問題、XNextEvent()が読んでいる_XReadEvents()の呼び出し
> タイミングの問題でもあるので、単純にえんえんと呼び出すだけでも
> 直ってしまいます。以下のようなパッチです。
> 
> --- NextEvent.c.orig
> +++ NextEvent.c
> @@ -45,9 +45,14 @@
>         register _XQEvent *qelt;
> 
>  	LockDisplay(dpy);
> 
> -	if (dpy->head == NULL)
> +        while(dpy->head == NULL){
>             _XReadEvents(dpy);
> +           usleep(400);
> +	}
>  	qelt = dpy->head;
>  	*event = qelt->event;
>  	_XDeq(dpy, NULL, qelt);
> 
> が、これはXの内部まで考慮したパッチになっていないので、ちとアレな感じです
> (スペースの位置とか揃ってないよとかも放置プレイ)。
> 
> で、とりあえずXOrgのMLにはチクって(*3)いますが反応があんまりありません。
> もう2〜3日したらXOrgのBTSに突っ込んだ上でdebbugしてubuntubugする
> 予定です。
> 
> 短期的には(そして最終的にもバージョンによっては)パッケージャの側で
> パッチを入れないといけないわけですが(そしてUbuntu Japanese Team
> では自前リポジトリのexperimentalに入れてubuntu.comにはフィード
> バックしていません)、こんな感じの問題があるよ、てな認識だけ
> 共有しといて頂ければと思います。
> 
> また、どなたかより良いパッチを思いついたら教えて頂けると助かります。
> 
> (*1) see http://d.hatena.ne.jp/hito-d/20081001#1222866182
> (*2) gconf経由でキーボードレイアウトを変えたり、ログイン直後に
>   レイアウト変更が反映されたりした時。
> (*3) http://lists.freedesktop.org/archives/xorg/2008-September/039042.html


-- 
Regards,

 Hideki Yamane     henrich @ debian.or.jp/iijmio-mail.jp
 http://wiki.debian.org/HidekiYamane