2016-01-12 25 views
8

Tôi có một GUI khá phức tạp được viết trên python's tkinter chạy trên linux. (một lần một ngày).BadIDChoice RENDER trong Python 3.3 và tk/tcl được hiển thị trên X

Các guis đang được hiển thị cho X chạy trên cả Mac OSX đến X11 và Gnome 2.28.2 với cùng một hành vi. Phiên bản python của tôi là phiên bản 3.3 và tk/tcl là 8.5. Các lỗi tôi nhận được là:

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 

một strace trông giống như:

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 của tôi là đơn luồng (và sử dụng after() gọi để giám sát ổ cắm cho I/O).

Có ai biết điều gì có thể sai không? Có cách nào tốt hơn để gỡ lỗi mà tôi có thể làm để tìm hiểu xem phần X Error có nghĩa là gì?

+0

số lượng dữ liệu sẽ đi vào tiện ích văn bản? nó phát triển không có giới hạn, hoặc bạn xóa dữ liệu cũ và thay thế nó bằng mới? Bạn đang sử dụng rất nhiều thẻ? –

+0

@BryanOakley dữ liệu/hình ảnh đầu ra liên tục thay đổi, nhưng nó chỉ giới hạn ở giá trị của màn hình. Tôi liên tục gọi 'textwin.delete (1.0, END); textwin.insert (END, văn bản) '. Tôi chắc chắn sử dụng nhiều thẻ. Có lẽ một cách tốt hơn/một cách khác tôi nên cố gắng để xem nếu tôi nhận được cùng một hành vi? – gnr

+0

Tôi vừa xác nhận xem bạn có tiếp tục xóa và chèn hay không, so với chỉ chèn vô hạn. Có vẻ như bạn đang làm đúng. –

Trả lời

2

tai nạn không thường xuyên (mỗi ngày một lần) với các bản ghi sau ...

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) 

... xuất hiện như một chữ ký hiệu của một vấn đề được biết đến trong xcb như mentioned trong các chủ đề sau:

Bug 458092 - Crashes with BadIdChoice X errors

Các miếng vá cho nó có sẵn here.
Dựa trên lịch sử git, lỗi xcb này phải được sửa trong libX11-1.1.99.2 trở lên (~ 8 năm trước).


Để tham khảo thêm tại đây là email-thread with the complete discussion.

+0

cảm ơn câu trả lời rất hữu ích của bạn - tuy nhiên, tôi đang sử dụng phiên bản libxcb 1.9.1 mà tôi tin rằng có bản sửa lỗi này. – gnr

Các vấn đề liên quan