From unknown Sun Jun 22 11:34:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#9256 <9256@debbugs.gnu.org> To: bug#9256 <9256@debbugs.gnu.org> Subject: Status: Erroneous output from "verify-visited-file-modtime" (fileio.c) Reply-To: bug#9256 <9256@debbugs.gnu.org> Date: Sun, 22 Jun 2025 18:34:50 +0000 retitle 9256 Erroneous output from "verify-visited-file-modtime" (fileio.c) reassign 9256 emacs submitter 9256 Vivien Mallet severity 9256 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Aug 06 12:56:43 2011 Received: (at submit) by debbugs.gnu.org; 6 Aug 2011 16:56:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QpkB0-0005bq-DB for submit@debbugs.gnu.org; Sat, 06 Aug 2011 12:56:42 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QpcGi-0007Hj-Cs for submit@debbugs.gnu.org; Sat, 06 Aug 2011 04:30:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QpcFs-00041J-7v for submit@debbugs.gnu.org; Sat, 06 Aug 2011 04:29:14 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:35407) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpcFs-000415-2K for submit@debbugs.gnu.org; Sat, 06 Aug 2011 04:29:12 -0400 Received: from eggs.gnu.org ([140.186.70.92]:35934) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpcFo-00014u-3q for bug-gnu-emacs@gnu.org; Sat, 06 Aug 2011 04:29:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QpcFj-0003wC-KG for bug-gnu-emacs@gnu.org; Sat, 06 Aug 2011 04:29:07 -0400 Received: from smtp3-g21.free.fr ([212.27.42.3]:47724) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpcFi-0003sE-RI for bug-gnu-emacs@gnu.org; Sat, 06 Aug 2011 04:29:03 -0400 Received: from data.fbx.proxad.net (unknown [88.166.87.133]) by smtp3-g21.free.fr (Postfix) with ESMTP id E9B8CA6203 for ; Sat, 6 Aug 2011 10:28:53 +0200 (CEST) From: Vivien Mallet To: bug-gnu-emacs@gnu.org Subject: Erroneous output from "verify-visited-file-modtime" (fileio.c) Organization: INRIA Paris-Rocquencourt Date: Sat, 06 Aug 2011 10:28:52 +0200 Message-ID: <874o1vuenv.fsf@data.fbx.proxad.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sat, 06 Aug 2011 12:56:35 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) --=-=-= Content-Type: text/plain Dear Emacs developers, In Emacs 23 and Emacs 24 (built sometime ago from Git repository), "(verify-visited-file-modtime (current-buffer))" sometimes returns 'nil' instead of 't'. This happens often, even if the file has not been modified by another program. One reason is that stat can return an EINTR error. I am running Linux. According to the manpages, stat is not supposed to fail with EINTR under a Posix system (contrary to SVr4), but this is what I observe. I checked with a call to printf right after the error, and I got errno == 4 which is EINTR here. After exposing this on IRC #emacs, I was told it could be due to the NFS mount (with option "intr") as the files are on a network NFS volume. Hence I modified fileio.c to call stat again after an EINTR error is raised. I attach the patch. If it is confirmed that stat can return EINTR, there might be other calls to stat in Emacs that need the correction. --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=fileio.patch diff --git a/src/fileio.c b/src/fileio.c index 5d33fb9..611ccff 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4956,6 +4956,7 @@ See Info node `(elisp)Modification Time' for more details. */) struct stat st; Lisp_Object handler; Lisp_Object filename; + int stat_status; if (NILP (buf)) b = current_buffer; @@ -4977,7 +4978,10 @@ See Info node `(elisp)Modification Time' for more details. */) filename = ENCODE_FILE (BVAR (b, filename)); - if (stat (SSDATA (filename), &st) < 0) + while ((stat_status = stat (SSDATA (filename), &st)) < 0 && errno == EINTR); + + /* if (stat (SSDATA (filename), &st) < 0) */ + if (stat_status < 0) { /* If the file doesn't exist now and didn't exist before, we say that it isn't modified, provided the error is a tame one. */ --=-=-= Content-Type: text/plain This solved only part of the problem. I still get a lot of false 'nil' from "(verify-visited-file-modtime (current-buffer))" because stat returns ENOENT. One may argue this comes from my network, but the problem appears only inside Emacs. I wrote a small program to call stat a (huge) number of times on a regular basis (on a file previously opened by the program), but I did not get a single error. Maybe the way Emacs opens the files has something to do with that? I would be grateful to you if you could suggest a few tests to find out why Emacs may experience problems with stat while other programs do not seem to face the issue at all (no EINTR, no ENOENT). Note that, on this network, the problem is met by all Emacs users I know, whatever their Emacs configuration. The computers are running Linux 2.6.32-31-generic x86_64, under Ubuntu 10.10. The involved Emacs versions are 23.1.1 (Ubuntu package) and 24 (git commit 78cda4761357774eb9daa19546a078f24aa1ee66 from 19 March 2011). I was told the problem does not appear in Emacs 22, but I did not check it myself. Thank you for the great work. Best regards, VM. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 06 01:26:12 2019 Received: (at control) by debbugs.gnu.org; 6 Oct 2019 05:26:12 +0000 Received: from localhost ([127.0.0.1]:45491 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iGz3a-0006iQ-5C for submit@debbugs.gnu.org; Sun, 06 Oct 2019 01:26:12 -0400 Received: from mail-pf1-f170.google.com ([209.85.210.170]:45217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iGz3X-0006i9-Sj for control@debbugs.gnu.org; Sun, 06 Oct 2019 01:26:08 -0400 Received: by mail-pf1-f170.google.com with SMTP id y72so6378379pfb.12 for ; Sat, 05 Oct 2019 22:26:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=cNO4szxCxeNJJM0T2G3RDz3gv3xaMdH+69BuXdBWb0E=; b=py/Xc1padVPuIXmlDmdpvt11jhA9i8h3R/HrRuYV5quVFelvAZedIDxFZBc9WY7H8Z 0dLXQJpJ8bNqcZ6tVpxRcfs6Z/PywFEWUNtk4Tuks4Ya2hTD9EtcHEpcEg3keu0rdI4p bEgrWf3PGDkF4eSRZo669Jsb/egCo6V1Atsc4YouBTi2bnur/iAhqOR9cszROVZM2TW/ kLn4G7ZOOWIOa9wmMWYgxs/qFbO7jF9BlIl0giuCeEYR0HYa5JnSs8/DVJDxV+JCGuiB LWXl44HEGSVDL1r8SVhy1Yq8s8HQCoTUNftgLCaYFfcEzGE8zSAQAlc5g2FxCcWN2TEZ BA9w== X-Gm-Message-State: APjAAAUzhqWYXozQbCDAvycycMh+iuU9QIGxCFFUInuQKiV6qGw+rcvB bSgye7vUKLVB+pLLuoLbbLa20kJVDcux1MpAEXl/fJTE X-Google-Smtp-Source: APXvYqykFAepQ5lQMpcdLGVjXG/JcT/SO/CSBIY2Nh/JOz/3IW8l6Jhq6FLLFG0KVzRciWA8ISVYgkJpEjik5Yp6u/c= X-Received: by 2002:a65:5802:: with SMTP id g2mr25151450pgr.333.1570339561624; Sat, 05 Oct 2019 22:26:01 -0700 (PDT) MIME-Version: 1.0 From: Stefan Kangas Date: Sun, 6 Oct 2019 07:25:49 +0200 Message-ID: Subject: To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: tags 9256 + patch quit Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.170 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.170 listed in wl.mailspike.net] 0.0 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 2.0 BLANK_SUBJECT Subject is present but empty X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: tags 9256 + patch quit Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.170 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.170 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 0.0 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 2.0 BLANK_SUBJECT Subject is present but empty tags 9256 + patch quit From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 23 08:44:18 2019 Received: (at 9256) by debbugs.gnu.org; 23 Nov 2019 13:44:18 +0000 Received: from localhost ([127.0.0.1]:55996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYVhv-0004sy-KX for submit@debbugs.gnu.org; Sat, 23 Nov 2019 08:44:18 -0500 Received: from quimby.gnus.org ([95.216.78.240]:36356) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYVht-0004sj-U8 for 9256@debbugs.gnu.org; Sat, 23 Nov 2019 08:44:14 -0500 Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=marnie) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1iYVhl-0005q5-C3; Sat, 23 Nov 2019 14:44:07 +0100 From: Lars Ingebrigtsen To: Vivien Mallet Subject: Re: bug#9256: Erroneous output from "verify-visited-file-modtime" (fileio.c) References: <874o1vuenv.fsf@data.fbx.proxad.net> Date: Sat, 23 Nov 2019 14:44:04 +0100 In-Reply-To: <874o1vuenv.fsf@data.fbx.proxad.net> (Vivien Mallet's message of "Sat, 06 Aug 2011 10:28:52 +0200") Message-ID: <87eexyn1wb.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Vivien Mallet writes: > One reason is that stat can return an EINTR error. I am running > Linux. According to the manpages, stat is not supposed to fail with > EINTR under a Posix system (contrary to SVr4), but this is wha [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: ingebrigtsen.no] -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 9256 Cc: 9256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Vivien Mallet writes: > One reason is that stat can return an EINTR error. I am running > Linux. According to the manpages, stat is not supposed to fail with > EINTR under a Posix system (contrary to SVr4), but this is what I > observe. I checked with a call to printf right after the error, and I > got errno == 4 which is EINTR here. After exposing this on IRC #emacs, I > was told it could be due to the NFS mount (with option "intr") as the > files are on a network NFS volume. (There was unfortunately no response to this bug report when it was reported eight years ago.) Hm. I'm not sure you can expect things to work with a setup like that, really: I'd expect things to bug out pretty regularly across the board, since you'd have to check for EINTR in every single call to a bunch of system calls, and basically do what you do here everywhere: > filename = ENCODE_FILE (BVAR (b, filename)); > - if (stat (SSDATA (filename), &st) < 0) > + while ((stat_status = stat (SSDATA (filename), &st)) < 0 && errno == EINTR); > + > + /* if (stat (SSDATA (filename), &st) < 0) */ > + if (stat_status < 0) > This solved only part of the problem. I still get a lot of false 'nil' > from "(verify-visited-file-modtime (current-buffer))" because stat > returns ENOENT. One may argue this comes from my network, but the > problem appears only inside Emacs. Indeed. Does anybody have an opinion on whether this is a configuration Emacs supports? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 23 08:44:25 2019 Received: (at control) by debbugs.gnu.org; 23 Nov 2019 13:44:25 +0000 Received: from localhost ([127.0.0.1]:55999 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYVi2-0004tJ-E7 for submit@debbugs.gnu.org; Sat, 23 Nov 2019 08:44:25 -0500 Received: from quimby.gnus.org ([95.216.78.240]:36380) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iYVi0-0004sw-0U for control@debbugs.gnu.org; Sat, 23 Nov 2019 08:44:21 -0500 Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=marnie) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1iYVhs-0005qF-F3 for control@debbugs.gnu.org; Sat, 23 Nov 2019 14:44:14 +0100 Date: Sat, 23 Nov 2019 14:44:11 +0100 Message-Id: <87d0din1w4.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #9256 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 9256 - patch quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 9256 - patch quit From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 20 04:36:42 2020 Received: (at 9256-done) by debbugs.gnu.org; 20 Jan 2020 09:36:42 +0000 Received: from localhost ([127.0.0.1]:44394 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itTU6-00039d-Eh for submit@debbugs.gnu.org; Mon, 20 Jan 2020 04:36:42 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:34116) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itTU1-00039N-AC for 9256-done@debbugs.gnu.org; Mon, 20 Jan 2020 04:36:37 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3923516007E; Mon, 20 Jan 2020 01:36:27 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 2SeSWedDse_A; Mon, 20 Jan 2020 01:36:25 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 798EC160086; Mon, 20 Jan 2020 01:36:25 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id fpJ5Pw0P6Aec; Mon, 20 Jan 2020 01:36:25 -0800 (PST) Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 46C5116007E; Mon, 20 Jan 2020 01:36:25 -0800 (PST) From: Paul Eggert Organization: UCLA Computer Science Department To: Lars Ingebrigtsen Subject: Re: Erroneous output from "verify-visited-file-modtime" (fileio.c) Message-ID: Date: Mon, 20 Jan 2020 01:36:24 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------58E8C3775B6924EB35AEDE1E" Content-Language: en-US X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 9256-done Cc: Vivien Mallet , 9256-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --------------58E8C3775B6924EB35AEDE1E Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > I'd expect things to bug out pretty regularly across the board, > since you'd have to check for EINTR in every single call to a bunch of > system calls Yes in theory. However, Emacs already does the EINTR check for open, read and write even on regular files where POSIX says it can't happen (but it does happen with NFS). If you've recently dealt with an NFS file then it'll be cached on the client and you won't get EINTR, so in practice the issue comes up only for syscalls that are applied to a file that hasn't been looked at lately. stat is one of these calls (hence the bug report) so we might as well do the EINTR check for it as well. I installed the attached patch to do that for stat and similar calls, and also for openat (which I think was overlooked when 'open' was done). The other part of this bug report (with ENOENT) is not something Emacs can work around and it's surely a bug in the Linux NFS client that was most likely fixed a while ago anyway . As I think both issues in the bug report have been addressed, I'm boldly closing it. --------------58E8C3775B6924EB35AEDE1E Content-Type: text/x-patch; charset=UTF-8; name="0001-Work-better-if-stat-etc.-are-interrupted.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Work-better-if-stat-etc.-are-interrupted.patch" >From b3ad638a60845f17938ff812efcf2b2edfbd8c57 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 20 Jan 2020 01:08:42 -0800 Subject: [PATCH] Work better if stat etc. are interrupted Quit or retry if fstat, lstat, stat or openat fail with EINTR. This should fix some bugs on platforms where accessing files via NFS can fail that way (Bug#9256). * src/dired.c (file_attributes): * src/fileio.c (file_directory_p) [O_PATH]: Use emacs_openat instead of openat. * src/dired.c (file_attributes): Use emacs_fstatat instead of fstatat. * src/fileio.c (barf_or_query_if_file_exists, Frename_file): * src/filelock.c (rename_lock_file): Use emacs_fstatat instead of lstat. * src/fileio.c (file_directory_p, Ffile_regular_p, Ffile_modes) (Ffile_newer_than_file_p, Fverify_visited_file_modtime) (Fset_visited_file_modtime, auto_save_1): * src/lread.c (Fload): * src/sysdep.c (get_current_dir_name_or_unreachable): Use emacs_fstatat instead of stat. * src/sysdep.c (emacs_fstatat, emacs_openat): New functions. (emacs_open): Redo in terms of emacs_open. --- src/dired.c | 4 ++-- src/fileio.c | 39 ++++++++++++++++++++++++--------------- src/filelock.c | 3 ++- src/lisp.h | 2 ++ src/lread.c | 4 ++-- src/sysdep.c | 36 +++++++++++++++++++++++++++++++----- 6 files changed, 63 insertions(+), 25 deletions(-) diff --git a/src/dired.c b/src/dired.c index 611477aa4e..f013a4cea0 100644 --- a/src/dired.c +++ b/src/dired.c @@ -937,7 +937,7 @@ file_attributes (int fd, char const *name, int err = EINVAL; #if defined O_PATH && !defined HAVE_CYGWIN_O_PATH_BUG - int namefd = openat (fd, name, O_PATH | O_CLOEXEC | O_NOFOLLOW); + int namefd = emacs_openat (fd, name, O_PATH | O_CLOEXEC | O_NOFOLLOW, 0); if (namefd < 0) err = errno; else @@ -970,7 +970,7 @@ file_attributes (int fd, char const *name, information to be accurate. */ w32_stat_get_owner_group = 1; #endif - err = fstatat (fd, name, &s, AT_SYMLINK_NOFOLLOW) == 0 ? 0 : errno; + err = emacs_fstatat (fd, name, &s, AT_SYMLINK_NOFOLLOW) == 0 ? 0 : errno; #ifdef WINDOWSNT w32_stat_get_owner_group = 0; #endif diff --git a/src/fileio.c b/src/fileio.c index 34934dd6df..87a17eab42 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1952,7 +1952,10 @@ barf_or_query_if_file_exists (Lisp_Object absname, bool known_to_exist, encoded_filename = ENCODE_FILE (absname); - if (! known_to_exist && lstat (SSDATA (encoded_filename), &statbuf) == 0) + if (! known_to_exist + && (emacs_fstatat (AT_FDCWD, SSDATA (encoded_filename), + &statbuf, AT_SYMLINK_NOFOLLOW) + == 0)) { if (S_ISDIR (statbuf.st_mode)) xsignal2 (Qfile_error, @@ -2555,7 +2558,9 @@ This is what happens in interactive use with M-x. */) bool dirp = !NILP (Fdirectory_name_p (file)); if (!dirp) { - if (lstat (SSDATA (encoded_file), &file_st) != 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (encoded_file), + &file_st, AT_SYMLINK_NOFOLLOW) + != 0) report_file_error ("Renaming", list2 (file, newname)); dirp = S_ISDIR (file_st.st_mode) != 0; } @@ -2928,7 +2933,8 @@ file_directory_p (Lisp_Object file) #else # ifdef O_PATH /* Use O_PATH if available, as it avoids races and EOVERFLOW issues. */ - int fd = openat (AT_FDCWD, SSDATA (file), O_PATH | O_CLOEXEC | O_DIRECTORY); + int fd = emacs_openat (AT_FDCWD, SSDATA (file), + O_PATH | O_CLOEXEC | O_DIRECTORY, 0); if (0 <= fd) { emacs_close (fd); @@ -2939,9 +2945,9 @@ file_directory_p (Lisp_Object file) /* O_PATH is defined but evidently this Linux kernel predates 2.6.39. Fall back on generic POSIX code. */ # endif - /* Use file_accessible_directory_p, as it avoids stat EOVERFLOW + /* Use file_accessible_directory_p, as it avoids fstatat EOVERFLOW problems and could be cheaper. However, if it fails because FILE - is inaccessible, fall back on stat; if the latter fails with + is inaccessible, fall back on fstatat; if the latter fails with EOVERFLOW then FILE must have been a directory unless a race condition occurred (a problem hard to work around portably). */ if (file_accessible_directory_p (file)) @@ -2949,7 +2955,7 @@ file_directory_p (Lisp_Object file) if (errno != EACCES) return false; struct stat st; - if (stat (SSDATA (file), &st) != 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (file), &st, 0) != 0) return errno == EOVERFLOW; if (S_ISDIR (st.st_mode)) return true; @@ -3080,7 +3086,7 @@ See `file-symlink-p' to distinguish symlinks. */) Vw32_get_true_file_attributes = Qt; #endif - int stat_result = stat (SSDATA (absname), &st); + int stat_result = emacs_fstatat (AT_FDCWD, SSDATA (absname), &st, 0); #ifdef WINDOWSNT Vw32_get_true_file_attributes = true_attributes; @@ -3340,7 +3346,7 @@ Return nil if FILENAME does not exist. */) if (!NILP (handler)) return call2 (handler, Qfile_modes, absname); - if (stat (SSDATA (ENCODE_FILE (absname)), &st) != 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (ENCODE_FILE (absname)), &st, 0) != 0) return file_attribute_errno (absname, errno); return make_fixnum (st.st_mode & 07777); } @@ -3486,7 +3492,7 @@ otherwise, if FILE2 does not exist, the answer is t. */) return call3 (handler, Qfile_newer_than_file_p, absname1, absname2); int err1; - if (stat (SSDATA (ENCODE_FILE (absname1)), &st1) == 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (ENCODE_FILE (absname1)), &st1, 0) == 0) err1 = 0; else { @@ -3494,7 +3500,7 @@ otherwise, if FILE2 does not exist, the answer is t. */) if (err1 != EOVERFLOW) return file_attribute_errno (absname1, err1); } - if (stat (SSDATA (ENCODE_FILE (absname2)), &st2) != 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (ENCODE_FILE (absname2)), &st2, 0) != 0) { file_attribute_errno (absname2, errno); return Qt; @@ -3880,7 +3886,7 @@ by calling `format-decode', which see. */) if (end_offset < 0) buffer_overflow (); - /* The file size returned from stat may be zero, but data + /* The file size returned from fstat may be zero, but data may be readable nonetheless, for example when this is a file in the /proc filesystem. */ if (end_offset == 0) @@ -5625,7 +5631,7 @@ See Info node `(elisp)Modification Time' for more details. */) filename = ENCODE_FILE (BVAR (b, filename)); - mtime = (stat (SSDATA (filename), &st) == 0 + mtime = (emacs_fstatat (AT_FDCWD, SSDATA (filename), &st, 0) == 0 ? get_stat_mtime (&st) : time_error_value (errno)); if (timespec_cmp (mtime, b->modtime) == 0 @@ -5689,7 +5695,8 @@ in `current-time' or an integer flag as returned by `visited-file-modtime'. */) /* The handler can find the file name the same way we did. */ return call2 (handler, Qset_visited_file_modtime, Qnil); - if (stat (SSDATA (ENCODE_FILE (filename)), &st) == 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (ENCODE_FILE (filename)), &st, 0) + == 0) { current_buffer->modtime = get_stat_mtime (&st); current_buffer->modtime_size = st.st_size; @@ -5728,12 +5735,14 @@ auto_save_1 (void) /* Get visited file's mode to become the auto save file's mode. */ if (! NILP (BVAR (current_buffer, filename))) { - if (stat (SSDATA (BVAR (current_buffer, filename)), &st) >= 0) + if (emacs_fstatat (AT_FDCWD, SSDATA (BVAR (current_buffer, filename)), + &st, 0) + == 0) /* But make sure we can overwrite it later! */ auto_save_mode_bits = (st.st_mode | 0600) & 0777; else if (modes = Ffile_modes (BVAR (current_buffer, filename)), FIXNUMP (modes)) - /* Remote files don't cooperate with stat. */ + /* Remote files don't cooperate with fstatat. */ auto_save_mode_bits = (XFIXNUM (modes) | 0600) & 0777; } diff --git a/src/filelock.c b/src/filelock.c index b28f16e9b5..73202f0b2c 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -347,7 +347,8 @@ rename_lock_file (char const *old, char const *new, bool force) potential race condition since some other process may create NEW immediately after the existence check, but it's the best we can portably do here. */ - if (lstat (new, &st) == 0 || errno == EOVERFLOW) + if (emacs_fstatat (AT_FDCWD, new, &st, AT_SYMLINK_NOFOLLOW) == 0 + || errno == EOVERFLOW) { errno = EEXIST; return -1; diff --git a/src/lisp.h b/src/lisp.h index 4bcd122844..0bd375658e 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4605,6 +4605,8 @@ extern void seed_random (void *, ptrdiff_t); extern void init_random (void); extern void emacs_backtrace (int); extern AVOID emacs_abort (void) NO_INLINE; +extern int emacs_fstatat (int, char const *, void *, int); +extern int emacs_openat (int, char const *, int, int); extern int emacs_open (const char *, int, int); extern int emacs_pipe (int[2]); extern int emacs_close (int); diff --git a/src/lread.c b/src/lread.c index 4e9860d5dc..69dd73912b 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1353,11 +1353,11 @@ Return t if the file exists and loads successfully. */) ignores suffix order due to load_prefer_newer. */ if (!load_prefer_newer && is_elc) { - result = stat (SSDATA (efound), &s1); + result = emacs_fstatat (AT_FDCWD, SSDATA (efound), &s1, 0); if (result == 0) { SSET (efound, SBYTES (efound) - 1, 0); - result = stat (SSDATA (efound), &s2); + result = emacs_fstatat (AT_FDCWD, SSDATA (efound), &s2, 0); SSET (efound, SBYTES (efound) - 1, 'c'); } diff --git a/src/sysdep.c b/src/sysdep.c index c6344d8cec..e8e8bbfb50 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -312,8 +312,8 @@ get_current_dir_name_or_unreachable (void) if (pwd && (pwdlen = strnlen (pwd, bufsize_max)) < bufsize_max && IS_DIRECTORY_SEP (pwd[pwdlen && IS_DEVICE_SEP (pwd[1]) ? 2 : 0]) - && stat (pwd, &pwdstat) == 0 - && stat (".", &dotstat) == 0 + && emacs_fstatat (AT_FDCWD, pwd, &pwdstat, 0) == 0 + && emacs_fstatat (AT_FDCWD, ".", &dotstat, 0) == 0 && dotstat.st_ino == pwdstat.st_ino && dotstat.st_dev == pwdstat.st_dev) { @@ -2449,7 +2449,27 @@ emacs_abort (void) } #endif -/* Open FILE for Emacs use, using open flags OFLAG and mode MODE. +/* Assuming the directory DIRFD, store information about FILENAME into *ST, + using FLAGS to control how the status is obtained. + Do not fail merely because fetching info was interrupted by a signal. + Allow the user to quit. + + The type of ST is void * instead of struct stat * because the + latter type would be problematic in lisp.h. Some platforms may + play tricks like "#define stat stat64" in , and lisp.h + does not include . */ + +int +emacs_fstatat (int dirfd, char const *filename, void *st, int flags) +{ + int r; + while ((r = fstatat (dirfd, filename, st, flags)) != 0 && errno == EINTR) + maybe_quit (); + return r; +} + +/* Assuming the directory DIRFD, open FILE for Emacs use, + using open flags OFLAGS and mode MODE. Use binary I/O on systems that care about text vs binary I/O. Arrange for subprograms to not inherit the file descriptor. Prefer a method that is multithread-safe, if available. @@ -2457,17 +2477,23 @@ emacs_abort (void) Allow the user to quit. */ int -emacs_open (const char *file, int oflags, int mode) +emacs_openat (int dirfd, char const *file, int oflags, int mode) { int fd; if (! (oflags & O_TEXT)) oflags |= O_BINARY; oflags |= O_CLOEXEC; - while ((fd = open (file, oflags, mode)) < 0 && errno == EINTR) + while ((fd = openat (dirfd, file, oflags, mode)) < 0 && errno == EINTR) maybe_quit (); return fd; } +int +emacs_open (char const *file, int oflags, int mode) +{ + return emacs_openat (AT_FDCWD, file, oflags, mode); +} + /* Open FILE as a stream for Emacs use, with mode MODE. Act like emacs_open with respect to threads, signals, and quits. */ -- 2.17.1 --------------58E8C3775B6924EB35AEDE1E-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 20 10:37:15 2020 Received: (at submit) by debbugs.gnu.org; 20 Jan 2020 15:37:15 +0000 Received: from localhost ([127.0.0.1]:45835 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itZ71-0007o5-2g for submit@debbugs.gnu.org; Mon, 20 Jan 2020 10:37:15 -0500 Received: from lists.gnu.org ([209.51.188.17]:54066) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itZ6u-0007nu-OS for submit@debbugs.gnu.org; Mon, 20 Jan 2020 10:37:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51242) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itZ6t-0001SL-Fl for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 10:37:04 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1itZ6q-0001uf-63 for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 10:37:03 -0500 Received: from ciao.gmane.io ([159.69.161.202]:45758) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1itZ6q-0001tk-0N for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 10:37:00 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1itZ6n-000Cq7-T9 for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 16:36:57 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#9256: Erroneous output from "verify-visited-file-modtime" (fileio.c) Date: Mon, 20 Jan 2020 15:36:53 +0000 Message-ID: References: <874o1vuenv.fsf@data.fbx.proxad.net> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.60 (windows-nt) Cancel-Lock: sha1:PXyvsFgeDVrATW1L26zCw2v3OsM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 159.69.161.202 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Mon 20 Jan 2020, Paul Eggert wrote: >> I'd expect things to bug out pretty regularly across the board, >> since you'd have to check for EINTR in every single call to a bunch of >> system calls > > Yes in theory. However, Emacs already does the EINTR check for open, read and > write even on regular files where POSIX says it can't happen (but it does > happen with NFS). If you've recently dealt with an NFS file then it'll be > cached on the client and you won't get EINTR, so in practice the issue comes > up only for syscalls that are applied to a file that hasn't been looked at > lately. stat is one of these calls (hence the bug report) so we might as well > do the EINTR check for it as well. I installed the attached patch to do that > for stat and similar calls, and also for openat (which I think was overlooked > when 'open' was done). > > The other part of this bug report (with ENOENT) is not something Emacs can > work around and it's surely a bug in the Linux NFS client that was most likely > fixed a while ago anyway . > > As I think both issues in the bug report have been addressed, I'm boldly closing it. This patch breaks the build for Windows, as it appears that MinGW does not have openat: CCLD temacs.exe C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: sysdep.o: in function `emacs_openat': C:/emacs/git/emacs/master/src/sysdep.c:2486: undefined reference to `openat' C:/emacs/git/emacs/master/src/sysdep.c:2486:(.text+0x1359): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `openat' collect2.exe: error: ld returned 1 exit status Presumably this will need updates to w32.c to add the necessary support. AndyM From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 20 12:21:18 2020 Received: (at 9256) by debbugs.gnu.org; 20 Jan 2020 17:21:18 +0000 Received: from localhost ([127.0.0.1]:45948 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itajj-0004Cv-BS for submit@debbugs.gnu.org; Mon, 20 Jan 2020 12:21:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56974) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itajd-0004Ca-5a for 9256@debbugs.gnu.org; Mon, 20 Jan 2020 12:21:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56028) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1itajW-00006l-Jt; Mon, 20 Jan 2020 12:21:02 -0500 Received: from [176.228.60.248] (port=4042 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1itajD-0002a8-Pa; Mon, 20 Jan 2020 12:20:56 -0500 Date: Mon, 20 Jan 2020 19:20:52 +0200 Message-Id: <834kwqxcwb.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-reply-to: (message from Andy Moreton on Mon, 20 Jan 2020 15:36:53 +0000) Subject: Re: bug#9256: Erroneous output from "verify-visited-file-modtime" (fileio.c) References: <874o1vuenv.fsf@data.fbx.proxad.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 9256 Cc: 9256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Andy Moreton > Date: Mon, 20 Jan 2020 15:36:53 +0000 > > > As I think both issues in the bug report have been addressed, I'm boldly closing it. > > This patch breaks the build for Windows, as it appears that MinGW does > not have openat: It does now. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 20 13:06:52 2020 Received: (at submit) by debbugs.gnu.org; 20 Jan 2020 18:06:52 +0000 Received: from localhost ([127.0.0.1]:46006 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itbRs-0005Ng-4z for submit@debbugs.gnu.org; Mon, 20 Jan 2020 13:06:52 -0500 Received: from lists.gnu.org ([209.51.188.17]:41699) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itbRr-0005NZ-8N for submit@debbugs.gnu.org; Mon, 20 Jan 2020 13:06:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55190) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itbRq-0002bz-7n for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 13:06:51 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1itbRm-0003EV-2p for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 13:06:50 -0500 Received: from ciao.gmane.io ([159.69.161.202]:38500) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1itbRl-0003DW-TU for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 13:06:46 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1itbRj-000EpW-LF for bug-gnu-emacs@gnu.org; Mon, 20 Jan 2020 19:06:43 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#9256: Erroneous output from "verify-visited-file-modtime" (fileio.c) Date: Mon, 20 Jan 2020 18:06:39 +0000 Message-ID: References: <874o1vuenv.fsf@data.fbx.proxad.net> <834kwqxcwb.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:IR6lYl4sJNjS3vy5tUBQwDhiSRg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 159.69.161.202 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Mon 20 Jan 2020, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Mon, 20 Jan 2020 15:36:53 +0000 >> >> > As I think both issues in the bug report have been addressed, I'm boldly closing it. >> >> This patch breaks the build for Windows, as it appears that MinGW does >> not have openat: > > It does now. Thanks Eli, confirmed fixed. AndyM From unknown Sun Jun 22 11:34:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 18 Feb 2020 12:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator