Really enable core dumps in Linux
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Sep 2010 04:19:19 +0000 (13:49 +0930)
committerJeremy Allison <jra@samba.org>
Mon, 20 Sep 2010 20:15:17 +0000 (13:15 -0700)
commit e1f1ce68e1f685400a8c68bcec14018e3d1fc29d
Author: Rusty Russell <rusty@rustcorp.com.au>
Date:   Mon Sep 20 13:33:30 2010 +0930

    source3: dump core on Linux, even after seteuid/etc.

    The "dumpable" flag is reset on every call to set*uid, so we need to
    reset it to 1 in the signal handler itself.

    This code dates back to commit ac01fda2b97b 6 years ago :(

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Jeremy Allison <jra@samba.org>
source3/lib/fault.c

index 02e054b680ea17736e71f9415533e2b7c87e49e7..dd87ae110062e0c790b9028a5cd386e6d71631ce 100644 (file)
@@ -319,14 +319,6 @@ void dump_core_setup(const char *progname)
 #endif
 #endif
 
-#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
-       /* On Linux we lose the ability to dump core when we change our user
-        * ID. We know how to dump core safely, so let's make sure we have our
-        * dumpable flag set.
-        */
-       prctl(PR_SET_DUMPABLE, 1);
-#endif
-
        /* FIXME: if we have a core-plus-pid facility, configurably set
         * this up here.
         */
@@ -382,6 +374,14 @@ void dump_core_setup(const char *progname)
        umask(~(0700));
        dbgflush();
 
+#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
+       /* On Linux we lose the ability to dump core when we change our user
+        * ID. We know how to dump core safely, so let's make sure we have our
+        * dumpable flag set.
+        */
+       prctl(PR_SET_DUMPABLE, 1);
+#endif
+
        /* Ensure we don't have a signal handler for abort. */
 #ifdef SIGABRT
        CatchSignal(SIGABRT, SIG_DFL);