I am new to GTK. I have just started looking into a large
piece of GTK2 application code which was developed and tested using GTK2-2.18.x
(GTK2 version 2.18) on a proprietary system running Linux. I have upgraded GTK2 to version 2.22. I can’t upgrade
to 2.24 to 3.0 as there are some issues with proprietary hardware which
currently has drivers that work only with older X server and some older
packages. After the upgrade from 2.18 to 2.22 I see random crashes in
the GTK2 application. I believe that the crashes are due to heap corruption.
The gdb stack trace shows the crash almost always to be inside a libc realloc
function. But the GTK functions from the code that are called before the libc
realloc crash vary. I enabled MALLOC_CHECK_ and also enabled GTK_DEBUG. Below
are the logs (taken from stderr) after 3 random crashes. I have also used
valgrind without much success. Appreciate any help in resolving this issue. ------------------------- Crash 1 - (App:3490): Gtk-CRITICAL **: IA__gtk_main_quit: assertion `main_loops
!= NULL' failed ** Gdk:ERROR:gdkregion-generic.c:1110:miUnionNonO: assertion
failed: (y1 < y2) Crash 2 - (App:5155): Pango-CRITICAL **: pango_layout_get_context:
assertion `layout != NULL' failed (App:5155): Pango-CRITICAL **: pango_context_get_language:
assertion `context != NULL' failed (App:5155): Pango-CRITICAL **: pango_context_get_metrics:
assertion `PANGO_IS_CONTEXT (context)' failed (App:5155): Pango-CRITICAL **:
pango_font_metrics_get_approximate_char_width: assertion `metrics != NULL'
failed (App:5155): Pango-CRITICAL **:
pango_font_metrics_get_approximate_digit_width: assertion `metrics != NULL'
failed (App:5155): Pango-CRITICAL **: pango_layout_set_width:
assertion `layout != NULL' failed (App:5155): Pango-CRITICAL **: pango_layout_get_extents:
assertion `layout != NULL' failed ** Gdk:ERROR:gdkregion-generic.c:1110:miUnionNonO: assertion
failed: (y1 < y2) Crash 3 - (App:5883): Pango-CRITICAL **: pango_layout_set_width:
assertion `layout != NULL' failed (App:5883): Pango-CRITICAL **: pango_layout_get_extents:
assertion `layout != NULL' failed Gdk:ERROR:gdkregion-generic.c:1110:miUnionNonO: assertion
failed: (y1 < y2) -------------------------------------- |