dgaudet 97/12/26 15:25:47
Modified: . STATUS
src CHANGES
src/main alloc.c
Log:
Interim (slow) fix for p->sub_pool critical sections in alloc.c.
Affects win32 only.
Submitted by: Ben Hyde
Reviewed by: Dean Gaudet, Jim Jagielski
Revision Changes Path
1.35 +1 -9 apachen/STATUS
Index: STATUS
===================================================================
RCS file: /export/home/cvs/apachen/STATUS,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- STATUS 1997/12/26 23:22:07 1.34
+++ STATUS 1997/12/26 23:25:43 1.35
@@ -57,6 +57,7 @@
* Dean's [PATCH] fix Rasmus' chunking error
* [PATCH] PR#1366: fix result of send_fd_length
* Ben Hyde's [PATCH] Finish suite of mutex ops for non-threaded platforms
+ * Ben Hyde's [PATCH] Serialize the update to pool.sub_* in destroy_pool
(take 2)
Available:
@@ -83,15 +84,6 @@
* Martin's [PATCH] 36kB: Make apache compile & run on an EBCDIC mainframe
<[EMAIL PROTECTED]>
Status: Martin +1, Dean +1
-
- * Ben Hyde's [PATCH] Serialize the update to pool.sub_* in destroy_pool
- (take 2)
- <[EMAIL PROTECTED]>
- Status: Dean +1, Jim +1
-
- * Dean's [PATCH] child_timeouts set wrong
- <[EMAIL PROTECTED]>
- Status: Jim +1, Dean +1
* Marc's [PATCH] PR#1543: suexec logging exec failures
<[EMAIL PROTECTED]>
1.547 +3 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.546
retrieving revision 1.547
diff -u -r1.546 -r1.547
--- CHANGES 1997/12/26 23:22:09 1.546
+++ CHANGES 1997/12/26 23:25:44 1.547
@@ -1,4 +1,7 @@
Changes with Apache 1.3b4
+
+ *) Interim (slow) fix for p->sub_pool critical sections in
+ alloc.c (affects win32 only). [Ben Hyde]
*) non-WIN32 was missing destroy_mutex definition. [Ben Hyde]
1.62 +9 -3 apachen/src/main/alloc.c
Index: alloc.c
===================================================================
RCS file: /export/home/cvs/apachen/src/main/alloc.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- alloc.c 1997/12/14 20:48:54 1.61
+++ alloc.c 1997/12/26 23:25:46 1.62
@@ -376,11 +376,13 @@
{
block_alarms();
+ (void) acquire_mutex(alloc_mutex);
+ {
while (a->sub_pools)
destroy_pool(a->sub_pools);
-
- a->sub_pools = NULL;
-
+ }
+ (void) release_mutex(alloc_mutex);
+ /* Don't hold the mutex during cleanups. */
run_cleanups(a->cleanups);
a->cleanups = NULL;
free_proc_chain(a->subprocesses);
@@ -413,6 +415,8 @@
block_alarms();
clear_pool(a);
+ (void) acquire_mutex(alloc_mutex);
+ {
if (a->parent) {
if (a->parent->sub_pools == a)
a->parent->sub_pools = a->sub_next;
@@ -421,6 +425,8 @@
if (a->sub_next)
a->sub_next->sub_prev = a->sub_prev;
}
+ }
+ (void) release_mutex(alloc_mutex);
free_blocks(a->first);
unblock_alarms();