async_task_progressbar hangs with accessibility enabled

Bug #519389 reported by James Tatum on 2010-02-09
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Quickly Widgets
High
James Tatum

Bug Description

Ubuntu 10.04 fully updated with the latest branch of lp:quidgets

With accessibility enabled, there is a nasty hang in async_task_progressbar.py. Invoking it to run the sample code in main will show a working progress bar until the async function returns. At that point, the GUI hangs. pdb shows the hang either in threads_enter in the progress bar thread or in gtk.main in the main thread. strace output is as follows:

poll([{fd=5, events=POLLIN}, {fd=4, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13, events=POLLIN|POLLPRI}, {fd=3, events=POLLIN|POLLPRI}, {fd=14, events=POLLIN}], 7, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "A", 1) = 1
read(4, 0x9d168d0, 4096) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=4, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=14, events=POLLIN}], 4, 0) = 0 (Timeout)
futex(0x9d78378, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
read(14, 0xbfff6c6f, 1) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x9dc5cc0, FUTEX_WAIT_PRIVATE, 2, NULL

To reproduce:

1. System > Preferences > Assistive Technologies
2. Check "Enable assistive technologies"
3. Close and Log Out

For testing purposes, the following can be added to a pygtk app to opt the app out of AT. This is a workaround for the hang but obviously not a solution:

# this has to happen before importing any GTK modules
import os
os.environ['GTK_MODULES']=''
os.environ['NO_GAIL']='1'
os.environ['NO_AT_BRIDGE']='1'

Related branches

James Tatum (jtatum) wrote :

The helpful folks on the gnome-accessibility mailing list found the cause. The kill() method calls set_sensitive on the button without entering threading. I updated my branch to add this, and another spot where threading needs to be invoked.

Pushed to trunk in revision 77. thanks!

Changed in quidgets:
status: New → Fix Committed
importance: Undecided → High

so I had to tweak the code a bit to make canceling work right. Would you mind pulling the trunk and retesting to make sure that I didn't break accessibility again? Thanks.

Changed in quidgets:
status: Fix Committed → In Progress
assignee: nobody → Rick Spencer (rick-rickspencer3)
assignee: Rick Spencer (rick-rickspencer3) → James Tatum (jtatum)
Changed in quidgets:
status: In Progress → Incomplete
Michael Terry (mterry) wrote :

Due to lack of response and because this code has been in 10.04 and 10.10, marking Fix Released.

Changed in quidgets:
status: Incomplete → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers