Bug 219257 - dbus deadlocks gnome-vfs in firefox
Summary: dbus deadlocks gnome-vfs in firefox
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: dbus
Version: 6
Hardware: athlon
OS: Linux
medium
high
Target Milestone: ---
Assignee: David Zeuthen
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-12-12 09:00 UTC by Pawel Salek
Modified: 2013-03-06 03:48 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-02-15 22:50:55 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Pawel Salek 2006-12-12 09:00:16 UTC
Description of problem:
Most/all gnome applications hang in dbus-related code when eg. opening file
chooser. This happens when the application is run in su-ed session, eg
su otheruser firefox. It first began to happen after recent upgrade
(dbus-x11.i386 1.0.1-2?).

Version-Release number of selected component (if applicable):
dbus-glib-0.70-5.fc6
dbus-x11-1.0.1-2.fc6
dbus-python-0.70-6
dbus-1.0.1-2.fc6


How reproducible:
Always.

Steps to Reproduce:
1. Log in graphically as userA.
2. Execute su userB firefox
3. Try saving a page.
  
Actual results:
firefox will stop responding. Connecting with a debugger will reveal following
trace:
0x00439402 in __kernel_vsyscall ()
(gdb) where
#0  0x00439402 in __kernel_vsyscall ()
#1  0x41f7098e in __lll_mutex_lock_wait () from /lib/libpthread.so.0
#2  0x41f6c7fc in _L_mutex_lock_85 () from /lib/libpthread.so.0
#3  0x41f6c33d in pthread_mutex_lock () from /lib/libpthread.so.0
#4  0x0070afdd in dbus_g_object_path_get_g_type ()
   from /usr/lib/libdbus-glib-1.so.2
#5  0x00b518cf in dbus_timeout_get_enabled () from /lib/libdbus-1.so.3
#6  0x00b3a94d in dbus_bus_get_unix_user () from /lib/libdbus-1.so.3
#7  0x00b3e60d in dbus_connection_set_watch_functions ()
   from /lib/libdbus-1.so.3
#8  0x00b4020d in dbus_connection_open () from /lib/libdbus-1.so.3
#9  0x00b4c5a1 in dbus_pending_call_block () from /lib/libdbus-1.so.3
#10 0x00b3f721 in dbus_connection_send_with_reply_and_block ()
   from /lib/libdbus-1.so.3
#11 0x00b3ae1e in dbus_bus_register () from /lib/libdbus-1.so.3
#12 0x00b3b1d6 in dbus_bus_register () from /lib/libdbus-1.so.3
#13 0x00ca704b in gnome_vfs_daemon_message_iter_get_file_info ()
   from /usr/lib/libgnomevfs-2.so.0
#14 0x00cc780e in gnome_vfs_volume_monitor_client_shutdown_private ()
   from /usr/lib/libgnomevfs-2.so.0
#15 0x00cc73c9 in gnome_vfs_volume_monitor_client_get_type ()
   from /usr/lib/libgnomevfs-2.so.0
#16 0x421777ba in g_type_create_instance () from /lib/libgobject-2.0.so.0
#17 0x4215f0b2 in g_object_set () from /lib/libgobject-2.0.so.0
#18 0x4215cd0b in g_object_newv () from /lib/libgobject-2.0.so.0
#19 0x4215d86e in g_object_new_valist () from /lib/libgobject-2.0.so.0
#20 0x4215da20 in g_object_new () from /lib/libgobject-2.0.so.0
#21 0x00cc8184 in gnome_vfs_volume_monitor_unref ()
   from /usr/lib/libgnomevfs-2.so.0
#22 0x00cc821a in gnome_vfs_get_volume_monitor ()
   from /usr/lib/libgnomevfs-2.so.0
#23 0x00b8335d in fs_module_create ()
   from /usr/lib/gtk-2.0/2.10.0/filesystems/libgnome-vfs.so
#24 0x421777ba in g_type_create_instance () from /lib/libgobject-2.0.so.0
#25 0x4215f0b2 in g_object_set () from /lib/libgobject-2.0.so.0
#26 0x4215cd0b in g_object_newv () from /lib/libgobject-2.0.so.0
#27 0x4215d86e in g_object_new_valist () from /lib/libgobject-2.0.so.0
#28 0x4215da20 in g_object_new () from /lib/libgobject-2.0.so.0
#29 0x00b806bc in gtk_file_system_gnome_vfs_new ()
   from /usr/lib/gtk-2.0/2.10.0/filesystems/libgnome-vfs.so
#30 0x00b806f7 in fs_module_create ()
   from /usr/lib/gtk-2.0/2.10.0/filesystems/libgnome-vfs.so
#31 0x047e737d in gtk_file_selection_set_filename ()
   from /usr/lib/libgtk-x11-2.0.so.0
#32 0x047e7503 in gtk_file_system_create () from /usr/lib/libgtk-x11-2.0.so.0
#33 0x047d80c4 in gtk_file_chooser_button_new ()
   from /usr/lib/libgtk-x11-2.0.so.0
#34 0x4215f28c in g_object_set () from /lib/libgobject-2.0.so.0
#35 0x047dba31 in gtk_file_chooser_button_new ()
   from /usr/lib/libgtk-x11-2.0.so.0
#36 0x4215cd0b in g_object_newv () from /lib/libgobject-2.0.so.0

Expected results:
File selection dialog should pop up.

Comment 1 Pawel Salek 2006-12-19 22:02:17 UTC
Is more information needed? Or nobody uses Linux any more in a multiuser mode
and this bug is considered a low priority?

Comment 2 John (J5) Palmieri 2006-12-19 22:40:00 UTC
Actually I know exactly what is happening and have been working upstream on it
so the sarcasm is not apreciated.  Part of the fix revolves around dbus-glib
using the default recursive thread handler.  What I don't understand is why
other apps like gedit aren't effected as they seem to handle the issue fine.

Comment 3 Pawel Salek 2006-12-19 22:45:41 UTC
I did not mean to offend. For what is worth, my gedit (stock FC6) hangs when I
click on "Open" button with a trace similar to the one above:
#0  0x008b0402 in __kernel_vsyscall ()
#1  0x41f7098e in __lll_mutex_lock_wait () from /lib/libpthread.so.0
#2  0x41f6c7fc in _L_mutex_lock_85 () from /lib/libpthread.so.0
#3  0x41f6c33d in pthread_mutex_lock () from /lib/libpthread.so.0
#4  0x00365fdd in dbus_g_object_path_get_g_type () from /usr/lib/libdbus-glib-1.so.2
#5  0x00db08cf in dbus_timeout_get_enabled () from /lib/libdbus-1.so.3
#6  0x00d9994d in dbus_bus_get_unix_user () from /lib/libdbus-1.so.3
#7  0x00d9d60d in dbus_connection_set_watch_functions () from /lib/libdbus-1.so.3
#8  0x00d9f2c9 in dbus_connection_open () from /lib/libdbus-1.so.3
#9  0x00dab5a1 in dbus_pending_call_block () from /lib/libdbus-1.so.3
#10 0x00d9e721 in dbus_connection_send_with_reply_and_block () from
/lib/libdbus-1.so.3
#11 0x00d99e1e in dbus_bus_register () from /lib/libdbus-1.so.3
#12 0x00d9a1d6 in dbus_bus_register () from /lib/libdbus-1.so.3
#13 0x00f0b04b in gnome_vfs_daemon_message_iter_get_file_info () from
/usr/lib/libgnomevfs-2.so.0
#14 0x00f2b822 in gnome_vfs_volume_monitor_client_shutdown_private () from
/usr/lib/libgnomevfs-2.so.0
#15 0x00f2b3dd in gnome_vfs_volume_monitor_client_get_type () from
/usr/lib/libgnomevfs-2.so.0
#16 0x421777ba in g_type_create_instance () from /lib/libgobject-2.0.so.0
#17 0x4215f0b2 in g_object_set () from /lib/libgobject-2.0.so.0
#18 0x4215cd0b in g_object_newv () from /lib/libgobject-2.0.so.0
#19 0x4215d86e in g_object_new_valist () from /lib/libgobject-2.0.so.0


Comment 4 John (J5) Palmieri 2006-12-19 23:05:38 UTC
Please upgrade to the latest D-Bus.  This will fix the gedit problem

Comment 5 John (J5) Palmieri 2006-12-19 23:12:06 UTC
Chris, does firefox invoke the filedialog, dbus or gnome-vfs in wierd ways? 
i.e. does it not get the bus address through the standard mechanism?  The only
way I can see this being an issue is if firefox is reading
DBUS_SESSION_BUS_ADDRESS directly.  When running as a different user in D-Bus >=
1.0.0 dbus will autolaunch a bus and set an xselection which is passed back to
the library.  

Comment 6 John (J5) Palmieri 2006-12-19 23:44:04 UTC
a updated dbus-glib-0.70-6 should show up in testing which partially fixes this
issue by enabling recursive locks which makes the deadlock go away.  There are
still some issues with the way firefox invokes the file dialog.

Comment 7 Felix Schwarz 2006-12-21 13:15:18 UTC
I can confirm that dbus-glib-0.70-6 fixes the problem for me with several
applications (I had a very similar problem when using virt-manager after "su")
on FC6 x86_64.

Comment 8 Pawel Salek 2006-12-21 18:42:54 UTC
FWIW, dbus-glib 0.70-6.fc6 fixes the problem for me, including, but not limited
to,  firefox! Thanks!

Comment 9 Pawel Salek 2007-02-15 22:50:55 UTC
I guess this report can be closed now...


Note You need to log in before you can comment on or make changes to this bug.