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
の部分が何を意味するのか把握するためにできるデバッグ方法はありますか?
テキストウィジェットにはどのくらいのデータが入力されていますか?境界なしで成長するのですか、古いデータを削除して新しいデータに置き換えますか?たくさんのタグを使用していますか? –
@BryanOakleyデータ/ビジュアル出力は絶えず変化していますが、画面の価値にのみ制限されています。私は常に 'textwin.delete(1.0、END);を呼び出します。 textwin.insert(END、text) 'です。私はタグを大量に使っています。おそらくもっと良い方法があるのでしょうか、私は同じ行動を取るかどうかを試してみるべきですか? – gnr
削除と挿入を続けているのか、無限の挿入だけを残しているのかを確認しました。それはおそらくあなたが正しいことをしているように聞こえる。 –