update-manager bug when loading Changes is slow
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
update-manager (Ubuntu) |
Fix Released
|
Low
|
Robert Roth |
Bug Description
Binary package hint: update-manager
Hello. This is about the latest (and older) update-manager on Gutsy.
I have the update-manager window opened with the "Changes" tab selected and expanded, so it shows the changes for every package to be updated.
Imagine there are three packages in the updates list, A, B and C. If A is selected, its changes are displayed correctly below it. If I press down arrow on the keyboard, the B package is selected, its changes should be looked-up and displayed. The same for C.
This works OK normally, but:
(We're back with A selected.) I click down, B gets selected. The Changes tab briefly displays "Downloading the list of changes" or something similar. This is the trick: If I press down again _before_ the changes for B are displayed (this happens often for me, but it might depend on your connection), then the bug happens.
Usually the changes for C are displayed (not sure why it's quicker than B), then I get a warning in the console, then the changes for B are displayed, although C is still selected. I can get the changes for C by going back to B and then returning to C.
Here's an example for this happening three times in a row:
/usr/lib/
button.
/usr/lib/
button.
/usr/lib/
button.
I suppose a callback waiting for the download of the changes forgets to check if it should still display them.
Related branches
- Michael Vogt: Pending requested
-
Diff: 13 lines (+2/-1)1 file modifiedUpdateManager/UpdateManager.py (+2/-1)
Changed in update-manager (Ubuntu): | |
assignee: | nobody → Robert Roth (evfool) |
status: | Triaged → In Progress |
The problem is in: UpdateManager. py: update_ cursor_ changed( self, widget): connect( "clicked" ,
lambda w,lock: lock.release(), lock)
time. sleep(0. 05) pending( ):
gtk. main_iteration( )
UpdateManager/
def on_treeview_
...
id = button.
# wait for the dl-thread
while lock.locked():
while gtk.events_
...
it looks like the main_iteration() can cause re-entrace of this function and that confuses the bottom bits.