[PATCH] Really enable core dumps in Linux

Rusty Russell rusty at rustcorp.com.au
Sun Sep 19 22:19:19 MDT 2010


commit e1f1ce68e1f685400a8c68bcec14018e3d1fc29d
Author: Rusty Russell <rusty at 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 at rustcorp.com.au>

diff --git a/source3/lib/fault.c b/source3/lib/fault.c
index 02e054b..dd87ae1 100644
--- a/source3/lib/fault.c
+++ b/source3/lib/fault.c
@@ -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);


More information about the samba-technical mailing list