GNOME Bugzilla – Bug 91583
Crash when scrolling in nautilus with canvas speedup patch
Last modified: 2004-12-22 21:47:04 UTC
The recent canvas speedup commit on HEAD doesn't seem to work correctly.I get a failed assertion in gnome-canvas when changing to a directory with images and scrolling down (appears to work for most directories though). GnomeCanvas-ERROR **: file gnome-canvas.c: line 3675 (gnome_canvas_request_redraw_uta): assertion failed: (canvas->idle_id != 0) aborting... Program received signal SIGTRAP, Trace/breakpoint trap.
+ Trace 26580
Thread 1024 (LWP 30108)
FYI, this is also triggered by evo2 and other apps that use the canvas.
*** Bug 103241 has been marked as a duplicate of this bug. ***
*** Bug 102811 has been marked as a duplicate of this bug. ***
I looked into this a bit. Reproducing using gnome-mahjongg showed at least one way this assert can be falsely triggered: gnome_canvas_update_now () remove_idle() do_update() gnome_canvas_item_invoke_update() some_canvas_item_update() gnome_canvas_request_redraw_uta() need_update still true, but idle_id == 0 => assert failure However, all the nautilus backtraces are of the form widget updates -> expose event -> gnome_canvas_request_redraw_uta() with idle_id = 0 but need_update == 1. I'm not sure how that happens, or whether ignoring this fact can cause updates or redraws to be missed. But i *think* just removing the assert is safe and correct.
I removed the assert in CVS and added a largish comment.
*** Bug 105486 has been marked as a duplicate of this bug. ***
There are still problems. With an application (gcompris) that works fine with libgnomecanvas from gnome 2.0, I got the crashes due to assert in gnome 2.2rc1 and now, with gnome 2.2, there are no crashes but parts of screen aren't updated anymore. I looked on the libgnomecanvas code but I couldn't find the problem :(
Trying also to get gcompris running on gnome 2.2 I took a look at the code and found some issues about the drawings updates. I don't pointed out where the gnomecanvas code didn't work, but I got some examples working after adding a "gnome_canvas_update_now(canvas);" call. I noticed that the gnome-canvas example called: "demos/canvas-fifteen.c" don't work with the 2.2.0.1 version. By adding a "gnome_canvas_update_now(canvas)" around line 117 I got it working. Similar problems occurs in various pices of code in gcompris (but not allways after a item move). So, this is my experience, I don't had time to look furter into gnomecanvs code so I made a temporary patch to gcompris but... It seems that the behaviour of gnomecanvas have changed. Is this a bug or a feature ?
Has this changed in later releases?
And is bug #106145 a duplicate of this?
I haven't seen this crash in a long time in evo2 (nautilus doesn't use the canvas anymore). The update problems I don't know about.
Ok. No reports of crashes and the update logic was fixed in 2.3.0. Closing.