--- ./server/mpm/worker/worker.c~ 2007-07-17 16:48:25.000000000 +0200 +++ ./server/mpm/worker/worker.c 2009-08-16 21:37:42.434261844 +0200 @@ -598,7 +598,7 @@ void *csd = NULL; apr_pool_t *ptrans = NULL; /* Pool for per-transaction stuff */ apr_pollset_t *pollset; - apr_status_t rv; + apr_status_t rv, status; ap_listen_rec *lr; int have_idle_worker = 0; int last_poll_idx = 0; @@ -606,7 +606,12 @@ free(ti); /* ### check the status */ - (void) apr_pollset_create(&pollset, num_listensocks, tpool, 0); + status = apr_pollset_create(&pollset, num_listensocks, tpool, 0); + if (status != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_EMERG, status, ap_server_conf, + "Couldn't create pollset in child"); + clean_child_exit(APEXIT_CHILDSICK); /* assume temporary resource issue */ + } for (lr = ap_listeners; lr != NULL; lr = lr->next) { apr_pollfd_t pfd = { 0 }; --- server/mpm/beos/beos.c~ 2006-09-15 15:19:25.000000000 +0200 +++ server/mpm/beos/beos.c 2009-08-16 21:45:05.530884092 +0200 @@ -411,7 +411,7 @@ int worker_slot = (int)dummy; apr_allocator_t *allocator; apr_bucket_alloc_t *bucket_alloc; - apr_status_t rv = APR_EINIT; + apr_status_t rv = APR_EINIT, status; int last_poll_idx = 0; sigset_t sig_mask; int requests_this_child = 0; @@ -463,7 +463,12 @@ /* We add an extra socket here as we add the udp_sock we use for signalling * death. This gets added after the others. */ - apr_pollset_create(&pollset, num_listening_sockets + 1, pworker, 0); + status = apr_pollset_create(&pollset, num_listening_sockets + 1, pworker, 0); + if (status != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_EMERG, status, ap_server_conf, + "Couldn't create pollset in child"); + clean_child_exit(APEXIT_CHILDSICK); /* assume temporary resource issue */ + } for (lr = ap_listeners, i = num_listening_sockets; i--; lr = lr->next) { apr_pollfd_t pfd = {0};