From: Timo Sirainen Date: Wed, 29 Mar 2017 22:42:53 +0000 (+0300) Subject: master: When logging fork() EAGAIN failure, include current ulimit -u value X-Git-Tag: 2.2.29.rc1~67 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac37a92a9314f80d96237122a2c6b404093909ee;p=thirdparty%2Fdovecot%2Fcore.git master: When logging fork() EAGAIN failure, include current ulimit -u value --- diff --git a/src/master/service-process.c b/src/master/service-process.c index 67503cfb21..02c714d68a 100644 --- a/src/master/service-process.c +++ b/src/master/service-process.c @@ -314,7 +314,17 @@ struct service_process *service_process_create(struct service *service) } if (pid < 0) { - service_error(service, "fork() failed: %m"); + int fork_errno = errno; + rlim_t limit; + const char *limit_str = ""; + + if (fork_errno == EAGAIN && + restrict_get_process_limit(&limit) == 0) { + limit_str = t_strdup_printf(" (ulimit -u %llu reached?)", + (unsigned long long)limit); + } + errno = fork_errno; + service_error(service, "fork() failed: %m%s", limit_str); return NULL; } if (pid == 0) {