From: Eli Zaretskii Date: Tue, 29 Dec 2020 19:30:59 +0000 (+0200) Subject: A better fix for process-tests on MS-Windows X-Git-Tag: emacs-28.0.90~4502 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=baac3562a669ef4570cc258b5e6fc6472a6c9407;p=emacs.git A better fix for process-tests on MS-Windows * src/w32.c (pipe2): When forcibly closing pipe handles due to overflow of FD_SETSIZE, set the handles to -1, to avoid assertion violations in emacs_close. * test/src/process-tests.el (process-tests/fd-setsize-no-crash): No need to skip this test anymore. --- diff --git a/src/w32.c b/src/w32.c index 5ebae324c20..56c78a0d229 100644 --- a/src/w32.c +++ b/src/w32.c @@ -8667,6 +8667,11 @@ pipe2 (int * phandles, int pipe2_flags) { _close (phandles[0]); _close (phandles[1]); + /* Since we close the handles, set them to -1, so as to + avoid an assertion violation if the caller then tries to + close the handle again (emacs_close will abort otherwise + if errno is EBADF). */ + phandles[0] = phandles[1] = -1; errno = EMFILE; rc = -1; } diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 3272044afcc..aeb5b750212 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -389,11 +389,12 @@ See Bug#30460." (ert-deftest process-tests/fd-setsize-no-crash () "Check that Emacs doesn't crash when trying to use more than FD_SETSIZE file descriptors (Bug#24325)." - (skip-unless (not (eq system-type 'windows-nt))) (with-timeout (60) (let ((sleep (executable-find "sleep")) ;; FD_SETSIZE is typically 1024 on Unix-like systems. - (fd-setsize 1024) + ;; On MS-Windows we artificially limit FD_SETSIZE to 64, + ;; see the commentary in w32proc.c. + (fd-setsize (if (eq system-type 'windows-nt) 64 1024)) ;; `make-process' allocates at least four file descriptors per process ;; when using the pipe communication method. However, it closes two of ;; them in the parent process, so we end up with only two new