async_task_progressbar hangs with accessibility enabled

Bug #519389 reported by James Tatum
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Quickly Widgets
Fix Released
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

Revision history for this message
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.

Revision history for this message
Rick Spencer (rick-rickspencer3) wrote :

Pushed to trunk in revision 77. thanks!

Changed in quidgets:
status: New → Fix Committed
importance: Undecided → High
Revision history for this message
Rick Spencer (rick-rickspencer3) wrote :

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
Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.