Subject: Re: bug#72765: Eglot + Clangd + Company + non-empty suffix = duplicate text

From: Dmitry Gutov <[email-masked]>
Date: Mon, 9 Sep 2024 03:20:01 +0300

On 08/09/2024 18:51, João Távora wrote:
>> Looking at minibuffer-tests.el, the above might be a solution, but it
>> gets me a core dump instead:
>>
>> diff --git a/test/lisp/progmodes/eglot-tests.el
>> b/test/lisp/progmodes/eglot-tests.el
>> index e0168baee54..fa3b63b38dc 100644
>> --- a/test/lisp/progmodes/eglot-tests.el
>> +++ b/test/lisp/progmodes/eglot-tests.el
>> @@ -711,7 +711,8 @@ eglot-test-rust-completion-exit-function
>>          (search-forward "v.count_on")
>>          (let ((minibuffer-message-timeout 0)
>>                ;; Fail at (ding) if completion fails.
>> -            (executing-kbd-macro t))
>> +            (executing-kbd-macro t)
>> +            (redisplay-skip-initial-frame nil))
>>            (when (buffer-live-p "*Completions*")
>>              (kill-buffer "*Completions*"))
>>            ;; The design is pretty brittle, we'll need to monitor the
>>
>>
>> Will follow up later if nobody beats me to it (can others reproduce the
>> crash?)
> This now aborts (segfault?).  At least something different.
> 
> So, for the record, before this patch with the latest emacs-30, I get the
> results in failure1.txt and with your last redisplay-skip-initial-frame patch
> I get failure2.txt.
> 
> I've produced these files with
> 
> make -C test eglot-tests SELECTOR=\"rust-completion\" 2>&1 | tee failure1.txt

So it's reproducible. Great!

Could someone look into the segfault? The repro steps are simple:

1) apply the patch above,
2) run 'make -C test eglot-tests' or the longer command above which 
executes just one test from that file.

The backtrace that I managed to generate is attached.