returns WAIT_ABANDONED_NN instead presumed
WAIT_OBJECT_NN. This will correctly close the thread
handle without using invalid thread handle array index.
Spotted when large balancer timeout was set
and all the threads were busy waiting for the
connection:
[Wed Aug 02 14:29:58 2006] [crit] [Wed Aug 02 14:29:58 2006] file \\build-2.2.2\\server\\mpm\\winnt\\child.c, line 1120, assertion "(rv >= 0) && (rv < threads_created)" failed
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@428008
13f79535-47bb-0310-9956-
ffa450edef68
while (threads_created) {
rv = wait_for_many_objects(threads_created, child_handles, (DWORD)(end_time - time(NULL)));
if (rv != WAIT_TIMEOUT) {
- rv = rv - WAIT_OBJECT_0;
+ if (rv >= WAIT_ABANDONED_0)
+ rv = rv - WAIT_ABANDONED_0;
+ else
+ rv = rv - WAIT_OBJECT_0;
ap_assert((rv >= 0) && (rv < threads_created));
cleanup_thread(child_handles, &threads_created, rv);
continue;