After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 333568 - gimp crash at reconnect display if new image has layermask
gimp crash at reconnect display if new image has layermask
Status: RESOLVED FIXED
Product: GIMP
Classification: Other
Component: General
2.2.x
Other Linux
: Normal major
: 2.2
Assigned To: GIMP Bugs
GIMP Bugs
Depends on:
Blocks:
 
 
Reported: 2006-03-06 06:06 UTC by hof
Modified: 2008-01-15 13:05 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description hof 2006-03-06 06:06:04 UTC
gimp-2.2.10 crashes at reconnect display when the
old image had one layer without a layermask
but the new image (where the display shall be reconnected to)
has a layer with layermask.

The error can be triggered via image revert
or via gimp-gap when stepping from one frame to another.



Additional Notes:

If the involved image(s) have more than one layer
the error appears only in certain situations,
(maybe dependent to visibility and/or layerstack position
of the layer(s) having a layermask)

i use gimp with gtk+-2.6.7



Example howto reproduce:


1.) start gimp-2.2 --stack-trace-mode always
2.) File->New  crate a new image  320x200, RGB
3.) Open Layers Dialog and add Alpha Channel
4.) Open Layers Dialog and add Layermask (white (full opacity)
5.) File->Save AS
  img.xcf

6.) Open Layers Dialog and delete Layermask
7.) File->Revert

      GIMP crashes, and prints out the following stacktrace:
      

gimp-2.2: fatal error: Segmentation fault
  • #0 waitpid
    from /lib/libc.so.6
  • #1 IA__g_on_error_stack_trace
  • #2 gimp_eek
  • #3 gimp_fatal_error
  • #4 gimp_sigfatal_handler
    at main.c line 582
  • #5 <signal handler called>
  • #6 action_data_get_context
    at actions.c line 263
  • #7 context_actions_update
  • #8 gimp_action_group_update
  • #9 gimp_ui_manager_real_update
  • #10 IA__g_cclosure_marshal_VOID__POINTER
  • #11 g_type_class_meta_marshal
  • #12 IA__g_closure_invoke
  • #13 signal_emit_unlocked_R
  • #14 IA__g_signal_emit_valist
  • #15 IA__g_signal_emit
  • #16 gimp_ui_manager_update
  • #17 IA__g_cclosure_marshal_VOID__VOID
  • #18 IA__g_closure_invoke
  • #19 signal_emit_unlocked_R
  • #20 IA__g_signal_emit_valist
  • #21 IA__g_signal_emit
  • #22 gimp_image_flush
    at gimpimage.c line 1819
  • #23 IA__g_cclosure_marshal_VOID__VOID
  • #24 IA__g_closure_invoke
  • #25 signal_emit_unlocked_R
  • #26 IA__g_signal_emit_valist
  • #27 IA__g_signal_emit
  • #28 IA__gtk_toggle_action_toggled
  • #29 gtk_toggle_action_activate
  • #30 IA__g_cclosure_marshal_VOID__VOID
  • #31 g_type_class_meta_marshal
  • #32 IA__g_closure_invoke
  • #33 signal_emit_unlocked_R
  • #34 IA__g_signal_emit_valist
  • #35 IA__g_signal_emit
  • #36 _gtk_action_emit_activate
  • #37 IA__gtk_toggle_action_set_active
  • #38 layers_actions_update
  • #39 gimp_action_group_update
  • #40 gimp_ui_manager_real_update
  • #41 IA__g_cclosure_marshal_VOID__POINTER
  • #42 g_type_class_meta_marshal
  • #43 IA__g_closure_invoke
  • #44 signal_emit_unlocked_R
  • #45 IA__g_signal_emit_valist
  • #46 IA__g_signal_emit
  • #47 gimp_ui_manager_update
  • #48 gimp_item_tree_view_select_item
  • #49 gimp_drawable_tree_view_select_item
  • #50 gimp_layer_tree_view_select_item
  • #51 gimp_marshal_BOOLEAN__OBJECT_POINTER
  • #52 g_type_iface_meta_marshal
  • #53 IA__g_closure_invoke
  • #54 signal_emit_unlocked_R
  • #55 IA__g_signal_emit_valist
  • #56 IA__g_signal_emit
  • #57 gimp_container_view_select_item
  • #58 gimp_drawable_tree_view_set_image
  • #59 gimp_layer_tree_view_set_image
  • #60 IA__g_cclosure_marshal_VOID__OBJECT
  • #61 g_type_class_meta_marshal
  • #62 IA__g_closure_invoke
  • #63 signal_emit_unlocked_R
  • #64 IA__g_signal_emit_valist
  • #65 IA__g_signal_emit
  • #66 gimp_item_tree_view_set_image
  • #67 IA__g_cclosure_marshal_VOID__OBJECT
  • #68 IA__g_closure_invoke
  • #69 signal_emit_unlocked_R
  • #70 IA__g_signal_emit_valist
  • #71 IA__g_signal_emit
  • #72 gimp_context_image_changed
  • #73 gimp_image_dock_image_changed
  • #74 IA__g_cclosure_marshal_VOID__OBJECT
  • #75 IA__g_closure_invoke
  • #76 signal_emit_unlocked_R
  • #77 IA__g_signal_emit_valist
  • #78 IA__g_signal_emit
  • #79 gimp_context_image_changed
  • #80 IA__g_cclosure_marshal_VOID__OBJECT
  • #81 IA__g_closure_invoke
  • #82 signal_emit_unlocked_R
  • #83 IA__g_signal_emit_valist
    at gsignal.c line 2244
  • #84 IA__g_signal_emit
  • #85 gimp_container_remove
  • #86 IA__g_cclosure_marshal_VOID__VOID
  • #87 IA__g_closure_invoke
  • #88 signal_emit_unlocked_R
  • #89 IA__g_signal_emit_valist
  • #90 IA__g_signal_emit
  • #91 gimp_object_dispose
    at gimpobject.c line 160
  • #92 gimp_image_dispose
    at gimpimage.c line 787
  • #93 IA__g_object_unref
    at gobject.c line 1674
  • #94 gimp_display_reconnect
  • #95 gimp_displays_reconnect
  • #96 file_revert_confirm_response
  • #97 IA__g_cclosure_marshal_VOID__INT
  • #98 IA__g_closure_invoke
  • #99 signal_emit_unlocked_R
  • #100 IA__g_signal_emit_valist
  • #101 IA__g_signal_emit
  • #102 IA__gtk_dialog_response
  • #103 action_widget_activated
  • #104 IA__g_cclosure_marshal_VOID__VOID
  • #105 IA__g_closure_invoke
  • #106 signal_emit_unlocked_R
  • #107 IA__g_signal_emit_valist
  • #108 IA__g_signal_emit
  • #109 IA__gtk_button_clicked
    at gtkbutton.c line 782
  • #110 gtk_real_button_released
  • #111 IA__g_cclosure_marshal_VOID__VOID
  • #112 g_type_class_meta_marshal
  • #113 IA__g_closure_invoke
  • #114 signal_emit_unlocked_R
  • #115 IA__g_signal_emit_valist
  • #116 IA__g_signal_emit
  • #117 IA__gtk_button_released
  • #118 gtk_button_button_release
  • #119 _gtk_marshal_BOOLEAN__BOXED
  • #120 g_type_class_meta_marshal
  • #121 IA__g_closure_invoke
  • #122 signal_emit_unlocked_R
  • #123 IA__g_signal_emit_valist
  • #124 IA__g_signal_emit
  • #125 gtk_widget_event_internal
  • #126 IA__gtk_propagate_event
  • #127 IA__gtk_main_do_event
    at gtkmain.c line 1383
  • #128 gdk_event_dispatch
  • #129 g_main_dispatch
    at gmain.c line 1934
  • #130 IA__g_main_context_dispatch
  • #131 g_main_context_iterate
  • #132 IA__g_main_loop_run
    at gmain.c line 2769
  • #133 app_run
  • #134 main
    at main.c line 473
  • #135 __libc_start_main
    from /lib/libc.so.6

(script-fu:445): LibGimpBase-WARNING **: script-fu: wire_read(): error
hof@gimpix4:[tmp_frames] >
Comment 1 Sven Neumann 2006-03-06 16:46:55 UTC
Reproducible with GIMP 2.3. Seems to break with a very similar stack trace.
Comment 2 Sven Neumann 2006-03-06 17:37:34 UTC
Fixed in both branches:

2006-03-06  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplay.c (gimp_display_reconnect): keep a
	reference on the old image until the display is connected to the
	new one. Fixes bug #333568.

	* app/display/gimpdisplay-handlers.c: fixed typo in comment.

	* app/actions/file-commands.c: cosmetics.