On 20/08/2025 14:49, Genes Lists via dovecot wrote:
On Wed, 2025-08-20 at 12:33 +0200, Hauke Fath via dovecot wrote:
getpwnam() failed: Resource temporarily unavailable hiya
EAGAIN failure from getpwnam() seems quite odd to me - especially if it only happens with one username.
A quick glance at current dovecot git source did not help my understanding. I can see how errno could be ENOMEM, EINVAL or ERANGE, but not really EAGAIN.
I think that ERANGE is not possible since the code in i_getpwnam() loops until it gets a different errno.
Any errno different to ERANGE and EINVAL returned by the call to getpwnam_r() will end up being logged so long as no result is returned. So if EAGAIN is returned then then that will get loggged (and depending on the library implementation that may also cover EWOULDBLOCK) . If a result is returned then that is taken without checking for errno. EINVAL is not possible as the code maps it to a non error condition.
Is it possible the errno came from elsewhere somehow?
In theory yes, since the errno is not actually saved and between the getpwnam_r() call and the error being logged there are some other system calls that could potentially change errno value. However I don't believe the odds of this happening are particularly high.
Does this have auth_debug = yes? Any chance you can run a test with current release 2.4.1 or git head to see if it exhibits similar issues?
Not a dovecot dev, but if were me and debug logs did not reveal enough, I'd add some debugging print statements to src/lib/ipwd.c (thats where the 2.4.x call to getpwnam_r() is) to try figure out what is actually happening. I did not look to see how similar the old 2.3.x code is to 2.4.
Also the OP could construct a small test program of a few lines to call getpwnam_r and see whether the behaviour for this user lookup can be reproduced independently of Dovecot. Another idea is to look into how the system is configured to resolve calls to getpwnam_r, e.g. nsswitch.conf if this is linux/unix or similar.
John
Aki can likely offer real insight.
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org