There appears to be a bug in emacs-27 on windows-nt when a call is
made to a process' sentinel in response to a kill- or
interrupt-process call.
The second argument to the sentinel (the "string describing the
change") is set to a "unknown signal" rather than to "interrupt\n" as
it was the case in the latest emacs-26 or in emacs-28 branches:
| system-version | second argument passed to the sentinel |
|----------------+----------------------------------------|
| 26.3.50 | interrupted\n |
| 27.1.91 | unknown signal\n |
| 28.0.50 | interrupted\n |
The expectation is that, under windows-nt, the process sentinel should
pass in an "interrupted\n" value to the change description
argument when interrupt-process has successfully interrupted a process.
An ert test is included to showcase the issue that only fails in
emacs-27 on windows-nt. The test starts an idle emacs process, sets-process-sentinel,
calls interrupt-process on it, and then compares the sentinel's second
argument whether it is the de facto expected "interrupted\n" text or
otherwise. The test fails on the latest emasc-27 since the argument that
emacs is passing in is "unknown signal".
To execute, save the test file and execute the following command:
emacs.exe -batch -l ert -l set-process-sentinel-test.el -f ert-run-tests-batch-and-exit
The test will fail on emacs-27 but passes as expected in emacs-26 or the master branch.
Initial analysis indicated this could be an emacs-27 regression caused by the move to pdumper,
affecting any functionality that converts signal numbers to text description. Analysis to follow.
---
set-process-sentinel is a built-in function in ‘src/process.c’.
(set-process-sentinel PROCESS SENTINEL)
Give PROCESS the sentinel SENTINEL; nil for default.
The sentinel is called as a function when the process changes state.
It gets two arguments: the process, and a string describing the change.
In GNU Emacs 27.1 (build 1, x86_64-w64-mingw32)
of 2020-11-19 built on fv-az68-340
Repository revision: ec297125a76481c55390d0b329e541907879d6f3
Repository branch: master
Windowing system distributor 'Microsoft Corp.', version 10.0
Configured using:
'configure --prefix=/mingw64 --build=x86_64-w64-mingw32 --with-modules
--without-dbus --without-compress-install 'CFLAGS=-march=x86-64
-mtune=generic -O2 -pipe' CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1
'LDFLAGS=-pipe
-Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high''
Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY W32NOTIFY ACL GNUTLS LIBXML2
HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS MODULES THREADS JSON PDUMPER GMP
Important settings:
value of $LANG: ENG
locale-coding-system: cp1252