Subject: bug#72238: 31.0.50; Segfault after treesit_delete_query

From: Yuan Fu <[email-masked]>
Date: Tue, 23 Jul 2024 09:44:56 -0700

> On Jul 22, 2024, at 4:17 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> Cc: Noah Peart <[email-masked]>, [email-masked]
>> From: Yuan Fu <[email-masked]>
>> Date: Sun, 21 Jul 2024 17:01:31 -0700
>> 
>> 
>> 
>>> On Jul 21, 2024, at 3:24 PM, john muhl <[email-masked]> wrote:
>>> 
>>> Noah Peart <[email-masked]> writes:
>>> 
>>>> After recent build, emacs is crashing frequently when using tree-sitter
>>>> modes.
>>>> 
>>>> The following backtrace was generated after opening a few C files,
>>>> enabling c-ts-mode, and moving the cursor around a bit. I dont have
>>>> precise steps for repeatability at this point (sorry!), as it seems to
>>>> occur during garbage collection.
>>>> 
>>>> Let me know if there is more useful output I could provide.
>>> 
>>> Could you try reverting 1abf3bdd7ed and see if that helps?
>> 
>> Hey guys, sorry for the segfault. It’s indeed caused by 1abf3bdd7ed, I just fixed it on master. 
> 
> Thanks, but I'm confused, since I see a fix both on emacs-30 and on
> master.  What exactly did you fix and on which branch(es)?  Did the
> problem exist on emacs-30 (it was reported for master)?

Yeah, there’re two bugs: 1) we shouldn’t delete the query object without checking for NULL, and 2) we shouldn’t delete the cursor object without checking for NULL. In emacs-30, only query could be NULL, cursor is always initialized; in emacs-master, due to my recent change, both query and cursor could be NULL.

So I added checks for both query and cursor in one commit and pushed to master, and cherry-picked the commit to emacs-30. 

Yuan