valgrind results
This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.
This is a read-only list on gimpusers.com so this discussion thread is read-only, too.
valgrind results | David Gowers | 27 Jun 09:35 |
valgrind results | Sven Neumann | 27 Jun 17:47 |
valgrind results
Sven, you suggested that I run valgrind to locate the source of a bug related to eyedropping. These are the highlights of the results.
This part is probably unrelated to the eyedropping bug (bug #450802), but may be serious:
It happens after the image is loaded; don't know whether it's before or after i zoom in, but I scribble on the image with the pencil tool after zooming in, and afterwards, these messages are there.
I take it as a strong suggestion that the tile pyramid code is still a
bit dodgy.
I plan to retry with '--error-limit=no' as it suggests, later, but
perhaps these results will be helpful (I don't fully understand them
myself yet -- eg. I only just figured out that the highest item on the
stack is the first result.). A complete dump of the results is
attached as a gzipped .txt, 5k.
valgrind output follows:
==14080==
==14080== Conditional jump or move depends on uninitialised value(s)
==14080== at 0x82CC819: tile_pyramid_validate_tile (tile-pyramid.c:482)
==14080== by 0x82CAF56: tile_manager_validate (tile-manager.c:284)
==14080== by 0x82CA0A3: tile_lock (tile.c:162)
==14080== by 0x82CACFD: tile_manager_get (tile-manager.c:250)
==14080== by 0x82CC5AD: tile_pyramid_validate_tile (tile-pyramid.c:382)
==14080== by 0x82CAF56: tile_manager_validate (tile-manager.c:284)
==14080== by 0x82CA0A3: tile_lock (tile.c:162)
==14080== by 0x82CACFD: tile_manager_get (tile-manager.c:250)
==14080== by 0x82CC5AD: tile_pyramid_validate_tile (tile-pyramid.c:382)
==14080== by 0x82CAF56: tile_manager_validate (tile-manager.c:284)
==14080== by 0x82CA0A3: tile_lock (tile.c:162)
==14080== by 0x82CACFD: tile_manager_get (tile-manager.c:250)
==14080==
==14080== Conditional jump or move depends on uninitialised value(s)
==14080== at 0x8226FD3: gimp_drawable_get_sub_preview
(gimpdrawable-preview.c:415)
==14080== by 0x822737C: gimp_drawable_preview_private
(gimpdrawable-preview.c:205)
==14080== by 0x8227457: gimp_drawable_get_preview (gimpdrawable-preview.c:84)
==14080== by 0x82769A0: gimp_viewable_get_new_preview (gimpviewable.c:737)
==14080== by 0x81809E4: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:178)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817EBAF: gimp_view_render_to_buffer (gimpviewrenderer.c:1077)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817EBCA: gimp_view_render_to_buffer (gimpviewrenderer.c:1079)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817EBE5: gimp_view_render_to_buffer (gimpviewrenderer.c:1081)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817E98E: gimp_view_render_to_buffer (gimpviewrenderer.c:1068)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817E9A9: gimp_view_render_to_buffer (gimpviewrenderer.c:1070)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x817E9C4: gimp_view_render_to_buffer (gimpviewrenderer.c:1072)
==14080== by 0x817ECB5: gimp_view_renderer_render_buffer
(gimpviewrenderer.c:930)
==14080== by 0x8180961: gimp_view_renderer_drawable_render
(gimpviewrendererdrawable.c:213)
==14080== by 0x817F1E6: gimp_view_renderer_real_draw (gimpviewrenderer.c:716)
==14080== by 0x817F4C5: gimp_view_renderer_draw (gimpviewrenderer.c:606)
==14080== by 0x41EC289: gtk_cell_renderer_render (gtkcellrenderer.c:563)
==14080== by 0x43E5FAD: gtk_tree_view_column_cell_process_action
(gtktreeviewcolumn.c:2796)
==14080== by 0x43E6828: _gtk_tree_view_column_cell_render
(gtktreeviewcolumn.c:3129)
==14080== by 0x43D2522: gtk_tree_view_expose (gtktreeview.c:4617)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CA8EE: g_type_class_meta_marshal (gclosure.c:567)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x80BC1A3: render_image_rgb_a (gimpdisplayshell-render.c:819)
==14080== by 0x80BBA33: gimp_display_shell_render
(gimpdisplayshell-render.c:264)
==14080== by 0x80B6A2F: gimp_display_shell_draw_area
(gimpdisplayshell-draw.c:574)
==14080== by 0x80B06F0: gimp_display_shell_canvas_expose
(gimpdisplayshell-callbacks.c:412)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080== by 0x46DB0D4: signal_emit_unlocked_R (gsignal.c:2440)
==14080== by 0x46DC953: g_signal_emit_valist (gsignal.c:2209)
==14080== by 0x46DCF48: g_signal_emit (gsignal.c:2243)
==14080== by 0x43F5975: gtk_widget_event_internal (gtkwidget.c:4267)
==14080== by 0x42C4E77: gtk_main_do_event (gtkmain.c:1522)
==14080== by 0x452C988: gdk_window_process_updates_internal
(gdkwindow.c:2365)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x80BC154: render_image_rgb_a (gimpdisplayshell-render.c:829)
==14080== by 0x80BBA33: gimp_display_shell_render
(gimpdisplayshell-render.c:264)
==14080== by 0x80B6A2F: gimp_display_shell_draw_area
(gimpdisplayshell-draw.c:574)
==14080== by 0x80B06F0: gimp_display_shell_canvas_expose
(gimpdisplayshell-callbacks.c:412)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080== by 0x46DB0D4: signal_emit_unlocked_R (gsignal.c:2440)
==14080== by 0x46DC953: g_signal_emit_valist (gsignal.c:2209)
==14080== by 0x46DCF48: g_signal_emit (gsignal.c:2243)
==14080== by 0x43F5975: gtk_widget_event_internal (gtkwidget.c:4267)
==14080== by 0x42C4E77: gtk_main_do_event (gtkmain.c:1522)
==14080== by 0x452C988: gdk_window_process_updates_internal
(gdkwindow.c:2365)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x80BC161: render_image_rgb_a (gimpdisplayshell-render.c:830)
==14080== by 0x80BBA33: gimp_display_shell_render
(gimpdisplayshell-render.c:264)
==14080== by 0x80B6A2F: gimp_display_shell_draw_area
(gimpdisplayshell-draw.c:574)
==14080== by 0x80B06F0: gimp_display_shell_canvas_expose
(gimpdisplayshell-callbacks.c:412)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080== by 0x46DB0D4: signal_emit_unlocked_R (gsignal.c:2440)
==14080== by 0x46DC953: g_signal_emit_valist (gsignal.c:2209)
==14080== by 0x46DCF48: g_signal_emit (gsignal.c:2243)
==14080== by 0x43F5975: gtk_widget_event_internal (gtkwidget.c:4267)
==14080== by 0x42C4E77: gtk_main_do_event (gtkmain.c:1522)
==14080== by 0x452C988: gdk_window_process_updates_internal
(gdkwindow.c:2365)
==14080==
==14080== Use of uninitialised value of size 4
==14080== at 0x80BC16E: render_image_rgb_a (gimpdisplayshell-render.c:831)
==14080== by 0x80BBA33: gimp_display_shell_render
(gimpdisplayshell-render.c:264)
==14080== by 0x80B6A2F: gimp_display_shell_draw_area
(gimpdisplayshell-draw.c:574)
==14080== by 0x80B06F0: gimp_display_shell_canvas_expose
(gimpdisplayshell-callbacks.c:412)
==14080== by 0x42C66D3: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14080== by 0x46CAF1E: g_closure_invoke (gclosure.c:490)
==14080== by 0x46DB0D4: signal_emit_unlocked_R (gsignal.c:2440)
==14080== by 0x46DC953: g_signal_emit_valist (gsignal.c:2209)
==14080== by 0x46DCF48: g_signal_emit (gsignal.c:2243)
==14080== by 0x43F5975: gtk_widget_event_internal (gtkwidget.c:4267)
==14080== by 0x42C4E77: gtk_main_do_event (gtkmain.c:1522)
==14080== by 0x452C988: gdk_window_process_updates_internal
(gdkwindow.c:2365)
==14080==
==14080== Conditional jump or move depends on uninitialised value(s)
==14080== at 0x451E9EE: gdk_pixbuf_render_threshold_alpha
(gdkpixbuf-render.c:115)
==14080== by 0x451ED8D:
gdk_pixbuf_render_pixmap_and_mask_for_colormap
(gdkpixbuf-render.c:322)
==14080== by 0x4408C2D: gtk_window_realize_icon (gtkwindow.c:2955)
==14080== by 0x44090B0: gtk_window_set_icon (gtkwindow.c:3286)
==14080== by 0x80AC4DB: gimp_display_shell_update_icon
(gimpdisplayshell.c:1511)
==14080== by 0x80B7DBC: gimp_display_shell_idle_update_icon
(gimpdisplayshell-handlers.c:666)
==14080== by 0x47E5EB7: g_timeout_dispatch (gmain.c:3488)
==14080== by 0x47E4198: g_main_context_dispatch (gmain.c:2061)
==14080== by 0x47E7495: g_main_context_iterate (gmain.c:2694)
==14080== by 0x47E77B7: g_main_loop_run (gmain.c:2898)
==14080== by 0x8066F6B: app_run (app.c:246)
==14080== by 0x8067E55: main (main.c:381)
==14080==
==14080== Conditional jump or move depends on uninitialised value(s)
==14080== at 0x451E974: gdk_pixbuf_render_threshold_alpha
(gdkpixbuf-render.c:129)
==14080== by 0x451ED8D:
gdk_pixbuf_render_pixmap_and_mask_for_colormap
(gdkpixbuf-render.c:322)
==14080== by 0x4408C2D: gtk_window_realize_icon (gtkwindow.c:2955)
==14080== by 0x44090B0: gtk_window_set_icon (gtkwindow.c:3286)
==14080== by 0x80AC4DB: gimp_display_shell_update_icon
(gimpdisplayshell.c:1511)
==14080== by 0x80B7DBC: gimp_display_shell_idle_update_icon
(gimpdisplayshell-handlers.c:666)
==14080== by 0x47E5EB7: g_timeout_dispatch (gmain.c:3488)
==14080== by 0x47E4198: g_main_context_dispatch (gmain.c:2061)
==14080== by 0x47E7495: g_main_context_iterate (gmain.c:2694)
==14080== by 0x47E77B7: g_main_loop_run (gmain.c:2898)
==14080== by 0x8066F6B: app_run (app.c:246)
==14080== by 0x8067E55: main (main.c:381)
==14080==
==14080== More than 10000000 total errors detected. I'm not reporting any more.
==14080== Final error counts will be inaccurate. Go fix your program!
==14080== Rerun with --error-limit=no to disable this cutoff. Note
==14080== that errors may occur in your program without prior warning from
==14080== Valgrind, because errors are no longer being displayed.
==14080==
After that, I just shut down gimp.
==14080== ERROR SUMMARY: 10000000 errors from 27 contexts (suppressed:
87 from 1)
==14080== malloc/free: in use at exit: 10,547,993 bytes in 84,810 blocks.
==14080== malloc/free: 2,603,442 allocs, 2,518,632 frees, 524,379,066
bytes allocated.
==14080== For counts of detected errors, rerun with: -v
==14080== searching for pointers to 84,810 not-freed blocks.
==14080== checked 10,087,828 bytes.
==14080==
==14080== LEAK SUMMARY:
==14080== definitely lost: 1,756 bytes in 62 blocks.
==14080== possibly lost: 2,224,336 bytes in 2,110 blocks.
==14080== still reachable: 8,321,901 bytes in 82,638 blocks.
==14080== suppressed: 0 bytes in 0 blocks.
==14080== Rerun with --leak-check=full to see details of leaked memory.
quirks of my setup -- well, I have an unusual amount of dockables --
maybe 14 in total.
Some of these are tabbed (up to 3 tabs); Exactly 1 is docked to
another window (the gimp toolbox has a dockbook holding 2 tabs: Color
and Pattern, and is currently forced by the WM to be much smaller than
normal (80x60 pixels IIRC), so that only the FG/BG color status tab
and some of the menubar shows, the rest disappears.). That might
effect the result.
valgrind results
Hi,
On Wed, 2007-06-27 at 17:05 +0930, David Gowers wrote:
It happens after the image is loaded; don't know whether it's before or after i zoom in, but I scribble on the image with the pencil tool after zooming in, and afterwards, these messages are there.
I take it as a strong suggestion that the tile pyramid code is still a bit dodgy.
Nah, this is more likely just the preview being generated too early (before the data is actually initialized). Mitch is already working on that. It is not directly related to the tile pyramid code.
Thanks anyway for reporting this.
Sven