Subject: bug#69809: 30.0.50; flymake: error in process sentinel

From: Gerd Möllmann <[email-masked]>
Date: Sat, 23 Mar 2024 15:20:41 +0100

[email-masked] writes:

>> From: Gerd Möllmann <[email-masked]>
>> Date: Fri, 15 Mar 2024 08:09:40 +0100
>>
>> In master, I am sometimes getting errors like these:
>>
>>   error in process sentinel: flymake--handle-report: Can’t find state for flymake-cc in ‘flymake--state’
>>   error in process sentinel: Can’t find state for flymake-cc in ‘flymake--state’
>>   error in process sentinel: flymake--handle-report: Can’t find state for flymake-cc in ‘flymake--state’
>>   error in process sentinel: Can’t find state for flymake-cc in ‘flymake--state’
>>   error in process sentinel: flymake--handle-report: Can’t find state for flymake-cc in ‘flymake--state’
>>   error in process sentinel: Can’t find state for flymake-cc in ‘flymake--state’
>>
>> when working with C files.
>>
>> I haven't configured anything for Flymake myself. I think Flymake gets
>> involved by using Eglot. The errors apparently don't prevent flymake
>> from working later on.
>>
>> I have looked around in flymake docs and source, but I can't figure out
>> what's wrong.
>
> It would be helpful if you could provide a minimal reproduction starting
> from "emacs -q".

I know, but I can't reproduce it at will. And debug-on-error didn't help
catch it in the act, maybe there is some condition-case involved
somewhere that should have better been a condition-case-unless-debug.

> My immediate suspicion is that flymake-mode is (somehow) enabled in your
> C files while flymake-diagnostic-functions is set to contain flymake-cc,
> which causes flymake-cc to start up a background process.  Then,
> flymake-mode is enabled again by eglot--managed-mode, which causes
> flymake--state to be cleared, so when flymake-cc tries to report
> diagnostics from that background process through flymake--handle-report,
> it fails.
>
> But I can't be sure whether this is due to a bug in Emacs or due to a
> bug in your config without a more minimal reproduction.

No config using flymake and none for eglot. The only thing I did is
put eglot-ensure on c-mode-common-hook.

Maybe I can catch it in LLDB somehow, but that will have to wait a bit,
unfortunately.

Anyway, thanks for the replay.