2016-01-12 13 views
8

pythonのtkinterで実行されているかなり複雑なGUIをLinux上で実行していますが、コンポーネントの1つ(頻繁に更新されるTextウィジェットがあります) (一日一回)。Python 3.3のBadIDChoice RENDERとXに表示されるtk/tcl

guisは、Mac OSXからX11とGnome 2.28.2の両方で動作するXに同じ動作で表示されています。私のpythonバージョンは3.3、tk/tclバージョンは8.5です。私が手にエラーがある:

X Error of failed request: BadIDChoice (invalid resource ID chosen for this connection) 
    Major opcode of failed request: 148 (RENDER) 
    Minor opcode of failed request: 4 (RenderCreatePicture) 
    Resource id in failed request: 0x116517f 
    Serial number of failed request: 15106831 
    Current serial number in output stream: 15106872 

straceは、次のようになります。

11:03:29.632041 recvfrom(13, 0x3bae1d4, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) 
11:03:29.632059 recvfrom(13, 0x3bae1d4, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) 
11:03:29.632147 poll([{fd=13, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=13, revents=POLLOUT}]) 
11:03:29.632164 writev(13, [{"\224\4\5\0D\304\361\0\17\274\361\0i\4\0\0\0\0\0\0\224\27\n\0\3\f\340\0\301\v\340\0"..., 5032}, {NULL, 0}, {"", 0}], 3) = 5032 
11:03:29.632193 poll([{fd=13, events=POLLIN}], 1, -1) = 1 ([{fd=13, revents=POLLIN}]) 
11:03:29.637040 recvfrom(13, "\0\16\302\276x\304\361\0\4\0\224\0\1\0\0\0`\16\330\3\1\0\0\0\243\304\342\210\377\177\0\0"..., 4096, 0, NULL, NULL) = 136 
11:03:29.637135 open("/usr/share/X11/XErrorDB", O_RDONLY) = 35 
11:03:29.637217 fstat(35, {st_mode=S_IFREG|0644, st_size=41532, ...}) = 0 
11:03:29.637360 read(35, "!\n! Copyright 1993, 1995, 1998 "..., 41532) = 41532 
11:03:29.637387 close(35)    = 0 
11:03:29.637820 write(2, "X Error of failed request: BadI"..., 91) = 91 
... 

私のGUIはシングルスレッドである(およびI/O用のソケットを監視するためにafter()コールを使用しています)。

何が間違っているかも知っていますか? X Errorの部分が何を意味するのか把握するためにできるデバッグ方法はありますか?

+0

テキストウィジェットにはどのくらいのデータが入力されていますか?境界なしで成長するのですか、古いデータを削除して新しいデータに置き換えますか?たくさんのタグを使用していますか? –

+0

@BryanOakleyデータ/ビジュアル出力は絶えず変化していますが、画面の価値にのみ制限されています。私は常に 'textwin.delete(1.0、END);を呼び出します。 textwin.insert(END、text) 'です。私はタグを大量に使っています。おそらくもっと良い方法があるのでしょうか、私は同じ行動を取るかどうかを試してみるべきですか? – gnr

+0

削除と挿入を続けているのか、無限の挿入だけを残しているのかを確認しました。それはおそらくあなたが正しいことをしているように聞こえる。 –

答えて

2

次のログと稀にクラッシュ(一日一回)...

X Error of failed request: BadIDChoice (invalid resource ID chosen for this connection) 
    Major opcode of failed request: 148 (RENDER) 
    Minor opcode of failed request: 4 (RenderCreatePicture) 

...次のスレッドにmentionedとしてxcb内の既知の問題の証拠となる署名のように見える:

Bug 458092 - Crashes with BadIdChoice X errors

それのためのパッチが提供されていますhere
gitの履歴に基づいて、このxcbバグはlibX11-1.1.99.2(〜8年前)に修正する必要があります。


email-thread with the complete discussionを参照してください。

+0

あなたの非常に有益な答えをありがとう - しかし、私はこの修正を持っていると信じてlibxcbバージョン1.9.1を使用しています。 – gnr

関連する問題