GNU bug report logs -
#67628
Emacs 29.1: (x-open-connection (getenv "DISPLAY")) gets "Display :0.0 does not exist" error
Previous Next
Full log
View this message in rfc822 format
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Date: Tue, 5 Dec 2023 00:44:05 +0200
>> From: Herman <mahlamytsike <at> gmail.com>
>> Cc: 67628 <at> debbugs.gnu.org
>>
>> On Mon, 04 Dec 2023 22:11:43 +0200
>> Eli Zaretskii <eliz <at> gnu.org> wrote:
>>
>> > > Date: Mon, 4 Dec 2023 19:31:38 +0200
>> > > From: Herman <mahlamytsike <at> gmail.com>
>> > >
>> > > 'x-create-frame' succeeds, but 'x-open-connection' fails with same
>> > > display argument.
>> > >
>> > > This error "Display :0.0 does not exist" happens only, when
>> > > variable 'debug-on-error' is non-nil. When 'debug-on-error' is nil,
>> > > the error is not present. I.e. it works on the principle - you get
>> > > what you are looking for.
>> >
>> > It could be that the code catches the error and proceeds, but your
>> > setting debug-on-error non-nil prevents that.
>> >
>> > Why do you need to set debug-on-error in that case?
>>
>> At first I also thought that it is actually normal to catch an error when debug is enabled. I had debug turned on to look for other errors.
>>
>> One argument could be that in version 28.2 debug did not catch such an error when debug is enabled. Version 29.1 behaves differently.
>>
>> Another argument is that in the Elisp manual, in the Multiple
>> terminals chapter, it is written that: "Normally, Emacs Lisp
>> programs need not call 'x-open-connection' function, as
>> 'make-frame-on-display' calls it automatically. The only reason for
>> calling it is to check whether communication can be established with
>> a given X display."
>> If in 29.1 now
>> $ emacs --daemon -Q
>> $ emacsclient -e "(setq debug-on-error t)"
>> then
>> $ emacsclient -e "(make-frame-on-display (getenv \"DISPLAY\"))"
>> does not give an error, i.e. the display is found
>>
>> but if
>> $ emacs --daemon -Q
>> $ emacsclient -e "(setq debug-on-error t)"
>> then
>> $ emacsclient -e "(x-open-connection (getenv \"DISPLAY\"))"
>> gives an error, i.e. the display does not exist.
>
> Po Lu, any ideas or suggestions?
The display is opened successfully, but the next event to arrive
activates the dynamic-setting machinery that calls get-device-terminal,
which signals an error in response to there being no frames on that
display at the time. The sound fix is for get-device-terminal to search
for the device provided within x_display_list instead of the list of
live frames.
This bug report was last modified 1 year and 255 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.