[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