X-Loop: help-debbugs@HIDDEN Subject: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode Resent-From: Sergio Durigan Junior <sergiodj@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 01 Jul 2025 19:45:02 +0000 Resent-Message-ID: <handler.78938.B.175139906932718 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 78938 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 78938 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.175139906932718 (code B ref -1); Tue, 01 Jul 2025 19:45:02 +0000 Received: (at submit) by debbugs.gnu.org; 1 Jul 2025 19:44:29 +0000 Received: from localhost ([127.0.0.1]:58810 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uWgu2-0008VS-QD for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:28 -0400 Received: from lists.gnu.org ([2001:470:142::17]:37666) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sergiodj@HIDDEN>) id 1uWgtz-0008U9-Mn for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgtr-0006pR-Fw for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 Received: from mail.sergiodj.net ([2a01:4f8:13a:6e8:160::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgto-0003jp-8N for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=sergiodj.net; s=20160602; t=1751399046; bh=4KzUTga2ob51JjG70RG+7+CX3OhPrIzMbdwwn7WhUD8=; h=From:To:Subject:Date:From; b=wih1cM0RRBEeI3IrIRHYbz5pHxFdhLdMECvGFrj7LFCFlCgnCk5URxWZZ7+zUUBhB GRm1oUZQtMXWabbgwpUIBl2AMpMZsabO+vELlEFllietyej8py5QnvBA1CDu9DfB2J woEzTD8yF54nywhRZVVkHd5oka8wh5R50mdsOOr8= Received: from localhost (unknown [IPv6:2607:f2c0:edc1:fc00:22cb:1cca:2dfd:5fb1]) by mail.sergiodj.net (Postfix) with UTF8SMTPSA id 84FA0A7356E for <bug-gnu-emacs@HIDDEN>; Tue, 1 Jul 2025 15:44:06 -0400 (EDT) From: Sergio Durigan Junior <sergiodj@HIDDEN> X-URL: http://blog.sergiodj.net Date: Tue, 01 Jul 2025 15:44:04 -0400 Message-ID: <874ivvitmj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a01:4f8:13a:6e8:160::1; envelope-from=sergiodj@HIDDEN; helo=mail.sergiodj.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.1 (/) Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple Dockerfile. I was able to reproduce the problem using a pristine Emacs setup: --8<---------------cut here---------------start------------->8--- $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) (use-package treesit) (use-package treesit-auto :ensure t :after (treesit) :config (global-treesit-auto-mode) (setq treesit-auto-install 'prompt)) --8<---------------cut here---------------end--------------->8--- Once inside Emacs, open a file named /tmp/Dockerfile (for example), execute "M-x d-ts" to enable dockerfile-ts-mode, then write: --8<---------------cut here---------------start------------->8--- RUN aaaa; \ --8<---------------cut here---------------end--------------->8--- and hit RET at the end of the line. Here's the full backtrace (with optimizations): --8<---------------cut here---------------start------------->8--- #0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76 #1 0x00005555557f16ea in build_string (str=0x0) at /home/sergio/programs/emacs/emacs/src/lisp.h:4629 #2 Ftreesit_node_type (node=<optimized out>) at treesit.c:2046 treesit_node = {context = {640, 0, 3, 0}, id = 0x280, tree = 0x7fffffffca98} type = 0x0 #3 0x00007fffec78f114 in F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/dockerfile-ts-mode-2cc274e0-bafc1340.eln #4 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=0x7fffffffca90) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #5 0x0000555555768660 in Fapply (nargs=2, args=0x7fffffffcb40) at eval.c:2765 i = <optimized out> funcall_nargs = 4 funcall_args = <optimized out> spread_arg = <optimized out> fun = <optimized out> sa_avail = <optimized out> sa_count = {bytes = 640} numargs = <optimized out> retval = <optimized out> #6 0x00007fffde2f3242 in F747265657369742d2d73696d706c652d696e64656e742d6576616c_treesit__simple_indent_eval_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #7 0x00005555557682e6 in Ffuncall (nargs=2, args=0x7fffffffcc20) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #8 0x00007fffde2f455b in F747265657369742d73696d706c652d696e64656e74_treesit_simple_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #9 0x00005555557682e6 in Ffuncall (nargs=4, args=0x7fffffffce10) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #10 0x00007fffde2f34b6 in F747265657369742d2d696e64656e742d31_treesit__indent_1_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #11 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffce98) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #12 0x00007fffde2f376e in F747265657369742d696e64656e74_treesit_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #13 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffcf88) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #14 0x00007fffeffc540f in F696e64656e742d6163636f7264696e672d746f2d6d6f6465_indent_according_to_mode_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/indent-396b3792-a4a601d1.eln #15 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd058) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #16 0x00007fffefd9e746 in F656c6563747269632d696e64656e742d706f73742d73656c662d696e736572742d66756e6374696f6e_electric_indent_post_self_insert_function_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/electric-a9ca6cdd-16dd18c6.eln #17 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd118) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #18 0x0000555555768949 in funcall_nil (nargs=<optimized out>, args=<optimized out>) at eval.c:2776 #19 0x000055555576428f in run_hook_with_args (nargs=1, args=0x7fffffffd118, funcall=0x555555768940 <funcall_nil>) at eval.c:2946 global_vals = 0x7ffff04fb0d3 sym = 0xf240 val = 0x5555578cd263 ret = 0x0 #20 0x000055555576436f in Frun_hook_with_args (nargs=1, args=0x7fffffffd118) at eval.c:2818 #21 run_hook (hook=<optimized out>, hook@entry=0xf240) at eval.c:2966 #22 0x000055555571b45e in internal_self_insert (c=10, n=<optimized out>, n@entry=1) at cmds.c:498 hairy = 1 tem = <optimized out> synt = <optimized out> overwrite = <optimized out> len = <optimized out> str = "\n\377\377\177" chars_to_delete = <optimized out> spaces_to_insert = <optimized out> #23 0x000055555571bf36 in Fself_insert_command (n=<optimized out>, c=0x2a) at cmds.c:297 character = <optimized out> val = <optimized out> #24 0x00007ffff013e518 in F6e65776c696e65_newline_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #25 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=3, args=args@entry=0x7fffffffd328) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #26 0x0000555555760cfe in Ffuncall_interactively (nargs=3, args=0x7fffffffd328) at callint.c:250 speccount = {bytes = <optimized out>} #27 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=args@entry=0x7fffffffd320) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #28 0x0000555555762322 in Fcall_interactively (function=<optimized out>, record_flag=<optimized out>, keys=<optimized out>) at callint.c:789 speccount = {bytes = <optimized out>} arg_from_tty = <optimized out> key_count = <optimized out> record_then_fail = <optimized out> save_this_command = <optimized out> save_this_original_command = <optimized out> save_real_this_command = <optimized out> save_last_command = <optimized out> prefix_arg = <optimized out> enable = <optimized out> up_event = <optimized out> form = <optimized out> specs = <optimized out> sa_avail = <optimized out> sa_count = {bytes = <optimized out>} string_len = <optimized out> string = <optimized out> string_end = <optimized out> next_event = <optimized out> nargs = <optimized out> args = <optimized out> visargs = <optimized out> varies = <optimized out> tem = <optimized out> val = <optimized out> #29 0x00007ffff014a93d in F636f6d6d616e642d65786563757465_command_execute_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #30 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffd620) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #31 0x00005555556e86e5 in command_loop_1 () at keyboard.c:1550 scount = {bytes = <optimized out>} cmd = <optimized out> keybuf = {0x36, 0x1a, 0x13710, 0x7ffff0da8034, 0x7ffff0da8034, 0x13710, 0x30, 0x0, 0x0, 0x7fffffffd750, 0x80, 0x4000000012000000, 0x0, 0x555555767053 <eval_sub+2179>, 0x7ffff06194f0, 0x5555560693e0, 0x7fff00000000, 0x7ffff0797188, 0x0, 0x60, 0x60, 0x7ffff0508583, 0x0, 0x55555585a788, 0x7ffff0925f9d, 0x555555764c94 <unbind_to+244>, 0x7ffff0508b23, 0x7ffff2e70ac0 <main_arena>, 0xb, 0xb310} i = <optimized out> last_pt = 12 prev_modiff = 49 prev_buffer = 0x555557abdf90 #32 0x0000555555763927 in internal_condition_case (bfun=bfun@entry=0x5555556e8300 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556db980 <cmd_error>) at eval.c:1613 val = <optimized out> c = 0x5555560693e0 #33 0x00005555556d3dfe in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1168 val = <optimized out> #34 0x0000555555763881 in internal_catch (tag=tag@entry=0x122d0, func=func@entry=0x5555556d3dd0 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1292 val = <optimized out> c = 0x5555560692a0 #35 0x00005555556d3d93 in command_loop () at keyboard.c:1146 #36 0x00005555556db521 in recursive_edit_1 () at keyboard.c:754 count = {bytes = <optimized out>} val = <optimized out> #37 0x00005555556db8b0 in Frecursive_edit () at keyboard.c:837 count = {bytes = <optimized out>} buffer = <optimized out> #38 0x00005555555af771 in main (argc=6, argv=<optimized out>) at emacs.c:2646 stack_bottom_variable = 0xe410 old_argc = <optimized out> no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = <optimized out> dump_mode = <optimized out> skip_args = 0 temacs = 0x0 attempt_load_pdump = <optimized out> only_version = false rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615} lc_all = <optimized out> sockfd = -1 module_assertions = <optimized out> --8<---------------cut here---------------end--------------->8--- I haven't had the time to compiled a non-optimized Emacs in order to dive deep into the problem yet. In GNU Emacs 30.1.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4) of 2025-07-01 built on emacs-compile-testing Repository revision: 985ad1da76d2ea1ef70765fe8b4fb62fc975ae0a Repository branch: emacs-30 Windowing system distributor 'The X.Org Foundation', version 11.0.12101016 System Description: Debian GNU/Linux 13 (trixie) Configured using: 'configure --prefix /home/sergio/programs/emacs/install/ --with-native-compilation --with-tree-sitter --with-libsystemd --with-imagemagick --with-x=yes --without-gconf --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ IMAGEMAGICK JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible https://sergiodj.net/
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Sergio Durigan Junior <sergiodj@HIDDEN> Subject: bug#78938: Acknowledgement (30.1.90; Segfault when using dockerfile-ts-mode) Message-ID: <handler.78938.B.175139906932718.ack <at> debbugs.gnu.org> References: <874ivvitmj.fsf@HIDDEN> X-Gnu-PR-Message: ack 78938 X-Gnu-PR-Package: emacs Reply-To: 78938 <at> debbugs.gnu.org Date: Tue, 01 Jul 2025 19:45:03 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 78938 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 78938: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D78938 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 02 Jul 2025 11:34:02 +0000 Resent-Message-ID: <handler.78938.B78938.175145601515802 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 78938 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sergio Durigan Junior <sergiodj@HIDDEN>, Yuan Fu <casouri@HIDDEN> Cc: 78938 <at> debbugs.gnu.org Received: via spool by 78938-submit <at> debbugs.gnu.org id=B78938.175145601515802 (code B ref 78938); Wed, 02 Jul 2025 11:34:02 +0000 Received: (at 78938) by debbugs.gnu.org; 2 Jul 2025 11:33:35 +0000 Received: from localhost ([127.0.0.1]:35950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uWviY-00046k-QN for submit <at> debbugs.gnu.org; Wed, 02 Jul 2025 07:33:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46936) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uWviT-00045P-K5 for 78938 <at> debbugs.gnu.org; Wed, 02 Jul 2025 07:33:31 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uWviM-0005YO-Hu; Wed, 02 Jul 2025 07:33:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=d3RrwiibL+VFqb3PcXbWGOckz2LTCN4vn8RD1EfDM/c=; b=JihFciXdjbMh yXTnjmzk2jUYZ0hEZM9hAmqbWwZLyjr3S31QvBdib+W2LACrYch8a2wyvnWenKYXpg6hzhjXEGnHk SQbK5eZ8lw36LIswIPon+DucjAbdL/r6Wl1zmEuvzSNOILJFBg8b33eFKxrXjl7Ht6woXRqxvm8Ta NfAnmxKZYUPYxQm8m9Yj+8nrPmG9WXM60dm8R9dDxaFTj6VXShRg9vrcfXCFmnZRTW/YMZ6MkszHz toj4y1SipaC/H0Pl6BDsrJc/hjQBRUAo3YEOiUNDQ3Vsb65sY8Zj06LmBID/SsFn89Z3aqVihKZx9 S/B7Mdt3vvOlI00Shwep5A==; Date: Wed, 02 Jul 2025 14:33:17 +0300 Message-Id: <86tt3u25fm.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <874ivvitmj.fsf@HIDDEN> (message from Sergio Durigan Junior on Tue, 01 Jul 2025 15:44:04 -0400) References: <874ivvitmj.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Sergio Durigan Junior <sergiodj@HIDDEN> > Date: Tue, 01 Jul 2025 15:44:04 -0400 > > Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple > Dockerfile. > > I was able to reproduce the problem using a pristine Emacs setup: > > --8<---------------cut here---------------start------------->8--- > $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el > --8<---------------cut here---------------end--------------->8--- > > --8<---------------cut here---------------start------------->8--- > (require 'package) > (add-to-list 'package-archives > '("melpa" . "https://melpa.org/packages/")) > > (package-initialize) > > (use-package treesit) > > (use-package treesit-auto > :ensure t > :after (treesit) > :config > (global-treesit-auto-mode) > (setq treesit-auto-install 'prompt)) > --8<---------------cut here---------------end--------------->8--- > > Once inside Emacs, open a file named /tmp/Dockerfile (for example), > execute "M-x d-ts" to enable dockerfile-ts-mode, then write: > > --8<---------------cut here---------------start------------->8--- > RUN aaaa; \ > --8<---------------cut here---------------end--------------->8--- > > and hit RET at the end of the line. I didn't get any segfaults with this recipe, but maybe it's because I have a different version of the dockerfile grammar library and/or of the tree-sitter library? (I also used a simplified recipe: I didn't treesit-auto and didn't activate global-treesit-auto-mode, and didn't use use-package; instead, I invoked dockerfile-ts-mode manually. I don't think these differences should matter, though.) The segfault you report is here: DEFUN ("treesit-node-type", Ftreesit_node_type, Streesit_node_type, 1, 1, 0, doc: /* Return the NODE's type as a string. If NODE is nil, return nil. */) (Lisp_Object node) { if (NILP (node)) return Qnil; treesit_check_node (node); treesit_initialize (); TSNode treesit_node = XTS_NODE (node)->node; const char *type = ts_node_type (treesit_node); return build_string (type); <<<<<<<<<<<<<<<<<<<<<<<<<< } and I note that we call build_string without testing the validity of the string pointed by 'type', which in this case is a NULL pointer. Yuan, would it be okay to install the following band-aid on the emacs-30 release branch? if (type) return build_string (type); return Qnil; This assumes that getting NULL from ts_node_type should be expected. (If it indeed should be expected, would you please review the other two places in treesit.c where we call ts_node_type?)
X-Loop: help-debbugs@HIDDEN Subject: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode Resent-From: Sergio Durigan Junior <sergiodj@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 03 Jul 2025 23:27:02 +0000 Resent-Message-ID: <handler.78938.B78938.17515852112503 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 78938 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: Yuan Fu <casouri@HIDDEN>, 78938 <at> debbugs.gnu.org Received: via spool by 78938-submit <at> debbugs.gnu.org id=B78938.17515852112503 (code B ref 78938); Thu, 03 Jul 2025 23:27:02 +0000 Received: (at 78938) by debbugs.gnu.org; 3 Jul 2025 23:26:51 +0000 Received: from localhost ([127.0.0.1]:53562 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uXTKK-0000dq-4d for submit <at> debbugs.gnu.org; Thu, 03 Jul 2025 19:26:49 -0400 Received: from mail.sergiodj.net ([2a01:4f8:13a:6e8:160::1]:51014) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <sergiodj@HIDDEN>) id 1uXTKG-0000cA-1T for 78938 <at> debbugs.gnu.org; Thu, 03 Jul 2025 19:26:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=sergiodj.net; s=20160602; t=1751585197; bh=jFOCeapH+jlKI44zC+Wm6J9psVQhKwgfkhurzmVvoX8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=1/g+7CZRVdym3fUbc+UnrL1FL3xaAZN3/cbWB1LqTVHT5vJFwNrdsdUkqneTXqZfA hHFa6qkA4Mj+NURN3dklxLQF5W6FQI4FVCuH4TbAErVlfP0qtCw8AZyufRafxfnioc NgVWWBlj4u2tvU09mVcWW4b0fzvj0wgxpRUFL5cI= Received: from localhost (unknown [IPv6:2607:f2c0:edc1:fc00:f507:7cb:c287:b1ac]) by mail.sergiodj.net (Postfix) with UTF8SMTPSA id E4751A60B64; Thu, 3 Jul 2025 19:26:36 -0400 (EDT) From: Sergio Durigan Junior <sergiodj@HIDDEN> In-Reply-To: <86tt3u25fm.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 02 Jul 2025 14:33:17 +0300") References: <874ivvitmj.fsf@HIDDEN> <86tt3u25fm.fsf@HIDDEN> X-URL: http://blog.sergiodj.net Date: Thu, 03 Jul 2025 19:26:35 -0400 Message-ID: <877c0ox3dg.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wednesday, July 02 2025, Eli Zaretskii wrote: >> From: Sergio Durigan Junior <sergiodj@HIDDEN> >> Date: Tue, 01 Jul 2025 15:44:04 -0400 >> >> Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple >> Dockerfile. >> >> I was able to reproduce the problem using a pristine Emacs setup: >> >> --8<---------------cut here---------------start------------->8--- >> $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el >> --8<---------------cut here---------------end--------------->8--- >> >> --8<---------------cut here---------------start------------->8--- >> (require 'package) >> (add-to-list 'package-archives >> '("melpa" . "https://melpa.org/packages/")) >> >> (package-initialize) >> >> (use-package treesit) >> >> (use-package treesit-auto >> :ensure t >> :after (treesit) >> :config >> (global-treesit-auto-mode) >> (setq treesit-auto-install 'prompt)) >> --8<---------------cut here---------------end--------------->8--- >> >> Once inside Emacs, open a file named /tmp/Dockerfile (for example), >> execute "M-x d-ts" to enable dockerfile-ts-mode, then write: >> >> --8<---------------cut here---------------start------------->8--- >> RUN aaaa; \ >> --8<---------------cut here---------------end--------------->8--- >> >> and hit RET at the end of the line. > > I didn't get any segfaults with this recipe, but maybe it's because I > have a different version of the dockerfile grammar library and/or of > the tree-sitter library? Huh. That's strange. If you followed the recipe above, you should have installed the same grammar version as I'm using. So it might indeed be the tree-sitter library. I'm using Debian testing, and here's the library version I have: libtree-sitter0.22/testing,unstable,now 0.22.6-6+b1 amd64 [installed,automatic] > (I also used a simplified recipe: I didn't treesit-auto and didn't > activate global-treesit-auto-mode, and didn't use use-package; > instead, I invoked dockerfile-ts-mode manually. I don't think these > differences should matter, though.) I think using treesit-auto might influence the grammar version you have installed, because it will make sure to get the latest one. > The segfault you report is here: > > DEFUN ("treesit-node-type", > Ftreesit_node_type, Streesit_node_type, 1, 1, 0, > doc: /* Return the NODE's type as a string. > If NODE is nil, return nil. */) > (Lisp_Object node) > { > if (NILP (node)) return Qnil; > treesit_check_node (node); > treesit_initialize (); > > TSNode treesit_node = XTS_NODE (node)->node; > const char *type = ts_node_type (treesit_node); > return build_string (type); <<<<<<<<<<<<<<<<<<<<<<<<<< > } Yes. > and I note that we call build_string without testing the validity of > the string pointed by 'type', which in this case is a NULL pointer. > > Yuan, would it be okay to install the following band-aid on the > emacs-30 release branch? > > if (type) > return build_string (type); > return Qnil; > > This assumes that getting NULL from ts_node_type should be expected. > (If it indeed should be expected, would you please review the other > two places in treesit.c where we call ts_node_type?) I wasn't sure whether ts_node_type could return NULL. But upon looking at the code, I see that it can: const char *ts_node_type(TSNode self) { TSSymbol symbol = ts_node__alias(&self); if (!symbol) symbol = ts_subtree_symbol(ts_node__subtree(self)); return ts_language_symbol_name(self.tree->language, symbol); } ... and ts_language_symbol_name is defined as: const char *ts_language_symbol_name( const TSLanguage *self, TSSymbol symbol ) { if (symbol == ts_builtin_sym_error) { return "ERROR"; } else if (symbol == ts_builtin_sym_error_repeat) { return "_ERROR"; } else if (symbol < ts_language_symbol_count(self)) { return self->symbol_names[symbol]; } else { return NULL; } } -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible https://sergiodj.net/
MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Yuan Fu <casouri@HIDDEN> Subject: bug#78938: closed (30.1.90; Segfault when using dockerfile-ts-mode) CC: tracker <at> debbugs.gnu.org Message-ID: <handler.78938.D78938.17516114347327.ackdone <at> debbugs.gnu.org> References: <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> <874ivvitmj.fsf@HIDDEN> X-Gnu-PR-Message: closed 78938 X-Gnu-PR-Package: emacs Date: Fri, 04 Jul 2025 06:44:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1751611442-7365-0" This is a multi-part message in MIME format... ------------=_1751611442-7365-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Thu, 3 Jul 2025 23:43:32 -0700 with message-id <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> and subject line Re: bug#78938: 30.1.90; Segfault when using dockerfile-ts-= mode has caused the debbugs.gnu.org bug report #78938, regarding 30.1.90; Segfault when using dockerfile-ts-mode to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs@HIDDEN) --=20 78938: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D78938 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems ------------=_1751611442-7365-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 1 Jul 2025 19:44:29 +0000 Received: from localhost ([127.0.0.1]:58810 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uWgu2-0008VS-QD for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:28 -0400 Received: from lists.gnu.org ([2001:470:142::17]:37666) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sergiodj@HIDDEN>) id 1uWgtz-0008U9-Mn for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgtr-0006pR-Fw for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 Received: from mail.sergiodj.net ([2a01:4f8:13a:6e8:160::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgto-0003jp-8N for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=sergiodj.net; s=20160602; t=1751399046; bh=4KzUTga2ob51JjG70RG+7+CX3OhPrIzMbdwwn7WhUD8=; h=From:To:Subject:Date:From; b=wih1cM0RRBEeI3IrIRHYbz5pHxFdhLdMECvGFrj7LFCFlCgnCk5URxWZZ7+zUUBhB GRm1oUZQtMXWabbgwpUIBl2AMpMZsabO+vELlEFllietyej8py5QnvBA1CDu9DfB2J woEzTD8yF54nywhRZVVkHd5oka8wh5R50mdsOOr8= Received: from localhost (unknown [IPv6:2607:f2c0:edc1:fc00:22cb:1cca:2dfd:5fb1]) by mail.sergiodj.net (Postfix) with UTF8SMTPSA id 84FA0A7356E for <bug-gnu-emacs@HIDDEN>; Tue, 1 Jul 2025 15:44:06 -0400 (EDT) From: Sergio Durigan Junior <sergiodj@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: 30.1.90; Segfault when using dockerfile-ts-mode X-URL: http://blog.sergiodj.net Date: Tue, 01 Jul 2025 15:44:04 -0400 Message-ID: <874ivvitmj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a01:4f8:13a:6e8:160::1; envelope-from=sergiodj@HIDDEN; helo=mail.sergiodj.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.1 (/) Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple Dockerfile. I was able to reproduce the problem using a pristine Emacs setup: --8<---------------cut here---------------start------------->8--- $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) (use-package treesit) (use-package treesit-auto :ensure t :after (treesit) :config (global-treesit-auto-mode) (setq treesit-auto-install 'prompt)) --8<---------------cut here---------------end--------------->8--- Once inside Emacs, open a file named /tmp/Dockerfile (for example), execute "M-x d-ts" to enable dockerfile-ts-mode, then write: --8<---------------cut here---------------start------------->8--- RUN aaaa; \ --8<---------------cut here---------------end--------------->8--- and hit RET at the end of the line. Here's the full backtrace (with optimizations): --8<---------------cut here---------------start------------->8--- #0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76 #1 0x00005555557f16ea in build_string (str=0x0) at /home/sergio/programs/emacs/emacs/src/lisp.h:4629 #2 Ftreesit_node_type (node=<optimized out>) at treesit.c:2046 treesit_node = {context = {640, 0, 3, 0}, id = 0x280, tree = 0x7fffffffca98} type = 0x0 #3 0x00007fffec78f114 in F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/dockerfile-ts-mode-2cc274e0-bafc1340.eln #4 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=0x7fffffffca90) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #5 0x0000555555768660 in Fapply (nargs=2, args=0x7fffffffcb40) at eval.c:2765 i = <optimized out> funcall_nargs = 4 funcall_args = <optimized out> spread_arg = <optimized out> fun = <optimized out> sa_avail = <optimized out> sa_count = {bytes = 640} numargs = <optimized out> retval = <optimized out> #6 0x00007fffde2f3242 in F747265657369742d2d73696d706c652d696e64656e742d6576616c_treesit__simple_indent_eval_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #7 0x00005555557682e6 in Ffuncall (nargs=2, args=0x7fffffffcc20) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #8 0x00007fffde2f455b in F747265657369742d73696d706c652d696e64656e74_treesit_simple_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #9 0x00005555557682e6 in Ffuncall (nargs=4, args=0x7fffffffce10) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #10 0x00007fffde2f34b6 in F747265657369742d2d696e64656e742d31_treesit__indent_1_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #11 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffce98) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #12 0x00007fffde2f376e in F747265657369742d696e64656e74_treesit_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #13 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffcf88) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #14 0x00007fffeffc540f in F696e64656e742d6163636f7264696e672d746f2d6d6f6465_indent_according_to_mode_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/indent-396b3792-a4a601d1.eln #15 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd058) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #16 0x00007fffefd9e746 in F656c6563747269632d696e64656e742d706f73742d73656c662d696e736572742d66756e6374696f6e_electric_indent_post_self_insert_function_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/electric-a9ca6cdd-16dd18c6.eln #17 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd118) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #18 0x0000555555768949 in funcall_nil (nargs=<optimized out>, args=<optimized out>) at eval.c:2776 #19 0x000055555576428f in run_hook_with_args (nargs=1, args=0x7fffffffd118, funcall=0x555555768940 <funcall_nil>) at eval.c:2946 global_vals = 0x7ffff04fb0d3 sym = 0xf240 val = 0x5555578cd263 ret = 0x0 #20 0x000055555576436f in Frun_hook_with_args (nargs=1, args=0x7fffffffd118) at eval.c:2818 #21 run_hook (hook=<optimized out>, hook@entry=0xf240) at eval.c:2966 #22 0x000055555571b45e in internal_self_insert (c=10, n=<optimized out>, n@entry=1) at cmds.c:498 hairy = 1 tem = <optimized out> synt = <optimized out> overwrite = <optimized out> len = <optimized out> str = "\n\377\377\177" chars_to_delete = <optimized out> spaces_to_insert = <optimized out> #23 0x000055555571bf36 in Fself_insert_command (n=<optimized out>, c=0x2a) at cmds.c:297 character = <optimized out> val = <optimized out> #24 0x00007ffff013e518 in F6e65776c696e65_newline_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #25 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=3, args=args@entry=0x7fffffffd328) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #26 0x0000555555760cfe in Ffuncall_interactively (nargs=3, args=0x7fffffffd328) at callint.c:250 speccount = {bytes = <optimized out>} #27 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=args@entry=0x7fffffffd320) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #28 0x0000555555762322 in Fcall_interactively (function=<optimized out>, record_flag=<optimized out>, keys=<optimized out>) at callint.c:789 speccount = {bytes = <optimized out>} arg_from_tty = <optimized out> key_count = <optimized out> record_then_fail = <optimized out> save_this_command = <optimized out> save_this_original_command = <optimized out> save_real_this_command = <optimized out> save_last_command = <optimized out> prefix_arg = <optimized out> enable = <optimized out> up_event = <optimized out> form = <optimized out> specs = <optimized out> sa_avail = <optimized out> sa_count = {bytes = <optimized out>} string_len = <optimized out> string = <optimized out> string_end = <optimized out> next_event = <optimized out> nargs = <optimized out> args = <optimized out> visargs = <optimized out> varies = <optimized out> tem = <optimized out> val = <optimized out> #29 0x00007ffff014a93d in F636f6d6d616e642d65786563757465_command_execute_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #30 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffd620) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #31 0x00005555556e86e5 in command_loop_1 () at keyboard.c:1550 scount = {bytes = <optimized out>} cmd = <optimized out> keybuf = {0x36, 0x1a, 0x13710, 0x7ffff0da8034, 0x7ffff0da8034, 0x13710, 0x30, 0x0, 0x0, 0x7fffffffd750, 0x80, 0x4000000012000000, 0x0, 0x555555767053 <eval_sub+2179>, 0x7ffff06194f0, 0x5555560693e0, 0x7fff00000000, 0x7ffff0797188, 0x0, 0x60, 0x60, 0x7ffff0508583, 0x0, 0x55555585a788, 0x7ffff0925f9d, 0x555555764c94 <unbind_to+244>, 0x7ffff0508b23, 0x7ffff2e70ac0 <main_arena>, 0xb, 0xb310} i = <optimized out> last_pt = 12 prev_modiff = 49 prev_buffer = 0x555557abdf90 #32 0x0000555555763927 in internal_condition_case (bfun=bfun@entry=0x5555556e8300 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556db980 <cmd_error>) at eval.c:1613 val = <optimized out> c = 0x5555560693e0 #33 0x00005555556d3dfe in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1168 val = <optimized out> #34 0x0000555555763881 in internal_catch (tag=tag@entry=0x122d0, func=func@entry=0x5555556d3dd0 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1292 val = <optimized out> c = 0x5555560692a0 #35 0x00005555556d3d93 in command_loop () at keyboard.c:1146 #36 0x00005555556db521 in recursive_edit_1 () at keyboard.c:754 count = {bytes = <optimized out>} val = <optimized out> #37 0x00005555556db8b0 in Frecursive_edit () at keyboard.c:837 count = {bytes = <optimized out>} buffer = <optimized out> #38 0x00005555555af771 in main (argc=6, argv=<optimized out>) at emacs.c:2646 stack_bottom_variable = 0xe410 old_argc = <optimized out> no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = <optimized out> dump_mode = <optimized out> skip_args = 0 temacs = 0x0 attempt_load_pdump = <optimized out> only_version = false rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615} lc_all = <optimized out> sockfd = -1 module_assertions = <optimized out> --8<---------------cut here---------------end--------------->8--- I haven't had the time to compiled a non-optimized Emacs in order to dive deep into the problem yet. In GNU Emacs 30.1.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4) of 2025-07-01 built on emacs-compile-testing Repository revision: 985ad1da76d2ea1ef70765fe8b4fb62fc975ae0a Repository branch: emacs-30 Windowing system distributor 'The X.Org Foundation', version 11.0.12101016 System Description: Debian GNU/Linux 13 (trixie) Configured using: 'configure --prefix /home/sergio/programs/emacs/install/ --with-native-compilation --with-tree-sitter --with-libsystemd --with-imagemagick --with-x=yes --without-gconf --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ IMAGEMAGICK JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible https://sergiodj.net/ ------------=_1751611442-7365-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 78938-done) by debbugs.gnu.org; 4 Jul 2025 06:43:54 +0000 Received: from localhost ([127.0.0.1]:56185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uXa9K-0001u6-3P for submit <at> debbugs.gnu.org; Fri, 04 Jul 2025 02:43:54 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:55386) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1uXa9H-0001tk-6Z for 78938-done <at> debbugs.gnu.org; Fri, 04 Jul 2025 02:43:52 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-7399a2dc13fso864065b3a.2 for <78938-done <at> debbugs.gnu.org>; Thu, 03 Jul 2025 23:43:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751611425; x=1752216225; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wDbQmNNJfAaAJ3VaIoRb3QO71QePYtoZmxsCybHTyvw=; b=VHSbEnkpV1tiW0tA8lc6vyh9HLy67PpI+khXf/GUcel01PxtiZLKvhg7hJ2PkqE932 cebUv57L9eBlhtutdtCu5k7xVOh09IGrVbIXsPyzpK9HS9u6e1O1tVVtCTEO/TYgjRHI TppzDcDVC9xauipaL9bIoI9cDoRBusyA2JoV6vYFgzWNWKkFXJ2XYwnlc4A3K7w3YWgd wVYlVrx9zL1gYdibTGrWXjwNwOXE87Ezrt5WZttAeqP975KiRoAy7iMZqgV4A2sHfy/N xlUJ7co3ayC0tmXmyKc8VWFWvHyrtr3icLzeX10ewicUaI8xaqYUJYAa6E9EmCKlg7j2 atyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751611425; x=1752216225; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wDbQmNNJfAaAJ3VaIoRb3QO71QePYtoZmxsCybHTyvw=; b=hMxpxVMPL9rAdEsqKYI6wXDI8SES5rGGy27Bt9eKfHHaY7y5ffNeItxh2ZGhbMXT1t 0CBOCgIIVZKDPZ4i9NtGjmhTIOItyROhJMaevt6xNO1sjMYnxmAoCuDP9WKeDU1B2Tc3 SpcKg07tTUS+0GCn0YAm1Odzinozf4a5XWzjv/Qb8uJEN0VNnGPq8hNN/fBW0Pl9+TJG Zv58H7A5mekMJOQrWhZkuqrm+CY97vEbFONsJ/CB6uEDLmX3/fjOCQXNUrIrxcLeiPY9 /DTtAKSO3zx8xBIjDM/DtHweSxPb26iBinEttaFIcP0gIJnLy6RvBdPiEn5y5vs3f6hq dQ4g== X-Forwarded-Encrypted: i=1; AJvYcCUUbBHtpg31ZnzRCPAq+4e0qm799m+CkJ/0jhLB9zl2S/HF6JKcaYth5f5NKECO4BScWN8wuroBZ7Ul <at> debbugs.gnu.org X-Gm-Message-State: AOJu0YxxGrRWMyYHHroHH4QbPe83/NSmWaKCYpbHzVo4/4bYWrcR7Cqv X9h+F22hL4aCRlvIOPlRVM/xBbVJkmU7ocTcdEX2X0OwvXX1om5JN0gw X-Gm-Gg: ASbGncvsV8sSkObijr5dy8UbhmTuy8ZWxVyPN3QnzPvYnSmn8hFRNu5SQxmOZrAS1XJ YcltilRUPV6f/vJWDxj7MsnlQF9AJIamPJ0n9YSRXTE/AlZ2BP/5JJpI4nIkS4sP8jd/835b6at tFWDOKwHMReR8N82MgK4s9sk62fNaxFHBSnKilOw12MXCTh6iVaebKyxG3dg66huRKSCpVtcCPJ 8WaDP1kZUl84Opu2dBzO2JtmrmxJqcOquRq23mJibrefeodjZYMzB3Ej0FYU6iBszqTTBpYej+2 UCzo1UzkWB8df4eO66zi0qOc4z+N8E1eT6JPuFCXDYw0j8aCBUXzFM87vnDLkcq57rIcPOvGce2 /Kgy1VC8NQsSaDG6hTdUFx1fnBWU9zsRIi+N2rZlyPKV94g== X-Google-Smtp-Source: AGHT+IFMnvvMGY4EBRmUKX3EV2wvkZe6jZPdvCjKMJhRC4JZp3d7sxzETXa1banVu1ho5SCwSkMO0w== X-Received: by 2002:a05:6a20:258e:b0:1f5:8a1d:3904 with SMTP id adf61e73a8af0-225b7f19802mr3219755637.7.1751611424716; Thu, 03 Jul 2025 23:43:44 -0700 (PDT) Received: from smtpclient.apple (c-24-4-247-194.hsd1.ca.comcast.net. [24.4.247.194]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b38ee5f4033sm1221084a12.47.2025.07.03.23.43.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2025 23:43:44 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.500.181.1.5\)) Subject: Re: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <877c0ox3dg.fsf@HIDDEN> Date: Thu, 3 Jul 2025 23:43:32 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> References: <874ivvitmj.fsf@HIDDEN> <86tt3u25fm.fsf@HIDDEN> <877c0ox3dg.fsf@HIDDEN> To: Sergio Durigan Junior <sergiodj@HIDDEN> X-Mailer: Apple Mail (2.3826.500.181.1.5) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78938-done Cc: Eli Zaretskii <eliz@HIDDEN>, 78938-done <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Jul 3, 2025, at 4:26=E2=80=AFPM, Sergio Durigan Junior = <sergiodj@HIDDEN> wrote: >=20 > On Wednesday, July 02 2025, Eli Zaretskii wrote: >=20 >>> From: Sergio Durigan Junior <sergiodj@HIDDEN> >>> Date: Tue, 01 Jul 2025 15:44:04 -0400 >>>=20 >>> Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple >>> Dockerfile. >>>=20 >>> I was able to reproduce the problem using a pristine Emacs setup: >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l = ~/.emacs.d-docker-mode/init.el >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> (require 'package) >>> (add-to-list 'package-archives >>> '("melpa" . "https://melpa.org/packages/")) >>>=20 >>> (package-initialize) >>>=20 >>> (use-package treesit) >>>=20 >>> (use-package treesit-auto >>> :ensure t >>> :after (treesit) >>> :config >>> (global-treesit-auto-mode) >>> (setq treesit-auto-install 'prompt)) >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> Once inside Emacs, open a file named /tmp/Dockerfile (for example), >>> execute "M-x d-ts" to enable dockerfile-ts-mode, then write: >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> RUN aaaa; \ >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> and hit RET at the end of the line. >>=20 >> I didn't get any segfaults with this recipe, but maybe it's because I >> have a different version of the dockerfile grammar library and/or of >> the tree-sitter library? >=20 > Huh. That's strange. If you followed the recipe above, you should = have > installed the same grammar version as I'm using. So it might indeed = be > the tree-sitter library. I'm using Debian testing, and here's the > library version I have: >=20 > libtree-sitter0.22/testing,unstable,now 0.22.6-6+b1 amd64 = [installed,automatic] >=20 >> (I also used a simplified recipe: I didn't treesit-auto and didn't >> activate global-treesit-auto-mode, and didn't use use-package; >> instead, I invoked dockerfile-ts-mode manually. I don't think these >> differences should matter, though.) >=20 > I think using treesit-auto might influence the grammar version you = have > installed, because it will make sure to get the latest one. >=20 >> The segfault you report is here: >>=20 >> DEFUN ("treesit-node-type", >> Ftreesit_node_type, Streesit_node_type, 1, 1, 0, >> doc: /* Return the NODE's type as a string. >> If NODE is nil, return nil. */) >> (Lisp_Object node) >> { >> if (NILP (node)) return Qnil; >> treesit_check_node (node); >> treesit_initialize (); >>=20 >> TSNode treesit_node =3D XTS_NODE (node)->node; >> const char *type =3D ts_node_type (treesit_node); >> return build_string (type); <<<<<<<<<<<<<<<<<<<<<<<<<< >> } >=20 > Yes. >=20 >> and I note that we call build_string without testing the validity of >> the string pointed by 'type', which in this case is a NULL pointer. >>=20 >> Yuan, would it be okay to install the following band-aid on the >> emacs-30 release branch? >>=20 >> if (type) >> return build_string (type); >> return Qnil; >>=20 >> This assumes that getting NULL from ts_node_type should be expected. >> (If it indeed should be expected, would you please review the other >> two places in treesit.c where we call ts_node_type?) >=20 > I wasn't sure whether ts_node_type could return NULL. But upon = looking > at the code, I see that it can: >=20 > const char *ts_node_type(TSNode self) { > TSSymbol symbol =3D ts_node__alias(&self); > if (!symbol) symbol =3D ts_subtree_symbol(ts_node__subtree(self)); > return ts_language_symbol_name(self.tree->language, symbol); > } >=20 > ... and ts_language_symbol_name is defined as: >=20 > const char *ts_language_symbol_name( > const TSLanguage *self, > TSSymbol symbol > ) { > if (symbol =3D=3D ts_builtin_sym_error) { > return "ERROR"; > } else if (symbol =3D=3D ts_builtin_sym_error_repeat) { > return "_ERROR"; > } else if (symbol < ts_language_symbol_count(self)) { > return self->symbol_names[symbol]; > } else { > return NULL; > } > } Well, apparently this is a big lie: /** * Get the node's type as a null-terminated string. */ const char *ts_node_type(TSNode self); Thanks for digging into this! The NULL case is probably because something unexpected happened in = tree-sitter, let=E2=80=99s return an empty string in Lisp since callers = doesn=E2=80=99t expect treesit-node-type to return nil when NODE isn=E2=80= =99t nil. I applied the patch to emacs-30. Yuan= ------------=_1751611442-7365-0--
MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Sergio Durigan Junior <sergiodj@HIDDEN> Subject: bug#78938: closed (Re: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode) Message-ID: <handler.78938.D78938.17516114347327.notifdone <at> debbugs.gnu.org> References: <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> <874ivvitmj.fsf@HIDDEN> X-Gnu-PR-Message: they-closed 78938 X-Gnu-PR-Package: emacs Reply-To: 78938 <at> debbugs.gnu.org Date: Fri, 04 Jul 2025 06:44:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1751611442-7365-1" This is a multi-part message in MIME format... ------------=_1751611442-7365-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #78938: 30.1.90; Segfault when using dockerfile-ts-mode which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 78938 <at> debbugs.gnu.org. --=20 78938: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D78938 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems ------------=_1751611442-7365-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 78938-done) by debbugs.gnu.org; 4 Jul 2025 06:43:54 +0000 Received: from localhost ([127.0.0.1]:56185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uXa9K-0001u6-3P for submit <at> debbugs.gnu.org; Fri, 04 Jul 2025 02:43:54 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:55386) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1uXa9H-0001tk-6Z for 78938-done <at> debbugs.gnu.org; Fri, 04 Jul 2025 02:43:52 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-7399a2dc13fso864065b3a.2 for <78938-done <at> debbugs.gnu.org>; Thu, 03 Jul 2025 23:43:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751611425; x=1752216225; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wDbQmNNJfAaAJ3VaIoRb3QO71QePYtoZmxsCybHTyvw=; b=VHSbEnkpV1tiW0tA8lc6vyh9HLy67PpI+khXf/GUcel01PxtiZLKvhg7hJ2PkqE932 cebUv57L9eBlhtutdtCu5k7xVOh09IGrVbIXsPyzpK9HS9u6e1O1tVVtCTEO/TYgjRHI TppzDcDVC9xauipaL9bIoI9cDoRBusyA2JoV6vYFgzWNWKkFXJ2XYwnlc4A3K7w3YWgd wVYlVrx9zL1gYdibTGrWXjwNwOXE87Ezrt5WZttAeqP975KiRoAy7iMZqgV4A2sHfy/N xlUJ7co3ayC0tmXmyKc8VWFWvHyrtr3icLzeX10ewicUaI8xaqYUJYAa6E9EmCKlg7j2 atyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751611425; x=1752216225; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wDbQmNNJfAaAJ3VaIoRb3QO71QePYtoZmxsCybHTyvw=; b=hMxpxVMPL9rAdEsqKYI6wXDI8SES5rGGy27Bt9eKfHHaY7y5ffNeItxh2ZGhbMXT1t 0CBOCgIIVZKDPZ4i9NtGjmhTIOItyROhJMaevt6xNO1sjMYnxmAoCuDP9WKeDU1B2Tc3 SpcKg07tTUS+0GCn0YAm1Odzinozf4a5XWzjv/Qb8uJEN0VNnGPq8hNN/fBW0Pl9+TJG Zv58H7A5mekMJOQrWhZkuqrm+CY97vEbFONsJ/CB6uEDLmX3/fjOCQXNUrIrxcLeiPY9 /DTtAKSO3zx8xBIjDM/DtHweSxPb26iBinEttaFIcP0gIJnLy6RvBdPiEn5y5vs3f6hq dQ4g== X-Forwarded-Encrypted: i=1; AJvYcCUUbBHtpg31ZnzRCPAq+4e0qm799m+CkJ/0jhLB9zl2S/HF6JKcaYth5f5NKECO4BScWN8wuroBZ7Ul <at> debbugs.gnu.org X-Gm-Message-State: AOJu0YxxGrRWMyYHHroHH4QbPe83/NSmWaKCYpbHzVo4/4bYWrcR7Cqv X9h+F22hL4aCRlvIOPlRVM/xBbVJkmU7ocTcdEX2X0OwvXX1om5JN0gw X-Gm-Gg: ASbGncvsV8sSkObijr5dy8UbhmTuy8ZWxVyPN3QnzPvYnSmn8hFRNu5SQxmOZrAS1XJ YcltilRUPV6f/vJWDxj7MsnlQF9AJIamPJ0n9YSRXTE/AlZ2BP/5JJpI4nIkS4sP8jd/835b6at tFWDOKwHMReR8N82MgK4s9sk62fNaxFHBSnKilOw12MXCTh6iVaebKyxG3dg66huRKSCpVtcCPJ 8WaDP1kZUl84Opu2dBzO2JtmrmxJqcOquRq23mJibrefeodjZYMzB3Ej0FYU6iBszqTTBpYej+2 UCzo1UzkWB8df4eO66zi0qOc4z+N8E1eT6JPuFCXDYw0j8aCBUXzFM87vnDLkcq57rIcPOvGce2 /Kgy1VC8NQsSaDG6hTdUFx1fnBWU9zsRIi+N2rZlyPKV94g== X-Google-Smtp-Source: AGHT+IFMnvvMGY4EBRmUKX3EV2wvkZe6jZPdvCjKMJhRC4JZp3d7sxzETXa1banVu1ho5SCwSkMO0w== X-Received: by 2002:a05:6a20:258e:b0:1f5:8a1d:3904 with SMTP id adf61e73a8af0-225b7f19802mr3219755637.7.1751611424716; Thu, 03 Jul 2025 23:43:44 -0700 (PDT) Received: from smtpclient.apple (c-24-4-247-194.hsd1.ca.comcast.net. [24.4.247.194]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b38ee5f4033sm1221084a12.47.2025.07.03.23.43.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jul 2025 23:43:44 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.500.181.1.5\)) Subject: Re: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <877c0ox3dg.fsf@HIDDEN> Date: Thu, 3 Jul 2025 23:43:32 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> References: <874ivvitmj.fsf@HIDDEN> <86tt3u25fm.fsf@HIDDEN> <877c0ox3dg.fsf@HIDDEN> To: Sergio Durigan Junior <sergiodj@HIDDEN> X-Mailer: Apple Mail (2.3826.500.181.1.5) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78938-done Cc: Eli Zaretskii <eliz@HIDDEN>, 78938-done <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Jul 3, 2025, at 4:26=E2=80=AFPM, Sergio Durigan Junior = <sergiodj@HIDDEN> wrote: >=20 > On Wednesday, July 02 2025, Eli Zaretskii wrote: >=20 >>> From: Sergio Durigan Junior <sergiodj@HIDDEN> >>> Date: Tue, 01 Jul 2025 15:44:04 -0400 >>>=20 >>> Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple >>> Dockerfile. >>>=20 >>> I was able to reproduce the problem using a pristine Emacs setup: >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l = ~/.emacs.d-docker-mode/init.el >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> (require 'package) >>> (add-to-list 'package-archives >>> '("melpa" . "https://melpa.org/packages/")) >>>=20 >>> (package-initialize) >>>=20 >>> (use-package treesit) >>>=20 >>> (use-package treesit-auto >>> :ensure t >>> :after (treesit) >>> :config >>> (global-treesit-auto-mode) >>> (setq treesit-auto-install 'prompt)) >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> Once inside Emacs, open a file named /tmp/Dockerfile (for example), >>> execute "M-x d-ts" to enable dockerfile-ts-mode, then write: >>>=20 >>> --8<---------------cut here---------------start------------->8--- >>> RUN aaaa; \ >>> --8<---------------cut here---------------end--------------->8--- >>>=20 >>> and hit RET at the end of the line. >>=20 >> I didn't get any segfaults with this recipe, but maybe it's because I >> have a different version of the dockerfile grammar library and/or of >> the tree-sitter library? >=20 > Huh. That's strange. If you followed the recipe above, you should = have > installed the same grammar version as I'm using. So it might indeed = be > the tree-sitter library. I'm using Debian testing, and here's the > library version I have: >=20 > libtree-sitter0.22/testing,unstable,now 0.22.6-6+b1 amd64 = [installed,automatic] >=20 >> (I also used a simplified recipe: I didn't treesit-auto and didn't >> activate global-treesit-auto-mode, and didn't use use-package; >> instead, I invoked dockerfile-ts-mode manually. I don't think these >> differences should matter, though.) >=20 > I think using treesit-auto might influence the grammar version you = have > installed, because it will make sure to get the latest one. >=20 >> The segfault you report is here: >>=20 >> DEFUN ("treesit-node-type", >> Ftreesit_node_type, Streesit_node_type, 1, 1, 0, >> doc: /* Return the NODE's type as a string. >> If NODE is nil, return nil. */) >> (Lisp_Object node) >> { >> if (NILP (node)) return Qnil; >> treesit_check_node (node); >> treesit_initialize (); >>=20 >> TSNode treesit_node =3D XTS_NODE (node)->node; >> const char *type =3D ts_node_type (treesit_node); >> return build_string (type); <<<<<<<<<<<<<<<<<<<<<<<<<< >> } >=20 > Yes. >=20 >> and I note that we call build_string without testing the validity of >> the string pointed by 'type', which in this case is a NULL pointer. >>=20 >> Yuan, would it be okay to install the following band-aid on the >> emacs-30 release branch? >>=20 >> if (type) >> return build_string (type); >> return Qnil; >>=20 >> This assumes that getting NULL from ts_node_type should be expected. >> (If it indeed should be expected, would you please review the other >> two places in treesit.c where we call ts_node_type?) >=20 > I wasn't sure whether ts_node_type could return NULL. But upon = looking > at the code, I see that it can: >=20 > const char *ts_node_type(TSNode self) { > TSSymbol symbol =3D ts_node__alias(&self); > if (!symbol) symbol =3D ts_subtree_symbol(ts_node__subtree(self)); > return ts_language_symbol_name(self.tree->language, symbol); > } >=20 > ... and ts_language_symbol_name is defined as: >=20 > const char *ts_language_symbol_name( > const TSLanguage *self, > TSSymbol symbol > ) { > if (symbol =3D=3D ts_builtin_sym_error) { > return "ERROR"; > } else if (symbol =3D=3D ts_builtin_sym_error_repeat) { > return "_ERROR"; > } else if (symbol < ts_language_symbol_count(self)) { > return self->symbol_names[symbol]; > } else { > return NULL; > } > } Well, apparently this is a big lie: /** * Get the node's type as a null-terminated string. */ const char *ts_node_type(TSNode self); Thanks for digging into this! The NULL case is probably because something unexpected happened in = tree-sitter, let=E2=80=99s return an empty string in Lisp since callers = doesn=E2=80=99t expect treesit-node-type to return nil when NODE isn=E2=80= =99t nil. I applied the patch to emacs-30. Yuan= ------------=_1751611442-7365-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 1 Jul 2025 19:44:29 +0000 Received: from localhost ([127.0.0.1]:58810 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uWgu2-0008VS-QD for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:28 -0400 Received: from lists.gnu.org ([2001:470:142::17]:37666) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sergiodj@HIDDEN>) id 1uWgtz-0008U9-Mn for submit <at> debbugs.gnu.org; Tue, 01 Jul 2025 15:44:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgtr-0006pR-Fw for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 Received: from mail.sergiodj.net ([2a01:4f8:13a:6e8:160::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <sergiodj@HIDDEN>) id 1uWgto-0003jp-8N for bug-gnu-emacs@HIDDEN; Tue, 01 Jul 2025 15:44:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=sergiodj.net; s=20160602; t=1751399046; bh=4KzUTga2ob51JjG70RG+7+CX3OhPrIzMbdwwn7WhUD8=; h=From:To:Subject:Date:From; b=wih1cM0RRBEeI3IrIRHYbz5pHxFdhLdMECvGFrj7LFCFlCgnCk5URxWZZ7+zUUBhB GRm1oUZQtMXWabbgwpUIBl2AMpMZsabO+vELlEFllietyej8py5QnvBA1CDu9DfB2J woEzTD8yF54nywhRZVVkHd5oka8wh5R50mdsOOr8= Received: from localhost (unknown [IPv6:2607:f2c0:edc1:fc00:22cb:1cca:2dfd:5fb1]) by mail.sergiodj.net (Postfix) with UTF8SMTPSA id 84FA0A7356E for <bug-gnu-emacs@HIDDEN>; Tue, 1 Jul 2025 15:44:06 -0400 (EDT) From: Sergio Durigan Junior <sergiodj@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: 30.1.90; Segfault when using dockerfile-ts-mode X-URL: http://blog.sergiodj.net Date: Tue, 01 Jul 2025 15:44:04 -0400 Message-ID: <874ivvitmj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a01:4f8:13a:6e8:160::1; envelope-from=sergiodj@HIDDEN; helo=mail.sergiodj.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.1 (/) Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple Dockerfile. I was able to reproduce the problem using a pristine Emacs setup: --8<---------------cut here---------------start------------->8--- $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) (use-package treesit) (use-package treesit-auto :ensure t :after (treesit) :config (global-treesit-auto-mode) (setq treesit-auto-install 'prompt)) --8<---------------cut here---------------end--------------->8--- Once inside Emacs, open a file named /tmp/Dockerfile (for example), execute "M-x d-ts" to enable dockerfile-ts-mode, then write: --8<---------------cut here---------------start------------->8--- RUN aaaa; \ --8<---------------cut here---------------end--------------->8--- and hit RET at the end of the line. Here's the full backtrace (with optimizations): --8<---------------cut here---------------start------------->8--- #0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76 #1 0x00005555557f16ea in build_string (str=0x0) at /home/sergio/programs/emacs/emacs/src/lisp.h:4629 #2 Ftreesit_node_type (node=<optimized out>) at treesit.c:2046 treesit_node = {context = {640, 0, 3, 0}, id = 0x280, tree = 0x7fffffffca98} type = 0x0 #3 0x00007fffec78f114 in F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/dockerfile-ts-mode-2cc274e0-bafc1340.eln #4 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=0x7fffffffca90) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #5 0x0000555555768660 in Fapply (nargs=2, args=0x7fffffffcb40) at eval.c:2765 i = <optimized out> funcall_nargs = 4 funcall_args = <optimized out> spread_arg = <optimized out> fun = <optimized out> sa_avail = <optimized out> sa_count = {bytes = 640} numargs = <optimized out> retval = <optimized out> #6 0x00007fffde2f3242 in F747265657369742d2d73696d706c652d696e64656e742d6576616c_treesit__simple_indent_eval_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #7 0x00005555557682e6 in Ffuncall (nargs=2, args=0x7fffffffcc20) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #8 0x00007fffde2f455b in F747265657369742d73696d706c652d696e64656e74_treesit_simple_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #9 0x00005555557682e6 in Ffuncall (nargs=4, args=0x7fffffffce10) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #10 0x00007fffde2f34b6 in F747265657369742d2d696e64656e742d31_treesit__indent_1_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #11 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffce98) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #12 0x00007fffde2f376e in F747265657369742d696e64656e74_treesit_indent_0 () at /home/sergio/.emacs.d-docker-mode/eln-cache/30.1.90-a95199b5/treesit-37439c61-a1bf6a97.eln #13 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffcf88) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #14 0x00007fffeffc540f in F696e64656e742d6163636f7264696e672d746f2d6d6f6465_indent_according_to_mode_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/indent-396b3792-a4a601d1.eln #15 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd058) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #16 0x00007fffefd9e746 in F656c6563747269632d696e64656e742d706f73742d73656c662d696e736572742d66756e6374696f6e_electric_indent_post_self_insert_function_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/electric-a9ca6cdd-16dd18c6.eln #17 0x00005555557682e6 in Ffuncall (nargs=1, args=0x7fffffffd118) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #18 0x0000555555768949 in funcall_nil (nargs=<optimized out>, args=<optimized out>) at eval.c:2776 #19 0x000055555576428f in run_hook_with_args (nargs=1, args=0x7fffffffd118, funcall=0x555555768940 <funcall_nil>) at eval.c:2946 global_vals = 0x7ffff04fb0d3 sym = 0xf240 val = 0x5555578cd263 ret = 0x0 #20 0x000055555576436f in Frun_hook_with_args (nargs=1, args=0x7fffffffd118) at eval.c:2818 #21 run_hook (hook=<optimized out>, hook@entry=0xf240) at eval.c:2966 #22 0x000055555571b45e in internal_self_insert (c=10, n=<optimized out>, n@entry=1) at cmds.c:498 hairy = 1 tem = <optimized out> synt = <optimized out> overwrite = <optimized out> len = <optimized out> str = "\n\377\377\177" chars_to_delete = <optimized out> spaces_to_insert = <optimized out> #23 0x000055555571bf36 in Fself_insert_command (n=<optimized out>, c=0x2a) at cmds.c:297 character = <optimized out> val = <optimized out> #24 0x00007ffff013e518 in F6e65776c696e65_newline_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #25 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=3, args=args@entry=0x7fffffffd328) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #26 0x0000555555760cfe in Ffuncall_interactively (nargs=3, args=0x7fffffffd328) at callint.c:250 speccount = {bytes = <optimized out>} #27 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=4, args=args@entry=0x7fffffffd320) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #28 0x0000555555762322 in Fcall_interactively (function=<optimized out>, record_flag=<optimized out>, keys=<optimized out>) at callint.c:789 speccount = {bytes = <optimized out>} arg_from_tty = <optimized out> key_count = <optimized out> record_then_fail = <optimized out> save_this_command = <optimized out> save_this_original_command = <optimized out> save_real_this_command = <optimized out> save_last_command = <optimized out> prefix_arg = <optimized out> enable = <optimized out> up_event = <optimized out> form = <optimized out> specs = <optimized out> sa_avail = <optimized out> sa_count = {bytes = <optimized out>} string_len = <optimized out> string = <optimized out> string_end = <optimized out> next_event = <optimized out> nargs = <optimized out> args = <optimized out> visargs = <optimized out> varies = <optimized out> tem = <optimized out> val = <optimized out> #29 0x00007ffff014a93d in F636f6d6d616e642d65786563757465_command_execute_0 () at /home/sergio/programs/emacs/install/bin/../lib/emacs/30.1.90/native-lisp/30.1.90-a95199b5/preloaded/simple-fab5b0cf-9904d6fb.eln #30 0x00005555557682e6 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffd620) at eval.c:3093 count = {bytes = <optimized out>} val = <optimized out> #31 0x00005555556e86e5 in command_loop_1 () at keyboard.c:1550 scount = {bytes = <optimized out>} cmd = <optimized out> keybuf = {0x36, 0x1a, 0x13710, 0x7ffff0da8034, 0x7ffff0da8034, 0x13710, 0x30, 0x0, 0x0, 0x7fffffffd750, 0x80, 0x4000000012000000, 0x0, 0x555555767053 <eval_sub+2179>, 0x7ffff06194f0, 0x5555560693e0, 0x7fff00000000, 0x7ffff0797188, 0x0, 0x60, 0x60, 0x7ffff0508583, 0x0, 0x55555585a788, 0x7ffff0925f9d, 0x555555764c94 <unbind_to+244>, 0x7ffff0508b23, 0x7ffff2e70ac0 <main_arena>, 0xb, 0xb310} i = <optimized out> last_pt = 12 prev_modiff = 49 prev_buffer = 0x555557abdf90 #32 0x0000555555763927 in internal_condition_case (bfun=bfun@entry=0x5555556e8300 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556db980 <cmd_error>) at eval.c:1613 val = <optimized out> c = 0x5555560693e0 #33 0x00005555556d3dfe in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1168 val = <optimized out> #34 0x0000555555763881 in internal_catch (tag=tag@entry=0x122d0, func=func@entry=0x5555556d3dd0 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1292 val = <optimized out> c = 0x5555560692a0 #35 0x00005555556d3d93 in command_loop () at keyboard.c:1146 #36 0x00005555556db521 in recursive_edit_1 () at keyboard.c:754 count = {bytes = <optimized out>} val = <optimized out> #37 0x00005555556db8b0 in Frecursive_edit () at keyboard.c:837 count = {bytes = <optimized out>} buffer = <optimized out> #38 0x00005555555af771 in main (argc=6, argv=<optimized out>) at emacs.c:2646 stack_bottom_variable = 0xe410 old_argc = <optimized out> no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = <optimized out> dump_mode = <optimized out> skip_args = 0 temacs = 0x0 attempt_load_pdump = <optimized out> only_version = false rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615} lc_all = <optimized out> sockfd = -1 module_assertions = <optimized out> --8<---------------cut here---------------end--------------->8--- I haven't had the time to compiled a non-optimized Emacs in order to dive deep into the problem yet. In GNU Emacs 30.1.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4) of 2025-07-01 built on emacs-compile-testing Repository revision: 985ad1da76d2ea1ef70765fe8b4fb62fc975ae0a Repository branch: emacs-30 Windowing system distributor 'The X.Org Foundation', version 11.0.12101016 System Description: Debian GNU/Linux 13 (trixie) Configured using: 'configure --prefix /home/sergio/programs/emacs/install/ --with-native-compilation --with-tree-sitter --with-libsystemd --with-imagemagick --with-x=yes --without-gconf --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ IMAGEMAGICK JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible https://sergiodj.net/ ------------=_1751611442-7365-1--
X-Loop: help-debbugs@HIDDEN Subject: bug#78938: 30.1.90; Segfault when using dockerfile-ts-mode Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 04 Jul 2025 07:46:02 +0000 Resent-Message-ID: <handler.78938.B78938.175161515311623 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 78938 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Yuan Fu <casouri@HIDDEN> Cc: 78938 <at> debbugs.gnu.org, sergiodj@HIDDEN Received: via spool by 78938-submit <at> debbugs.gnu.org id=B78938.175161515311623 (code B ref 78938); Fri, 04 Jul 2025 07:46:02 +0000 Received: (at 78938) by debbugs.gnu.org; 4 Jul 2025 07:45:53 +0000 Received: from localhost ([127.0.0.1]:56433 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uXb7H-000302-Si for submit <at> debbugs.gnu.org; Fri, 04 Jul 2025 03:45:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33274) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uXb7E-0002hQ-1C for 78938 <at> debbugs.gnu.org; Fri, 04 Jul 2025 03:45:49 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uXb77-00022c-Nb; Fri, 04 Jul 2025 03:45:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=Q8+1JnmUtPVD5qjI5L0Kf3V8ntx0kzty9Y5quhTe8sQ=; b=L5vc5svpvxmToT12KeOd vqaK9YAlP985O9LQxaQ5uv4J428/d0gTgYL2SzfODKs/6kw1PvcewjwmOxdSFRI/d+sNjCepUyAKr bnxcvjIeg8/W7O9NJF93gXMVPR98SANwVmxZXhHO8cHRHi6XNrzk5BVoARI2aueCIIQrPmFCM/CPT ce1B5x9Ln5C/3og0d6X02tcP9ojElNML3dgCrrr0ojj85z7roc8PVaJJFVjLwmsvGseSRIv5BMjOF wftBQrgLEVgI72b2Fk/hBX8v7h59AeZnG+7PUq/27rPHn8hsCao2c0mHRp5tvg3GYkJbvqhFGpZQL CbTPI1fgC+pzMQ==; Date: Fri, 04 Jul 2025 10:45:02 +0300 Message-Id: <86y0t4xuv5.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> (message from Yuan Fu on Thu, 3 Jul 2025 23:43:32 -0700) References: <874ivvitmj.fsf@HIDDEN> <86tt3u25fm.fsf@HIDDEN> <877c0ox3dg.fsf@HIDDEN> <7960B894-415E-4D6F-9312-2C2577AB2F10@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Yuan Fu <casouri@HIDDEN> > Date: Thu, 3 Jul 2025 23:43:32 -0700 > Cc: Eli Zaretskii <eliz@HIDDEN>, > 78938-done <at> debbugs.gnu.org > > > > > On Jul 3, 2025, at 4:26 PM, Sergio Durigan Junior <sergiodj@HIDDEN> wrote: > > > > On Wednesday, July 02 2025, Eli Zaretskii wrote: > > > >>> From: Sergio Durigan Junior <sergiodj@HIDDEN> > >>> Date: Tue, 01 Jul 2025 15:44:04 -0400 > >>> > >>> Emacs is segfaulting when I use dockerfile-ts-mode to edit a simple > >>> Dockerfile. > >>> > >>> I was able to reproduce the problem using a pristine Emacs setup: > >>> > >>> --8<---------------cut here---------------start------------->8--- > >>> $ emacs -q --init-directory ~/.emacs.d-docker-mode/ -l ~/.emacs.d-docker-mode/init.el > >>> --8<---------------cut here---------------end--------------->8--- > >>> > >>> --8<---------------cut here---------------start------------->8--- > >>> (require 'package) > >>> (add-to-list 'package-archives > >>> '("melpa" . "https://melpa.org/packages/")) > >>> > >>> (package-initialize) > >>> > >>> (use-package treesit) > >>> > >>> (use-package treesit-auto > >>> :ensure t > >>> :after (treesit) > >>> :config > >>> (global-treesit-auto-mode) > >>> (setq treesit-auto-install 'prompt)) > >>> --8<---------------cut here---------------end--------------->8--- > >>> > >>> Once inside Emacs, open a file named /tmp/Dockerfile (for example), > >>> execute "M-x d-ts" to enable dockerfile-ts-mode, then write: > >>> > >>> --8<---------------cut here---------------start------------->8--- > >>> RUN aaaa; \ > >>> --8<---------------cut here---------------end--------------->8--- > >>> > >>> and hit RET at the end of the line. > >> > >> I didn't get any segfaults with this recipe, but maybe it's because I > >> have a different version of the dockerfile grammar library and/or of > >> the tree-sitter library? > > > > Huh. That's strange. If you followed the recipe above, you should have > > installed the same grammar version as I'm using. So it might indeed be > > the tree-sitter library. I'm using Debian testing, and here's the > > library version I have: > > > > libtree-sitter0.22/testing,unstable,now 0.22.6-6+b1 amd64 [installed,automatic] > > > >> (I also used a simplified recipe: I didn't treesit-auto and didn't > >> activate global-treesit-auto-mode, and didn't use use-package; > >> instead, I invoked dockerfile-ts-mode manually. I don't think these > >> differences should matter, though.) > > > > I think using treesit-auto might influence the grammar version you have > > installed, because it will make sure to get the latest one. > > > >> The segfault you report is here: > >> > >> DEFUN ("treesit-node-type", > >> Ftreesit_node_type, Streesit_node_type, 1, 1, 0, > >> doc: /* Return the NODE's type as a string. > >> If NODE is nil, return nil. */) > >> (Lisp_Object node) > >> { > >> if (NILP (node)) return Qnil; > >> treesit_check_node (node); > >> treesit_initialize (); > >> > >> TSNode treesit_node = XTS_NODE (node)->node; > >> const char *type = ts_node_type (treesit_node); > >> return build_string (type); <<<<<<<<<<<<<<<<<<<<<<<<<< > >> } > > > > Yes. > > > >> and I note that we call build_string without testing the validity of > >> the string pointed by 'type', which in this case is a NULL pointer. > >> > >> Yuan, would it be okay to install the following band-aid on the > >> emacs-30 release branch? > >> > >> if (type) > >> return build_string (type); > >> return Qnil; > >> > >> This assumes that getting NULL from ts_node_type should be expected. > >> (If it indeed should be expected, would you please review the other > >> two places in treesit.c where we call ts_node_type?) > > > > I wasn't sure whether ts_node_type could return NULL. But upon looking > > at the code, I see that it can: > > > > const char *ts_node_type(TSNode self) { > > TSSymbol symbol = ts_node__alias(&self); > > if (!symbol) symbol = ts_subtree_symbol(ts_node__subtree(self)); > > return ts_language_symbol_name(self.tree->language, symbol); > > } > > > > ... and ts_language_symbol_name is defined as: > > > > const char *ts_language_symbol_name( > > const TSLanguage *self, > > TSSymbol symbol > > ) { > > if (symbol == ts_builtin_sym_error) { > > return "ERROR"; > > } else if (symbol == ts_builtin_sym_error_repeat) { > > return "_ERROR"; > > } else if (symbol < ts_language_symbol_count(self)) { > > return self->symbol_names[symbol]; > > } else { > > return NULL; > > } > > } > > Well, apparently this is a big lie: > > /** > * Get the node's type as a null-terminated string. > */ > const char *ts_node_type(TSNode self); > > Thanks for digging into this! > > The NULL case is probably because something unexpected happened in tree-sitter, let’s return an empty string in Lisp since callers doesn’t expect treesit-node-type to return nil when NODE isn’t nil. I applied the patch to emacs-30. Thanks, but we call ts_node_type in two more places. Could you please review them as well, and fix as necessary?
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.