I don't think the ?? stack frames are because of missing debug symbols. It looks like stack corruption, so the backtrace is of no use as the problem occurred some time before the segfault.
I'm thinking the segfault may only occur because of something changed in GTK 2.10.0 or the corresponding GLib (Sascha: what version of GLib?)
The output of Valgrind may help diagnosing the problem when the corruption first occurs: valgrind --tool=addrcheck --leak-check=no /path/to/geany
I haven't tested Geany with GTK 2.10.0 yet. It's difficult to say whether the problem is Geany or GTK 2.10.0 or the Gentoo system...
I was unable to get more debugging symbols yet (i used USE="debug" and removed fomit-frame-pointer from my flags). I wanted to try valgrind but couldn't figure out where to get the addrcheck tool, so i used memcheck, maybe its of some use:
valgrind --tool=memcheck --leak-check=no /usr/bin/geany ==18795== Memcheck, a memory error detector. ==18795== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al. ==18795== Using LibVEX rev 1606, a library for dynamic binary translation. ==18795== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP. ==18795== Using valgrind-3.2.0, a dynamic binary instrumentation framework. ==18795== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al. ==18795== For more details, rerun with: -v ==18795== ==18795== Syscall param writev(vector[...]) points to uninitialised byte(s) ==18795== at 0x477B972: (within /lib/libc-2.4.so) ==18795== by 0x48204DD: (within /usr/lib/libX11.so.6.2.0) ==18795== Address 0x4AA4F0C is 324 bytes inside a block of size 16,384 alloc'd ==18795== at 0x40206CE: calloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18795== by 0x4810653: XOpenDisplay (in /usr/lib/libX11.so.6.2.0) ==18795== ==18795== Syscall param write(buf) points to uninitialised byte(s) ==18795== at 0x47742B3: write (in /lib/libc-2.4.so) ==18795== by 0x482055D: (within /usr/lib/libX11.so.6.2.0) ==18795== Address 0x4AA4F29 is 353 bytes inside a block of size 16,384 alloc'd ==18795== at 0x40206CE: calloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18795== by 0x4810653: XOpenDisplay (in /usr/lib/libX11.so.6.2.0) ==18818== ==18818== ERROR SUMMARY: 5 errors from 2 contexts (suppressed: 109 from 1) ==18818== malloc/free: in use at exit: 2,874,531 bytes in 22,160 blocks. ==18818== malloc/free: 147,611 allocs, 125,451 frees, 13,831,961 bytes allocated. ==18818== For a detailed leak analysis, rerun with: --leak-check=yes ==18818== For counts of detected errors, rerun with: -v ==18795== ==18795== Invalid free() / delete / delete[] ==18795== at 0x402114C: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18795== by 0x457B830: g_free (in /usr/lib/libglib-2.0.so.0.1200.1) ==18795== by 0x4173C9B: (within /usr/lib/libgtk-x11-2.0.so.0.1000.1) ==18795== Address 0x61E60E0 is 224 bytes inside a block of size 504 alloc'd ==18795== at 0x4020562: memalign (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18795== by 0x40205FF: posix_memalign (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18795== by 0x458AD9B: (within /usr/lib/libglib-2.0.so.0.1200.1)
glib is 2.12.1
Regards Sascha