On Tue, 9 Apr 2019 at 10:33, Eli Zaretskii wrote: > > but I can't see a way to trigger > > this for call_process: it searches for PROGRAM and signals an error > > early, regardless of whether the filename is absolute or not. > > One way is to delete the program between the time Emacs searches for > it and the time it actually invokes it. Another way is to make the > program be a file whose name includes non-ASCII characters outside of > the current system codepage (I'm assuming the search for the program > uses file-oriented primitives which support any Unicode characters). > > Having said that, this isn't worth too much of your time, if those > ideas cannot be easily implemented, or turn out wrong, and no others > present themselves. I was inspired by your suggestions to think of a simpler idea: use "C:/nul.exe". There is unfortunately one additional wrinkle: each of the test passes on its own, but when running both together the second one fails due to this check in maybe_call_debugger: /* RMS: What's this for? */ && when_entered_debugger < num_nonmacro_input_events) RMS' question is (now) answered in the commentary for when_entered_debugger: /* The value of num_nonmacro_input_events as of the last time we started to enter the debugger. If we decide to enter the debugger again when this is still equal to num_nonmacro_input_events, then we know that the debugger itself has an error, and we should just signal the error instead of entering an infinite loop of debugger invocations. */ static intmax_t when_entered_debugger; So I guess we'd need some way of resetting it from Lisp? (which does open the tiny danger of a debugger inf-looping by resetting when_entered_debugger and then hitting an error). As far as I can tell, the normal debugger resets it by calling recursive-edit, but there's no way to return from that without human intervention (I think?).