> On Sep 4, 2024, at 12:42 AM, m...@ssbb.me wrote:
> 
> I can confirm that I never had such problems in heex-ts-mode but only with 
> inline heex in elixir-ts-mode.
> 
>> On Sep 4, 2024, at 10:39 AM, Wilhelm Kirschbaum <wkirschb...@gmail.com> 
>> wrote:
>> 
>> 
>> 
>> On Thu, Aug 29, 2024 at 8:14 AM Yuan Fu <caso...@gmail.com> wrote:
>> 
>> 
>> > On Aug 28, 2024, at 10:09 PM, Eli Zaretskii <e...@gnu.org> wrote:
>> > 
>> >> From: m...@ssbb.me
>> >> Date: Thu, 29 Aug 2024 06:57:38 +0400
>> >> 
>> >> Code in attached file cause Emacs to hang and memory leak infinitely
>> >> while editing. Try to open this code in elixir-ts-mode and move cursor
>> >> on line 6 (between <:loading>  </:loading>) and type char by char:
>> >> 
>> >> <.some_component a={
>> >> 
>> >> (for some reason it does not happen with electric-pair-mode when {}
>> >> inserted automatically).
>> >> 
>> >> I am able to reproduce this with -Q on few different machines (Linux and
>> >> MacOS) and Emacs 29, 30.0.5 and current HEAD.
>> >> 
>> >> C-g does nothing (including with debug-on-quit and sending SIGUSR2)
>> >> 
>> >> At the same time I can't reproduce this in other tree-sitter based 
>> >> editors.
>> >> 
>> >> I got this sample code sample from elixir-ts-mode repo but now it's moved
>> >> to the Emacs core so seems to be out of scope of Github repo issues.
>> >> 
>> >> Attaching samle code and LLDB backtrace. 
>> >> Also attaching report from built-in MacOS crash reporting tool just in 
>> >> case.
>> > 
>> > Thanks.
>> > 
>> > Wilhelm and Yuan, could you please look into this soon?
>> 
>> That’s bizarre, might have some bug around ranges. I’m looking into this. 
>> Hopefully I can figure it out in a few days :-(
>> 
>> Yuan
>> 
>> I can reproduce the issue by following the above instructions, but need to 
>> do some digging. It only seems to be the case with embedded heex and not 
>> with heex-ts-mode by itself. 
>> 
>> WIlhelm
>> 

At the moment I’m still not able to pinpoint the culprit, but here’s what I 
found: I can reproduce the issue by simply creating a heex parser, set the 
ranges to [108,240], [300,572], [820,1346] (these are byte position, aka one 
less than character position), then make it parse the buffer (with the 
"<.some_component a={" part already typed in. I instrumented the buffer reader 
and the program hangs after reading the character at byte position 908 (end of 
"phx-click={“). Also the hang appears in ts_parser_parse.

I wrote a C program that does exactly that, but the program runs fine without 
hanging. I haven’t found what Emacs does differently that causes the hang to 
happen.

Also I found some other range bug, but fixing those didn’t help this issue.

Yuan


Reply via email to