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.3.0.rc1~1847 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=939f758ca239c53a60dae89e70ccdecd92072c5b;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 31c49cea14..fdbde99967 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) {