Hello again. I've been able to reproduce the problem with the attached program. With SIGALRMs firing 10 times per second, I get maybe a dozen "handler called" lines before stat() or faccessat() fails with errno EINTR. When I increase the rate to 50 SIGALRMs per second, the very first stat() fails in every test run. Specifying SA_RESTART in sigaction() has no effect. Unfortunately, I don't have any other network shares available at the moment to test whether only CIFS through VPN is affected, or the problem would occur with e.g. NFS or CIFS without a VPN as well. Tobias --- On 14.02.21 12:13, Tobias Bading wrote: > Hi. > > A few days ago I encountered strange problems at home while using GNU > Emacs on GNU/Linux with Windows SMB shares in the office automounted > through the company's VPN. > > Details and my current findings on the Emacs devel mailing list: > https://lists.gnu.org/archive/html/emacs-devel/2021-02/msg00835.html. > > TL;DR: > Emacs' stat() and faccessat() calls sometimes return -1 and set errno > to EINTR (according to strace). Most of the time the interruption > seems to come from a SIGIO, but at least once a SIGCHLD was in the mix > as well. > > The behavior of returning with errno == EINTR seems to be new and/or > some kind of bug, because otherwise Emacs would handle that case with > TEMP_FAILURE_RETRY() or something to that effect, right? I've used > pretty much the same Emacs in the office (on an older GNU/Linux > release) for ages with the same Windows SMB shares and never had this > problem. > > The GNU/Linux man pages of stat() and faccessat() don't mention EINTR > at all, and neither does POSIX > (https://pubs.opengroup.org/onlinepubs/9699919799/). > > So I guess the one million dollar question is this: > Are stat() and faccessat() permitted to return -1 with errno == EINTR, > or does that violate the POSIX (or some other) spec? > > I'll probably write a small test program next to check if I can > reproduce this problem outside of Emacs, maybe with a simple SIGALRM > and an endless loop of stat()/faccessat() calls. If that reproduces > the problem it would be nice to know whether using SA_RESTART in > sigaction() has any effect. > > Any ideas are very welcome... :) > > Tobias > > PS: I'm running Ubuntu focal (20.04.2 LTS, amd64), which currently > uses libc-bin 2.31-0ubuntu9.2, kernel linux-image-5.4.0-64-generic and > openconnect 8.05-1 to access the VPN. >