GNOME Bugzilla – Bug 168608
GTK+ causes Gaim crash
Last modified: 2005-03-09 22:53:06 UTC
Steps to reproduce: 1. Install last full Gaim Package (with GTK+ 2.6.4 rev a) on a win 98 based machine 2. Launch Gaim 3. Stack trace: Gaim debug report : shows problem with LIBGTK-WIN32-2.0-0.DLL ------------------- Error occured on Saturday, February 26, 2005 at 13:30:19. C:\PROGRAM FILES\GAIM\GAIM.EXE caused an Access Violation at location 0105d3ae in module C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL Reading from location ffffffff. Registers: eax=00000000 ebx=00942220 ecx=c8b40b50 edx=bffc9490 esi=00942270 edi=00000000 eip=0105d3ae esp=0079bfc0 ebp=0079bfe8 iopl=0 nv up ei pl nz na po nc cs=016f ss=0177 ds=0177 es=0177 fs=5237 gs=0000 efl=00010206 Call stack: 0105D3AE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105D3AE gtk_icon_theme_set_screen 00E7B6F3 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E7B6F3 g_type_create_instance 00E66804 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E66804 g_object_new_valist 00E65E4A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E65E4A g_object_newv 00E66527 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E66527 g_object_new_valist 00E65A24 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E65A24 g_object_new 0105CDCA C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105CDCA gtk_icon_theme_new 0105CE95 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105CE95 gtk_icon_theme_get_for_screen 0105B0BF C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105B0BF gtk_icon_set_copy 0105B3C2 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105B3C2 gtk_icon_set_copy 0105B5E5 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0105B5E5 gtk_icon_set_render_icon 0117C57D C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0117C57D gtk_widget_render_icon 0106D2C8 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0106D2C8 gtk_image_get 0106D3D5 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0106D3D5 gtk_image_get 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 0116FFA1 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0116FFA1 gtk_vbox_new 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 0116FFA1 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0116FFA1 gtk_vbox_new 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 00FC6F97 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:00FC6F97 gtk_button_get_relief 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 01053751 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01053751 gtk_hbox_new 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 0116FFA1 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:0116FFA1 gtk_vbox_new 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 01186764 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01186764 gtk_window_reshow_with_initial_size 00E781A0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E781A0 g_cclosure_marshal_VOID__BOXED 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75787 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75787 g_signal_emit_by_name 010D73C4 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D73C4 gtk_size_group_remove_widget 010D76B6 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:010D76B6 gtk_size_group_remove_widget 01178151 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01178151 gtk_widget_size_request 011878BA C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:011878BA gtk_window_propagate_key_event 01185E6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01185E6A gtk_window_reshow_with_initial_size 00E77A4A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E77A4A g_cclosure_marshal_VOID__VOID 00E6370B C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E6370B g_cclosure_new_swap 00E634DE C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E634DE g_closure_invoke 00E75F6A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75F6A g_signal_emit_by_name 00E75434 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75434 g_signal_emit_valist 00E75676 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGOBJECT-2.0-0.DLL:00E75676 g_signal_emit 01177174 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01177174 gtk_widget_show 01004A5A C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:01004A5A gtk_container_get_focus_hadjustment 011775E0 C:\PROGRAM FILES\COMMON FILES\GTK\2.0\BIN\LIBGTK-WIN32-2.0-0.DLL:011775E0 gtk_widget_show_all 68C6D101 C:\PROGRAM FILES\GAIM\GAIM.DLL:68C6D101 show_login C:/cygwin/home/herman/cvs_work/sourceforge/gaim/src/main.c:314 68C6DE2F C:\PROGRAM FILES\GAIM\GAIM.DLL:68C6DE2F gaim_main C:/cygwin/home/herman/cvs_work/sourceforge/gaim/src/main.c:956 004020FE C:\PROGRAM FILES\GAIM\GAIM.EXE:004020FE WinMain C:/cygwin/home/herman/cvs_work/sourceforge/gaim/src/win_gaim.c:321 0040222B C:\PROGRAM FILES\GAIM\GAIM.EXE:0040222B WinMain C:/cygwin/home/herman/cvs_work/sourceforge/gaim/src/win_gaim.c:279 0040122D C:\PROGRAM FILES\GAIM\GAIM.EXE:0040122D 00401258 C:\PROGRAM FILES\GAIM\GAIM.EXE:00401258 BFF8B537 C:\WINDOWS\SYSTEM\KERNEL32.DLL:BFF8B537 RtlUnwind BFF8B3E9 C:\WINDOWS\SYSTEM\KERNEL32.DLL:BFF8B3E9 RtlUnwind BFF89DAC C:\WINDOWS\SYSTEM\KERNEL32.DLL:BFF89DAC SetConsoleCursorInfo Other information: When launching GAIM, here are the displayed lines : Loaded exchndl.dll Could not read reg key 'HLM' subkey 'SOFTWARE\GTK\2.0' value 'DllPath' Error:120 GTK+ path found: C:\Program Files\Common Files\GTK\2.0\bin Set DllDirectory not supported Setting current directory to GTK+ dll directory Setting locale: LANG=fr wgaim: wgaim_init_start wgaim: This version of user32.dll contains FlashWindowEx wgaim: shfolder.dll not found. Loading it. wgaim: This version of shfodler.dll contains SHGetFolderPathW wgaim: Gaim settings dir: C:\WINDOWS\Application Data wgaim: wgaim_init end Then GAIM using GTK+ crashes (see stack above) I verify the HLM key exists in the register...
I think the reporter meant GTK+ 2.6.2.
Oups ! Yep, I mean GTK+ 2.6.2 ! Sorry for this mistake... Mos
Not really much I can do based on that. Do you try to use some theme? Try without.
Yep I inform Gaim'developpers about this problem. They answer me this is a GTK+ problem. So they will wait for a new corrected GTK+! "Since this is a bug in GTK+, we have to wait for a new gtk+ :-/" link : http://sourceforge.net/tracker/index.php?func=detail&aid=1152351&group_id=235&atid=100235 Thats is why I create this bug report here, but I ma not a Gaim developer and I can not say you more, but you give me the way to follow... I use GAIM (and so GTK+) without theme (like with Gimp)
Something changed between GTK 2.4.14 and GTK 2.6.2 to break Win98. Suspect a problem similar to missing DLL exports for Win95 GTK Bug #150746 http://sourceforge.net/tracker/?group_id=235&atid=100235&func=detail&aid=1149584 Gaim 1.1.3 requires GTK 2.6.2, which doesn't currently work on Windows 98/ME. From what you have written, i think that explains both of your problems. On your Win XP machine you need to install GTK 2.6.2 and on the Win98 machine, you must stay with GTK 2.4.14 and gaim 1.1.2.
Well, GTK+ 2.6.2 does use an API not present in Win95 (see bug #150746), but that has totally different symptoms, the application doesn't start at all. This is something else. Maybe theme related.
The topmost function name is most likely bogus, it should be gtk_icon_theme_init (which is static and therefore not exported). I disassembled gaim's libgtk, and here is the part at the crash: 0x100ad3a1 <gtk_icon_theme_init+56>: call 0x101e0690 <g_get_system_data_dirs> 0x100ad3a6 <gtk_icon_theme_init+61>: mov %eax,0xffffffec(%ebp) 0x100ad3a9 <gtk_icon_theme_init+64>: mov $0x0,%edi 0x100ad3ae <gtk_icon_theme_init+69>: cmpl $0x0,(%eax) ^^^^^^^^^^^^^^^^^^ crash here 0x100ad3b1 <gtk_icon_theme_init+72>: je 0x100ad3bd <gtk_icon_theme_init+84> (subtract 0x0F050000 from the adresses in the disassembly to match the backtrace above, the dll was linked with base 0x10001000 but relocated at load) corresponding source: xdg_data_dirs = g_get_system_data_dirs (); for (i = 0; xdg_data_dirs[i]; i++) ; So it looks like g_get_system_data_dirs returns NULL. A possible cause: get_special_folder (CSIDL_COMMON_APPDATA) returns NULL, which makes g_strconcat return NULL. This is passed to g_strsplit which also returns NULL because the input string is NULL. (Note: I haven't actually run the code on Windows 98, I'm just looking at the source and guessing ;) The easiest way to test my theory is probably to ask the reporter to run testglib and see what it prints for system_data.
Here's the output from testglib (compiled against Tor's binaries on Windows 98): TestGLib v2.6.3 (i:3 b:603) cwd: C:\cygwin\home\jeff user: jeff real: jeff home: C:\cygwin\home\jeff home: C:\cygwin\home\jeff user_data: C:\My Documents user_config: C:\WINDOWS\Application Data user_cache: C:\WINDOWS\Temporary Internet Files (TESTGLIB.EXE): GLib-CRITICAL **: g_strsplit: assertion `string != NULL' failed system_data: NULL! (TESTGLIB.EXE): GLib-CRITICAL **: g_strsplit: assertion `string != NULL' failed (TESTGLIB.EXE): GLib-CRITICAL **: g_strjoinv: assertion `str_array != NULL' failed and then testglib politely crashes.
I wish that I had looked at this before. Bug #169349 explains the issue and contains a patch to fix it.
*** This bug has been marked as a duplicate of 169349 ***
*** Bug 169115 has been marked as a duplicate of this bug. ***
*** Bug 169266 has been marked as a duplicate of this bug. ***
*** Bug 169778 has been marked as a duplicate of this bug. ***