emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tree-sitter navigation time grows as sqrt(line-number)


From: Yuan Fu
Subject: Re: Tree-sitter navigation time grows as sqrt(line-number)
Date: Thu, 17 Aug 2023 19:49:48 -0700


> On Aug 17, 2023, at 8:15 AM, Felix <felix.dick@web.de> wrote:
> 
> 
> Dmitry Gutov <dmitry@gutov.dev> writes:
> 
>> On 17/08/2023 17:36, Dmitry Gutov wrote:
>>> On 17/08/2023 17:25, Dmitry Gutov wrote:
>>>> On 17/08/2023 17:08, Felix wrote:
>>>>> Hi,
>>>>> 
>>>>> I tried that patch, and it crashes emacs whenever i try to scroll inside
>>>>> a tree-sitter managed buffer.
>>>>> 
>>>>> GNU Emacs 30.0.50 (build 22, x86_64-pc-linux-gnu, GTK+ Version
>>>>> 3.24.38, cairo version 1.17.8) of 2023-08-17
>>>>> 
>>>>> compiled with pgtk running on wayland.
>>>> 
>>>> Thanks for testing. Does that happen in any ts mode, or some
>>>> particular ones?
>>>> 
>>>> If you run Emacs from the terminal, could you post the error backtrace?
>>>> 
>>>> (Please keep emacs-devel in Cc).
>>> For my part, I don't see it crash when scrolling (in ruby-ts-mdoe or
>>> js-ts-mode, including larges files), but the test scenario by JD
>>> does make it crash.
>>> When running under GDB, the backtrace simply looks like this:
>>> #0  0x00007ffff63bf93d in ts_tree_root_node (self=0x0) at
>>> lib/src/tree.c:36
>>> #1  0x00007ffff63a54e5 in ts_node_parent (self=...) at lib/src/node.c:462
>>> #2  0x00005555557f0d17 in Ftreesit_node_parent
>>> (node=XIL(0x5555574908c5)) at treesit.c:1906
>>> #3  0x000055555576f62b in eval_sub (form=<optimized out>) at eval.c:2511
>>> #4  0x000055555576f987 in Fsetq (args=<optimized out>) at eval.c:483
>>> #5  0x000055555576f368 in eval_sub (form=<optimized out>) at eval.c:2462
>>> #6  0x000055555576ff75 in Fprogn (body=XIL(0)) at eval.c:436
>>> ...
>> 
>> Try this one.
>> 
>> I've read the tree-sitter docs a bit more, and also dropped the "else"
>> case because it was unreachable anyway. I doesn't crash anymore here.
>> 
>> [2. text/x-patch; treesit-node-parent.diff]...
> 
> This one doesn't crash while scrolling.

So I guess the cursor stuff caused the crash. But we shouldn’t fix it by using 
tree_sitter_node_parent, we purposefully replaced it using the cursor API, see 
bug#60054.

Yuan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]