After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 139900 - Hangup in g_spawn_async
Hangup in g_spawn_async
Status: RESOLVED FIXED
Product: nautilus
Classification: Core
Component: general
2.4.x
Other Linux
: Normal critical
: ---
Assigned To: Nautilus Maintainers
Nautilus Maintainers
Depends on:
Blocks:
 
 
Reported: 2004-04-13 10:35 UTC by Mikhail Zabaluev
Modified: 2005-05-23 08:05 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
strace of nautilus complete with child processes (67.30 KB, application/x-bzip)
2004-04-13 10:39 UTC, Mikhail Zabaluev
Details

Description Mikhail Zabaluev 2004-04-13 10:35:05 UTC
Get Nautilus running, open the control center.
Double-click on any item (Theme, in my case).
Same goes for files in any Nautilus window.

Instead of performing its due action, Nautilus freezes.
Tracing the problem leads to a child process that suspends while performing an
execve to launch the program. Some glibc-internal interaction with other
Nautilus threads is suspected, but I have no idea what it could be.

Here is the backtrace to the main Nautilus process/thread:

  • #0 read
    from /lib/i686/libc.so.6
  • #1 read_ints
    at gspawn.c line 999
  • #2 fork_exec_with_pipes
    at gspawn.c line 1202
  • #3 g_spawn_async_with_pipes
    at gspawn.c line 577
  • #4 g_spawn_async
    at gspawn.c line 115
  • #5 ditem_execute
    at gnome-desktop-item.c line 1782
  • #6 gnome_desktop_item_launch_on_screen_with_env
    at gnome-desktop-item.c line 1929
  • #7 gnome_desktop_item_launch_with_env
    at gnome-desktop-item.c line 1992
  • #8 nautilus_launch_desktop_file
    at nautilus-program-choosing.c line 1305
  • #9 activate_callback
    at fm-directory-view.c line 6014
  • #10 ready_callback_call
    at nautilus-directory-async.c line 1285
  • #11 call_ready_callbacks
    at nautilus-directory-async.c line 1914
  • #12 nautilus_directory_async_state_changed
    at nautilus-directory-async.c line 3449
  • #13 get_info_callback
    at nautilus-directory-async.c line 2879
  • #0 sigsuspend
    from /lib/i686/libc.so.6
  • #1 __pthread_wait_for_restart_signal
    from /lib/i686/libpthread.so.0
  • #2 pthread_kill_other_threads_np
    from /lib/i686/libpthread.so.0
  • #3 execve
    from /lib/i686/libc.so.6
  • #4 g_execute
    at gspawn.c line 1479
  • #5 do_exec
    at gspawn.c line 971
  • #6 fork_exec_with_pipes
    at gspawn.c line 1125

Comment 1 Mikhail Zabaluev 2004-04-13 10:39:39 UTC
Created attachment 26602 [details]
strace of nautilus complete with child processes

Nautilus was launched under strace, then the steps were performed as described
in this bug report, resulting in a hangup. After that, the processes were
terminated with 'killall nautilus'.
Comment 2 Owen Taylor 2004-04-13 14:27:28 UTC
Seems likely to be a nautilus-specific problem (maybe it's trying
to read off a closed FD and reads off the spawn pipe?) Reassigning 
to nautilus for now.
Comment 3 Mikhail Zabaluev 2004-04-13 22:53:24 UTC
I disagree. As it seems from the code, the blocked read would return 0 had the
spawned child (actually, a grandchild) get over with execve. But for some reason
glibc's execve routine turns aside and suspends on signals instead of descending
promptly to the system call.
Comment 4 Christian Neumair 2005-05-13 17:58:58 UTC
Mikhail: Thanks for your bug report! Do you still see this behavior?
Comment 5 Mikhail Zabaluev 2005-05-23 07:29:24 UTC
No, I don't observe this behavior for a long time. Don't know if the culprit has
gone, or just not getting executed.
Comment 6 Christian Neumair 2005-05-23 08:05:23 UTC
Closing for now. Feel free to reopen this bug report if it still happens.