Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 324210 Details for
Bug 435424
[gnome-overlay] gnome-base/gdm-3.5.91: daemonize patch should daemonize before calling anything else in main()
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
gdm-3.5.91-fix-daemonize-regression.patch manually adjusted to fix the dbus thread exiting to soon due to daemonization.
file_435424.txt (text/plain), 3.83 KB, created by
Tom Wijsman (TomWij) (RETIRED)
on 2012-09-18 15:20:49 UTC
(
hide
)
Description:
gdm-3.5.91-fix-daemonize-regression.patch manually adjusted to fix the dbus thread exiting to soon due to daemonization.
Filename:
MIME Type:
Creator:
Tom Wijsman (TomWij) (RETIRED)
Created:
2012-09-18 15:20:49 UTC
Size:
3.83 KB
patch
obsolete
>From 7f5104b242e6b36e6143183b14582d362763ff2a Mon Sep 17 00:00:00 2001 >From: Gilles Dartiguelongue <eva@gentoo.org> >Date: Tue, 2 Nov 2010 23:16:51 +0100 >Subject: [PATCH 2/6] daemonize so that the boot process can continue > >Gentoo bug: #236701 > >Originally from: Dan Nicholson <dbn.lists@gmail.com> > >Fork gdm-binary, except when -nodaemon is used > >gdm-binary now forks and the parent terminates, except when the >-nodaemon or --nodaemon options are used. This provides compatibility >with xdm. Fixes bug #550170. > >--- > daemon/main.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 64 insertions(+), 0 deletions(-) > >diff --git a/daemon/main.c b/daemon/main.c >index 5b8d66b..191b6e3 100644 >--- a/daemon/main.c >+++ b/daemon/main.c >@@ -513,6 +513,56 @@ is_debug_set (void) > return debug; > } > >+static void >+dup_dev_null (int fd, int flags) >+{ >+ int nullfd; >+ int dupfd; >+ >+ VE_IGNORE_EINTR (nullfd = open ("/dev/null", flags)); >+ if (G_UNLIKELY (nullfd < 0)) { >+ gdm_fail (_("Cannot open /dev/null: %s!"), >+ strerror (errno)); >+ exit (EXIT_FAILURE); >+ } >+ >+ VE_IGNORE_EINTR (dupfd = dup2 (nullfd, fd)); >+ if (G_UNLIKELY (dupfd < 0)) { >+ gdm_fail (_("Cannot duplicate /dev/null: %s!"), >+ strerror (errno)); >+ exit (EXIT_FAILURE); >+ } >+ >+ VE_IGNORE_EINTR (close (nullfd)); >+} >+ >+static void >+daemonify (void) >+{ >+ pid_t pid; >+ >+ pid = fork (); >+ >+ /* terminate the parent */ >+ if (pid > 0) >+ exit (EXIT_SUCCESS); >+ >+ if (G_UNLIKELY (pid < 0)) { >+ gdm_fail (_("fork () failed: %s!"), strerror (errno)); >+ exit (EXIT_FAILURE); >+ } >+ >+ if (G_UNLIKELY (setsid () < 0)) { >+ gdm_fail (_("setsid () failed: %s!"), strerror (errno)); >+ exit (EXIT_FAILURE); >+ } >+ >+ /* reopen stdin, stdout, stderr with /dev/null */ >+ dup_dev_null (STDIN_FILENO, O_RDONLY); >+ dup_dev_null (STDOUT_FILENO, O_RDWR); >+ dup_dev_null (STDERR_FILENO, O_RDWR); >+} >+ > int > main (int argc, > char **argv) >@@ -523,13 +573,16 @@ main (int argc, > DBusGConnection *connection; > GError *error; > int ret; >+ int i; > gboolean res; > GdmSignalHandler *signal_handler; > static gboolean do_timed_exit = FALSE; > static gboolean print_version = FALSE; > static gboolean fatal_warnings = FALSE; >+ static gboolean no_daemon = FALSE; > static GOptionEntry entries [] = { > { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL }, >+ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL }, > { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL }, > { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL }, > >@@ -547,5 +600,14 @@ main (int argc, >+ /* preprocess the arguments to support the xdm style >+ * -nodaemon option >+ */ >+ for (i = 0; i < argc; i++) { >+ if (strcmp (argv[i], "-nodaemon") == 0) >+ argv[i] = "--nodaemon"; >+ } >+ >+ daemonify (); > g_type_init (); > > context = g_option_context_new (_("GNOME Display Manager")); > g_option_context_add_main_entries (context, entries, NULL); > g_option_context_set_ignore_unknown_options (context, TRUE); >-- >1.7.3.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 435424
: 324210