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 684987 - multiple-lined gtktooltips crashes application because of pango
multiple-lined gtktooltips crashes application because of pango
Status: RESOLVED DUPLICATE of bug 684959
Product: pango
Classification: Platform
Component: general
1.32.x
Other Linux
: Normal normal
: ---
Assigned To: pango-maint
pango-maint
Depends on:
Blocks:
 
 
Reported: 2012-09-27 17:37 UTC by Víctor Manuel Jáquez Leal
Modified: 2012-09-27 17:59 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Víctor Manuel Jáquez Leal 2012-09-27 17:37:12 UTC
Testing a code like this:

gtk_widget_set_tooltip_text (GTK_WIDGET (main_video), "hi\nworld");

The test application crashes with this backtrace:

  • #0 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 *__GI_abort
    at abort.c line 92
  • #2 __libc_message
    at ../sysdeps/unix/sysv/linux/libc_fatal.c line 189
  • #3 malloc_printerr
  • #4 *__GI___libc_free
    at malloc.c line 3738
  • #5 standard_free
    at gmem.c line 98
  • #6 g_free
    at gmem.c line 252
  • #7 insert_run
    at pango-layout.c line 3232
  • #8 process_item
    at pango-layout.c line 3406
  • #9 process_line
    at pango-layout.c line 3595
  • #10 pango_layout_check_lines
    at pango-layout.c line 3916
  • #11 pango_layout_get_extents_internal
    at pango-layout.c line 2491
  • #12 pango_layout_get_extents
    at pango-layout.c line 2673
  • #13 gtk_label_ensure_layout
    at gtklabel.c line 3108
  • #14 gtk_label_size_request
    at gtklabel.c line 3163
  • #15 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #16 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #17 _g_closure_invoke_va
    at gclosure.c line 840
  • #18 g_signal_emit_valist
    at gsignal.c line 3211
  • #19 g_signal_emit_by_name
    at gsignal.c line 3393
  • #20 do_size_request
    at gtksizegroup.c line 628
  • #21 _gtk_size_group_compute_requisition
    at gtksizegroup.c line 828
  • #22 IA__gtk_widget_size_request
    at gtkwidget.c line 3906
  • #23 gtk_box_size_request
    at gtkbox.c line 280
  • #24 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #25 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #26 _g_closure_invoke_va
    at gclosure.c line 840
  • #27 g_signal_emit_valist
    at gsignal.c line 3211
  • #28 g_signal_emit_by_name
    at gsignal.c line 3393
  • #29 do_size_request
    at gtksizegroup.c line 628
  • #30 _gtk_size_group_compute_requisition
    at gtksizegroup.c line 828
  • #31 IA__gtk_widget_size_request
    at gtkwidget.c line 3906
  • #32 gtk_alignment_size_request
    at gtkalignment.c line 482
  • #33 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #34 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #35 _g_closure_invoke_va
    at gclosure.c line 840
  • #36 g_signal_emit_valist
    at gsignal.c line 3211
  • #37 g_signal_emit_by_name
    at gsignal.c line 3393
  • #38 do_size_request
    at gtksizegroup.c line 628
  • #39 _gtk_size_group_compute_requisition
    at gtksizegroup.c line 828
  • #40 IA__gtk_widget_size_request
    at gtkwidget.c line 3906
  • #41 gtk_window_size_request
    at gtkwindow.c line 4968
  • #42 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #43 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #44 _g_closure_invoke_va
  • #45 g_signal_emit_valist
    at gsignal.c line 3211
  • #46 g_signal_emit_by_name
    at gsignal.c line 3393
  • #47 do_size_request
    at gtksizegroup.c line 628
  • #48 _gtk_size_group_compute_requisition
    at gtksizegroup.c line 828
  • #49 IA__gtk_widget_size_request
    at gtkwidget.c line 3906
  • #50 gtk_tooltip_position
    at gtktooltip.c line 948
  • #51 gtk_tooltip_show_tooltip
    at gtktooltip.c line 1048
  • #52 tooltip_popup_timeout
    at gtktooltip.c line 1131
  • #53 gdk_threads_dispatch
    at gdk.c line 512
  • #54 g_timeout_dispatch
    at gmain.c line 4026
  • #55 g_main_dispatch
    at gmain.c line 2715
  • #56 g_main_context_dispatch
    at gmain.c line 3219
  • #57 g_main_context_iterate
    at gmain.c line 3290
  • #58 g_main_loop_run
    at gmain.c line 3484
  • #59 IA__gtk_main
    at gtkmain.c line 1257
  • #60 main
    at testtooltips.c line 428


According to git-bisect, this commit is the responsible of the crash

commit bbec7e8697907a922f80c00b94f54b9b8634d264
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Sep 26 15:37:20 2012 -0400

    Add pango_shape_full()
    
    Variant of pango_shape() that takes the full paragraph text as input.
    This is then passed in entirety to HarfBuzz, which would allow certain
    cross-run interactions (in Arabic for example).
    
    When combined with upcoming HarfBuzz 0.9.5+, this fixes:
    
    Red Hat Bug 858736 - [Spanish] Stray dotted circle rendered
    https://bugzilla.redhat.com/show_bug.cgi?id=858736
    
    and partially:
    
    Bug 313181 - color changes break arabic shaping
    https://bugzilla.gnome.org/show_bug.cgi?id=313181
Comment 1 Behdad Esfahbod 2012-09-27 17:59:19 UTC
Working on it.

*** This bug has been marked as a duplicate of bug 684959 ***