Segmentation fault after "Pango-CRITICAL **: _pango_layout_get_iter: assertion 'PANGO_IS_LAYOUT (layout)' failed"
Steps to reproduce
- Create an app with Gtk.EditableLabel widget:
use adw::gtk;
use adw::prelude::*;
fn main() {
let application =
gtk::Application::new(Some("com.github.gtk-rs.examples.basic"), Default::default());
application.connect_activate(build_ui);
application.run();
}
fn build_ui(application: >k::Application) {
let window = gtk::ApplicationWindow::new(application);
window.set_title(Some("First GTK Program"));
window.set_default_size(350, 70);
let entry = gtk::EditableLabel::builder()
.text("text") // very important!
.build();
window.set_child(Some(&entry));
window.show();
}
- Start the app.
- The label widget appears properly initialized with text "text".
- Click the widget with the mouse cursor.
- The widget enters the editing mode and the text "text" gets highlighted.
- Press the right or left keyboard arrow.
- The application crashes immediately.
More information:
- The crash is always reproducible.
- The crash does not happen when the widget text is not set initially or if the text contains digits only.
- If the text contains at least one letter, it crashes.
- If instead of pressing arrow keys I start typing something and then press arrows, the crash does not happen.
- If I enter the editing mode, leave editing mode with ESC, enter the editing mode once again with mouse click and then press the arrow, the crash does not happen.
Version information
- OS: Ubuntu 22.04.1 LTS
- GTK version: libgtk-4.so.1.600.6 (original shipped with the OS)
Warnings
(fclones-gui:261382): Pango-CRITICAL **: 21:16:01.465: _pango_layout_get_iter: assertion 'PANGO_IS_LAYOUT (layout)' failed
No other warnings or messages are printed since the start of the app.
Backtrace
Backtrace from valgrind:
==261382== Invalid read of size 4
==261382== at 0x5267C36: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4EED1FF: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C1113A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D4A63B: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Address 0x179f450c is 76 bytes inside a block of size 184 free'd
==261382== at 0x484B27F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x48B87D4: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4CBB286: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0B75: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B2553: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B27A2: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x489F283: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A5F89: g_object_notify (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4E7F9BE: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4E80AAD: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB656E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Block was alloc'd at
==261382== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x54DD718: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F4B64: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F51CD: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x48BDE61: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A4F4C: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A61AC: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A6CB0: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x5263CC3: pango_layout_new (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4D3D555: gtk_widget_create_pango_layout (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB8061: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB883A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382==
==261382== Invalid read of size 8
==261382== at 0x5272740: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267A2E: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267C55: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4EED1FF: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Address 0x179f44c0 is 0 bytes inside a block of size 184 free'd
==261382== at 0x484B27F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x48B87D4: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4CBB286: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0B75: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B2553: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B27A2: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x489F283: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A5F89: g_object_notify (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4E7F9BE: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4E80AAD: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB656E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Block was alloc'd at
==261382== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x54DD718: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F4B64: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F51CD: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x48BDE61: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A4F4C: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A61AC: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A6CB0: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x5263CC3: pango_layout_new (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4D3D555: gtk_widget_create_pango_layout (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB8061: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB883A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382==
==261382== Invalid read of size 8
==261382== at 0x48B9649: g_type_check_instance_is_a (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x5272755: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267A2E: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267C55: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Address 0x179f44c0 is 0 bytes inside a block of size 184 free'd
==261382== at 0x484B27F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x48B87D4: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4CBB286: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0B75: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B2553: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B27A2: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x489F283: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A5F89: g_object_notify (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4E7F9BE: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4E80AAD: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB656E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Block was alloc'd at
==261382== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==261382== by 0x54DD718: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F4B64: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x54F51CD: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1)
==261382== by 0x48BDE61: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A4F4C: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A61AC: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48A6CB0: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x5263CC3: pango_layout_new (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4D3D555: gtk_widget_create_pango_layout (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB8061: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB883A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382==
(fclones-gui:261382): Pango-CRITICAL **: 21:16:01.465: _pango_layout_get_iter: assertion 'PANGO_IS_LAYOUT (layout)' failed
==261382== Use of uninitialised value of size 8
==261382== at 0x5267A36: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267C55: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4EED1FF: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C1113A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382==
==261382== Invalid read of size 8
==261382== at 0x5267A36: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267C55: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4EED1FF: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C1113A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==261382==
==261382==
==261382== Process terminating with default action of signal 11 (SIGSEGV)
==261382== Access not within mapped region at address 0x0
==261382== at 0x5267A36: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x5267C55: pango_layout_get_cursor_pos (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5000.6)
==261382== by 0x4CB65B9: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4CB6A92: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4894D2E: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x48B0563: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1)
==261382== by 0x4C7ED8F: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C81F68: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3BD62: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4D3C090: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4EED1FF: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
==261382== by 0x4C1113A: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.6)
Edited by Piotr Kołaczkowski