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 331219 - Critical warning crasher in the composer code on startup with a11y enabled
Critical warning crasher in the composer code on startup with a11y enabled
Status: RESOLVED FIXED
Product: libgnomeui
Classification: Deprecated
Component: general
2.13.x
Other Linux
: Normal normal
: ---
Assigned To: libgnomeui maintainers
libgnomeui maintainers
Depends on:
Blocks:
 
 
Reported: 2006-02-15 00:08 UTC by Kjartan Maraas
Modified: 2006-02-26 14:34 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch (1.01 KB, patch)
2006-02-23 06:54 UTC, Harry Lu
none Details | Review

Description Kjartan Maraas 2006-02-15 00:08:29 UTC
I'm seeing this:

  • #0 IA__g_logv
    at gmessages.c line 503
  • #1 IA__g_log
    at gmessages.c line 517
  • #2 IA__g_return_if_fail_warning
    at gmessages.c line 532
  • #3 gnome_icon_list_get_icon_text_item
    at gnome-icon-list.c line 3167
  • #4 impl_ref_child
    at gnome-icon-list.c line 3452
  • #5 atk_object_ref_accessible_child
    at atkobject.c line 657
  • #6 spi_atk_bridge_signal_listener
    at bridge.c line 1030
  • #7 signal_emit_unlocked_R
    at gsignal.c line 2404
  • #8 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #9 IA__g_signal_emit_by_name
    at gsignal.c line 2265
  • #10 gnome_icon_list_clear
    at gnome-icon-list.c line 1419
  • #11 update
    at e-attachment-bar.c line 252
  • #12 add_common
    at e-attachment-bar.c line 157
  • #13 efhd_attachment_button
    at em-format-html-display.c line 1588
  • #14 efh_object_requested
    at em-format-html.c line 590
  • #15 html_g_cclosure_marshal_BOOLEAN__OBJECT
    at htmlmarshal.c line 83
  • #16 IA__g_closure_invoke
    at gclosure.c line 490
  • #17 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #18 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #19 IA__g_signal_emit
    at gsignal.c line 2241
  • #20 html_engine_object_requested_cb
    at gtkhtml.c line 521
  • #21 html_g_cclosure_marshal_BOOLEAN__OBJECT
    at htmlmarshal.c line 83
  • #22 IA__g_closure_invoke
    at gclosure.c line 490
  • #23 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #24 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #25 IA__g_signal_emit
    at gsignal.c line 2241
  • #26 element_parse_object
    at htmlengine.c line 1529
  • #27 parse_one_token
    at htmlengine.c line 3743
  • #28 html_engine_timer_event
    at htmlengine.c line 1348
  • #29 html_engine_flush
    at htmlengine.c line 6479
  • #30 gtk_html_flush
    at gtkhtml.c line 5707
  • #31 emhs_sync_flush
    at em-html-stream.c line 127
  • #32 emcs_gui_received
    at em-sync-stream.c line 161
  • #33 g_io_unix_dispatch
    at giounix.c line 162
  • #34 IA__g_main_context_dispatch
    at gmain.c line 1916
  • #35 g_main_context_iterate
    at gmain.c line 2547
  • #36 IA__g_main_loop_run
    at gmain.c line 2751
  • #37 bonobo_main
    at bonobo-main.c line 311
  • #38 main
    at main.c line 603
  • #39 __libc_start_main
    at libc-start.c line 231
  • #40 _start

Comment 1 Kjartan Maraas 2006-02-15 00:09:33 UTC
Guessing maybe the best approach here would be to just port this stuff to GtkIconView or are there any features in GnomeIconList that are a must have?
Comment 2 Kjartan Maraas 2006-02-15 10:50:25 UTC
Adding the Sun a11y team on Cc:
Comment 3 Boby Wang 2006-02-20 03:32:12 UTC
In function gnome_icon_list_get_icon_text_item, there are some codes like this g_return_val_if_fail ((dx >= 0 && idx < gil->_priv->icons), NULL);
gil->_priv->icons might be zero, so evolution will crash. In gnome 2.13, all the critical warning will cause crash.
    I suggest that we can just assure the validity, and it is not necessary to report a critical warning. Possible code are like this:
if (dx >= 0 && idx < gil->_priv->icons)
    return NULL;
    You can transfer this bug to gnome ui group.
Comment 4 Harry Lu 2006-02-20 05:32:38 UTC
Yes, I think this is a libgnomeui bug.
Please change the bug's product.
Comment 5 Kjartan Maraas 2006-02-20 14:44:27 UTC
I tried the suggestion from #3 here and I still see an invalid read of size 4 in valgrind and a crash when I do that. So it seems that even though we do that the call to         icon = g_array_index (gil->_priv->icon_list, Icon*, idx);

leaves icon->text bogus?

There's a fixme in impl_ref_child() that could be related:

        iti = gnome_icon_list_get_icon_text_item (gil, i);
        if (!iti)
                return NULL;

        /* FIXME: is this what we need to return?  How do we distinguish between
         * the icon text item and the pixbuf?
         */
        atk_object = atk_gobject_accessible_for_object (G_OBJECT (iti));
        g_object_ref (atk_object);
        return atk_object;
Comment 6 Harry Lu 2006-02-21 02:46:07 UTC
Kjartan, what is the trace of the new crash?
Comment 7 Kjartan Maraas 2006-02-21 12:43:18 UTC
==13550== Invalid read of size 4
==13550==    at 0x455AD7E: gnome_icon_list_get_icon_text_item (gnome-icon-list.c:3174)
==13550==    by 0x455D70F: impl_ref_child (gnome-icon-list.c:3454)
==13550==    by 0x4D0573F: atk_object_ref_accessible_child (atkobject.c:657)
==13550==    by 0x41243E3: spi_atk_bridge_signal_listener (bridge.c:1030)
==13550==    by 0x4E3C66C: signal_emit_unlocked_R (gsignal.c:2404)
==13550==    by 0x4E3DD82: g_signal_emit_valist (gsignal.c:2197)
==13550==    by 0x4E3FC5D: g_signal_emit_by_name (gsignal.c:2265)
==13550==    by 0x455EE4D: gnome_icon_list_clear (gnome-icon-list.c:1419)
==13550==    by 0x402FBE6: update (e-attachment-bar.c:249)
==13550==    by 0x4030358: add_common (e-attachment-bar.c:157)
==13550==    by 0x64EEB8A: efhd_attachment_button (em-format-html-display.c:1588)
==13550==    by 0x64F037F: efh_object_requested (em-format-html.c:590)
==13550==    by 0x44BE64F: html_g_cclosure_marshal_BOOLEAN__OBJECT (htmlmarshal.c:83)
==13550==    by 0x4E2AEFC: g_closure_invoke (gclosure.c:490)
==13550==    by 0x4E3C90A: signal_emit_unlocked_R (gsignal.c:2438)
==13550==    by 0x4E3DC35: g_signal_emit_valist (gsignal.c:2207)
==13550==    by 0x4E3E028: g_signal_emit (gsignal.c:2241)
==13550==    by 0x447E04B: html_engine_object_requested_cb (gtkhtml.c:521)
==13550==    by 0x44BE64F: html_g_cclosure_marshal_BOOLEAN__OBJECT (htmlmarshal.c:83)
==13550==    by 0x4E2AEFC: g_closure_invoke (gclosure.c:490)
==13550==    by 0x4E3C90A: signal_emit_unlocked_R (gsignal.c:2438)
==13550==    by 0x4E3DC35: g_signal_emit_valist (gsignal.c:2207)
==13550==    by 0x4E3E028: g_signal_emit (gsignal.c:2241)
==13550==    by 0x44B2A18: element_parse_object (htmlengine.c:1529)
==13550==    by 0x44A996B: parse_one_token (htmlengine.c:3743)
==13550==    by 0x44B56C7: html_engine_timer_event (htmlengine.c:1348)
==13550==    by 0x44B5749: html_engine_flush (htmlengine.c:6479)
==13550==    by 0x447A4CF: gtk_html_flush (gtkhtml.c:5707)
==13550==    by 0x64F706B: emhs_sync_flush (em-html-stream.c:127)
==13550==    by 0x65064DC: emcs_gui_received (em-sync-stream.c:161)
==13550==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
Comment 8 Harry Lu 2006-02-23 06:54:15 UTC
Created attachment 59983 [details] [review]
Patch

Patch for test
Comment 9 Harry Lu 2006-02-23 06:55:51 UTC
sorry, in comment 3 from Boby, one sentence is wrong.
if (dx >= 0 && idx < gil->_priv->icons)
    return NULL;

should be

if (dx < 0 || idx >= gil->_priv->icons)
    return NULL;


Please have a try with my attached patch in comment 8.
Comment 10 Kjartan Maraas 2006-02-23 13:22:10 UTC
Looking good. I'll commit it after some more testing.
Comment 11 Kjartan Maraas 2006-02-26 14:34:38 UTC
Commited.