You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by jo...@apache.org on 2005/08/24 17:14:45 UTC
svn commit: r239687 - in /apr/apr/trunk: CHANGES threadproc/unix/proc.c
Author: jorton
Date: Wed Aug 24 08:14:39 2005
New Revision: 239687
URL: http://svn.apache.org/viewcvs?rev=239687&view=rev
Log:
* threadproc/unix/proc.c (apr_proc_create): Use _exit() not exit() to
prevent atexit-registered functions from being run in a failing child,
and e.g. flushing stdio buffers.
PR: 30913
Modified:
apr/apr/trunk/CHANGES
apr/apr/trunk/threadproc/unix/proc.c
Modified: apr/apr/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/CHANGES?rev=239687&r1=239686&r2=239687&view=diff
==============================================================================
--- apr/apr/trunk/CHANGES (original)
+++ apr/apr/trunk/CHANGES Wed Aug 24 08:14:39 2005
@@ -1,5 +1,9 @@
Changes for APR 1.3.0
+ *) If apr_proc_create() fails to exec in the fork()ed child, call
+ _exit() not exit() to avoid running atexit()-registered functions
+ in the child. PR 30913. [Joe Orton]
+
*) Fix error handling where apr_uid_* and apr_gid_* could return
APR_SUCCESS in failure cases. [Joe Orton]
Modified: apr/apr/trunk/threadproc/unix/proc.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/threadproc/unix/proc.c?rev=239687&r1=239686&r2=239687&view=diff
==============================================================================
--- apr/apr/trunk/threadproc/unix/proc.c (original)
+++ apr/apr/trunk/threadproc/unix/proc.c Wed Aug 24 08:14:39 2005
@@ -419,7 +419,7 @@
if (attr->errfn) {
attr->errfn(pool, errno, "change of working directory failed");
}
- exit(-1); /* We have big problems, the child should exit. */
+ _exit(-1); /* We have big problems, the child should exit. */
}
}
@@ -429,7 +429,7 @@
if (attr->errfn) {
attr->errfn(pool, errno, "setting of group failed");
}
- exit(-1); /* We have big problems, the child should exit. */
+ _exit(-1); /* We have big problems, the child should exit. */
}
}
@@ -438,7 +438,7 @@
if (attr->errfn) {
attr->errfn(pool, errno, "setting of user failed");
}
- exit(-1); /* We have big problems, the child should exit. */
+ _exit(-1); /* We have big problems, the child should exit. */
}
}
@@ -446,7 +446,7 @@
if (attr->errfn) {
attr->errfn(pool, errno, "setting of resource limits failed");
}
- exit(-1); /* We have big problems, the child should exit. */
+ _exit(-1); /* We have big problems, the child should exit. */
}
if (attr->cmdtype == APR_SHELLCMD ||
@@ -538,8 +538,8 @@
attr->errfn(pool, errno, desc);
}
- exit(-1); /* if we get here, there is a problem, so exit with an
- * error code. */
+ _exit(-1); /* if we get here, there is a problem, so exit with an
+ * error code. */
}
/* Parent process */