From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Kai Ma Newsgroups: gmane.emacs.bugs Subject: bug#65060: 29.1.50; display_count_lines segv Date: Sat, 05 Aug 2023 05:41:54 +0800 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="948"; mail-complaints-to="usenet@ciao.gmane.io" To: 65060@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Aug 04 23:43:14 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qS2Zl-000AeT-WE for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 04 Aug 2023 23:43:14 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qS2Zb-0006ZQ-V7; Fri, 04 Aug 2023 17:43:03 -0400 Original-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 ) id 1qS2Za-0006XZ-Bj for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 17:43:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qS2Za-0004pV-3i for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 17:43:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qS2ZZ-0001Ld-Q3 for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 17:43:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Kai Ma Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 04 Aug 2023 21:43:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 65060 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16911853365126 (code B ref -1); Fri, 04 Aug 2023 21:43:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Aug 2023 21:42:16 +0000 Original-Received: from localhost ([127.0.0.1]:55002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qS2Yp-0001Kb-1T for submit@debbugs.gnu.org; Fri, 04 Aug 2023 17:42:16 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:32910) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qS2Yl-0001KH-Sx for submit@debbugs.gnu.org; Fri, 04 Aug 2023 17:42:13 -0400 Original-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 ) id 1qS2Yg-00063B-Lf for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 17:42:06 -0400 Original-Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qS2Yd-00045W-0z for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 17:42:06 -0400 Original-Received: by mail-pl1-x641.google.com with SMTP id d9443c01a7336-1bba48b0bd2so18462835ad.3 for ; Fri, 04 Aug 2023 14:42:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691185321; x=1691790121; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=wXYrf1Si+tsMGllcltiDJ10OvnJytwscyjQ5lywLVjw=; b=BiUD+U51IU11cyqNeR07cpsdSpEk7IMSOFSkII20wFCrd/XJmiEiTn/DB1XIfugkkd 5Lwnn+MVtTYpH6T0i0vVrXVtyXAOCGP/3hmZi7knEFaaefCY3ZQ6hW8X6xwEr0F2P3Jz dbLdccy0ovDgI/QJM3w2sWvDhFFrG/IqeLLAjed1qSZW82F64uHijku+QpkN/rCEbjPv K+zoldhQG+iaYJ3CX+K5dcOyWFpvkjJ4X2Kb7drd5UqLmSxYxQnDjWsr+fBJ/uhzo6Tj 46ko+EJI1dBpyUSlKU4SugdbAQxfq/peJ8ZolpLS9pOulUlzmaR50kMCdrZARlFU5gtm fXNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691185321; x=1691790121; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=wXYrf1Si+tsMGllcltiDJ10OvnJytwscyjQ5lywLVjw=; b=G2WIhZZAP7eTTO8kI6ZRL6dLBXCcuutstEWHaJi5PA4Z4V9O1oQxxPdFB+2Ler0tHq jmrGzJG7iIL23kxdyv5FSwVFFovgcyxnLC3+M3ifxgnFgLpO1YE/syGocHMN1arNFqaN EaEnwOIddHiYIUcuvhoSUlU1XC3cfHEZUnJPItCx0vZBBGy4rOiFkaSSoSaXDMQ/NJfP tJw86Brp+6MvkplDO8dv9SaTXV7qdVyXfubUXTBQMVRshtgWo1BJrR8bkZSUXybxyBGl kS76vLATzjrKLZpBQamVZbjnVulQpQWD9uZmg6JhQ3SQl17y0d1Mzl/RmkiJ0/zzJiEV /bAQ== X-Gm-Message-State: AOJu0YyMUX/dXbhm++jSDgU3Mz4SwkaYEWDyg76J1VuLzdCDs790/w3K IyI1eLSNmvsA1U4zwpDzlr/YsJtM4hhYMhNF/p8= X-Google-Smtp-Source: AGHT+IHrH38WBZ41n+n0kt/EFwPhjy4VfLIQRjktCSYYYF2O6T9tHaeSfE+1Klm4BN6Wz8pLR41hTw== X-Received: by 2002:a17:903:1107:b0:1b2:4852:9a5f with SMTP id n7-20020a170903110700b001b248529a5fmr3136270plh.54.1691185320291; Fri, 04 Aug 2023 14:42:00 -0700 (PDT) Original-Received: from Kais-MacBook.local ([111.18.136.33]) by smtp.gmail.com with ESMTPSA id j3-20020a170902c3c300b001b9cf6342e2sm2205489plj.42.2023.08.04.14.41.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 14:41:59 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::641; envelope-from=justksqsf@gmail.com; helo=mail-pl1-x641.google.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 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, FREEMAIL_FROM=0.001, FROM_LOCAL_NOVOWEL=0.5, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:266718 Archived-At: Emacs can crash due to memchr on null pointers inside display_count_lines: * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x00007ff813c6329d libsystem_platform.dylib`_platform_memchr$VARIANT$Haswell + 29 * frame #1: 0x000000010005c1ef emacs`display_count_lines(start_byte=1, limit_byte=650, count=17166, byte_pos_ptr=0x00007ff7bfef2ef8) at xdisp.c:28475:14 frame #2: 0x000000010005c019 emacs`count_lines(start_byte=1, end_byte=650) at xdisp.c:28421:10 frame #3: 0x00000001002666fe emacs`Fline_number_at_pos(position=(EMACS_INT) $385 = 650, absolute=(struct Lisp_Symbol *) $388 = 0x0000000100908010) at fns.c:6157:20 frame #4: 0x0000000100244708 emacs`eval_sub(form=(struct Lisp_Cons *) $390 = 0x000000011acc21d0) at eval.c:2501:15 frame #5: 0x00000001002444da emacs`eval_sub(form=(struct Lisp_Cons *) $392 = 0x000000011acc21e0) at eval.c:2465:25 frame #6: 0x0000000100246ea4 emacs`Flet(args=(struct Lisp_Cons *) $394 = 0x000000011acc1f80) at eval.c:996:18 frame #7: 0x0000000100244121 emacs`eval_sub(form=(struct Lisp_Cons *) $396 = 0x000000011acc2200) at eval.c:2449:8 frame #8: 0x0000000100244f0b emacs`Fprogn(body=(struct Lisp_Symbol *) $399 = 0x0000000100908010) at eval.c:436:13 frame #9: 0x000000010024cd1b emacs`funcall_lambda(fun=(struct Lisp_Cons *) $401 = 0x000000011acc1560, nargs=1, arg_vector=(struct Lisp_Symbol *) $404 = 0x0000000100908010) at eval.c:3233:11 frame #10: 0x000000010024adbf emacs`apply_lambda(fun=(struct Lisp_Cons *) $406 = 0x000000011acc1550, args=(struct Lisp_Cons *) $408 = 0x0000000116979d60, count=(bytes = 896)) at eval.c:3103:9 frame #11: 0x0000000100244c81 emacs`eval_sub(form=(struct Lisp_Cons *) $410 = 0x0000000116cbb2f0) at eval.c:2588:9 frame #12: 0x000000010024a6b6 emacs`Feval(form=(struct Lisp_Cons *) $412 = 0x0000000116cbb2f0, lexical=(struct Lisp_Symbol *) $415 = 0x0000000100908010) at eval.c:2361:28 frame #13: 0x000000010024c527 emacs`funcall_subr(subr=0x0000000100406c58, numargs=1, args=(struct Lisp_Symbol *) $418 = 0x0000000100908010) at eval.c:3036:15 frame #14: 0x000000010024c1e5 emacs`funcall_general(fun=(struct Lisp_Subr *) $423 = 0x0000000100406c58, numargs=1, args=(struct Lisp_Symbol *) $426 = 0x0000000100908010) at eval.c:2941:12 frame #15: 0x0000000100247644 emacs`Ffuncall(nargs=2, args=(struct Lisp_Symbol *) $429 = 0x0000000100908010) at eval.c:2995:21 frame #16: 0x00000001002487f4 emacs`internal_condition_case_n(bfun=(emacs`Ffuncall at eval.c:2975), nargs=2, args=(struct Lisp_Symbol *) $432 = 0x0000000100908010, handlers=(struct Lisp_Symbol *) $435 = 0x0000000100908040, hfun=(emacs`safe_eval_handler at xdisp.c:3025)) at eval.c:1558:25 frame #17: 0x000000010003e5e4 emacs`safe__call(inhibit_quit=true, nargs=2, func=(struct Lisp_Symbol *) $438 = 0x000000010090e370, ap=0x00007ff7bfef3d10) at xdisp.c:3059:13 frame #18: 0x000000010003e753 emacs`safe__call1(inhibit_quit=true, fn=(struct Lisp_Symbol *) $441 = 0x000000010090e370) at xdisp.c:3095:12 frame #19: 0x00000001000a620a emacs`safe__eval(inhibit_quit=true, sexpr=(struct Lisp_Cons *) $443 = 0x0000000116cbb2f0) at xdisp.c:3109:10 frame #20: 0x000000010004f6ad emacs`display_mode_element(it=0x00007ff7bfef45a0, depth=2, field_width=0, precision=0, elt=(struct Lisp_Cons *) $445 = 0x0000000116cbb2d0, props=(struct Lisp_Symbol *) $448 = 0x0000000100908010, risky=false) at xdisp.c:27387:10 frame #21: 0x000000010004fb29 emacs`display_mode_element(it=0x00007ff7bfef45a0, depth=1, field_width=0, precision=0, elt=(struct Lisp_Cons *) $450 = 0x0000000116cbb2c0, props=(struct Lisp_Symbol *) $453 = 0x0000000100908010, risky=false) at xdisp.c:27473:13 frame #22: 0x000000010005bf1a emacs`Fformat_mode_line(format=(struct Lisp_Cons *) $455 = 0x0000000116cbb2c0, face=(struct Lisp_Symbol *) $458 = 0x0000000100908010, window=(struct window *) $463 = 0x00000002fbf9d428, buffer=(struct buffer *) $468 = 0x00000001033b8410) at xdisp.c:27700:3 frame #23: 0x0000000100244760 emacs`eval_sub(form=(struct Lisp_Cons *) $470 = 0x0000000116cbb280) at eval.c:2508:15 frame #24: 0x000000010024684b emacs`FletX(args=(struct Lisp_Cons *) $472 = 0x0000000116cbb190) at eval.c:934:10 frame #25: 0x0000000100244121 emacs`eval_sub(form=(struct Lisp_Cons *) $474 = 0x0000000116cbb180) at eval.c:2449:8 frame #26: 0x000000010024a6b6 emacs`Feval(form=(struct Lisp_Cons *) $476 = 0x0000000116cbb180, lexical=(struct Lisp_Symbol *) $479 = 0x0000000100908010) at eval.c:2361:28 frame #27: 0x000000010024c527 emacs`funcall_subr(subr=0x0000000100406c58, numargs=1, args=(struct Lisp_Symbol *) $482 = 0x0000000100908010) at eval.c:3036:15 frame #28: 0x000000010024c1e5 emacs`funcall_general(fun=(struct Lisp_Subr *) $487 = 0x0000000100406c58, numargs=1, args=(struct Lisp_Symbol *) $490 = 0x0000000100908010) at eval.c:2941:12 frame #29: 0x0000000100247644 emacs`Ffuncall(nargs=2, args=(struct Lisp_Symbol *) $493 = 0x0000000100908010) at eval.c:2995:21 frame #30: 0x00000001002487f4 emacs`internal_condition_case_n(bfun=(emacs`Ffuncall at eval.c:2975), nargs=2, args=(struct Lisp_Symbol *) $496 = 0x0000000100908010, handlers=(struct Lisp_Symbol *) $499 = 0x0000000100908040, hfun=(emacs`safe_eval_handler at xdisp.c:3025)) at eval.c:1558:25 frame #31: 0x000000010003e5e4 emacs`safe__call(inhibit_quit=true, nargs=2, func=(struct Lisp_Symbol *) $502 = 0x000000010090e370, ap=0x00007ff7bfef6140) at xdisp.c:3059:13 frame #32: 0x000000010003e753 emacs`safe__call1(inhibit_quit=true, fn=(struct Lisp_Symbol *) $505 = 0x000000010090e370) at xdisp.c:3095:12 frame #33: 0x00000001000a620a emacs`safe__eval(inhibit_quit=true, sexpr=(struct Lisp_Cons *) $507 = 0x0000000116cbb180) at xdisp.c:3109:10 frame #34: 0x000000010004f6ad emacs`display_mode_element(it=0x00007ff7bfef6a20, depth=2, field_width=0, precision=0, elt=(struct Lisp_Cons *) $509 = 0x0000000116cbb160, props=(struct Lisp_Symbol *) $512 = 0x0000000100908010, risky=false) at xdisp.c:27387:10 frame #35: 0x000000010004fb29 emacs`display_mode_element(it=0x00007ff7bfef6a20, depth=1, field_width=0, precision=0, elt=(struct Lisp_Cons *) $514 = 0x0000000116cbb150, props=(struct Lisp_Symbol *) $517 = 0x0000000100908010, risky=false) at xdisp.c:27473:13 frame #36: 0x000000010003036a emacs`display_mode_line(w=0x00000002fbf9d428, face_id=MODE_LINE_INACTIVE_FACE_ID, format=(struct Lisp_Cons *) $519 = 0x0000000116cbb150) at xdisp.c:26899:7 frame #37: 0x0000000100085135 emacs`display_mode_lines(w=0x00000002fbf9d428) at xdisp.c:26812:7 frame #38: 0x0000000100091eec emacs`redisplay_window(window=(struct window *) $524 = 0x00000002fbf9d428, just_this_one_p=false) at xdisp.c:20535:7 frame #39: 0x000000010008de7d emacs`redisplay_window_0(window=(struct window *) $529 = 0x00000002fbf9d428) at xdisp.c:17616:5 frame #40: 0x0000000100248623 emacs`internal_condition_case_1(bfun=(emacs`redisplay_window_0 at xdisp.c:17614), arg=(struct window *) $534 = 0x00000002fbf9d428, handlers=(struct Lisp_Cons *) $536 = 0x0000000104de93c0, hfun=(emacs`redisplay_window_error at xdisp.c:17596)) at eval.c:1498:25 frame #41: 0x000000010008ca6c emacs`redisplay_windows(window=(struct window *) $541 = 0x00000002fbf9d428) at xdisp.c:17585:4 frame #42: 0x000000010008ca1b emacs`redisplay_windows(window=(struct window *) $546 = 0x00000002fbe51310) at xdisp.c:17579:2 frame #43: 0x000000010008ca1b emacs`redisplay_windows(window=(struct window *) $551 = 0x00000002fbed1258) at xdisp.c:17579:2 frame #44: 0x000000010004b0b4 emacs`redisplay_internal at xdisp.c:17035:5 frame #45: 0x0000000100051659 emacs`redisplay at xdisp.c:16218:3 frame #46: 0x0000000100163e49 emacs`read_char(commandflag=1, map=(struct Lisp_Cons *) $553 = 0x000000011cb67780, prev_event=(struct Lisp_Symbol *) $556 = 0x0000000100908010, used_mouse_menu=0x00007ff7bfefe10f, end_time=0x0000000000000000) at keyboard.c:2636:6 frame #47: 0x0000000100160ad8 emacs`read_key_sequence(keybuf=(struct Lisp_Symbol *) $559 = 0x0000000100908010, prompt=(struct Lisp_Symbol *) $562 = 0x0000000100908010, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:10083:12 frame #48: 0x000000010015ee80 emacs`command_loop_1 at keyboard.c:1384:15 frame #49: 0x0000000100248558 emacs`internal_condition_case(bfun=(emacs`command_loop_1 at keyboard.c:1278), handlers=(struct Lisp_Symbol *) $565 = 0x00000001009080a0, hfun=(emacs`cmd_error at keyboard.c:936)) at eval.c:1474:25 frame #50: 0x000000010015e923 emacs`command_loop_2(handlers=(struct Lisp_Symbol *) $568 = 0x00000001009080a0) at keyboard.c:1133:11 frame #51: 0x0000000100247ce3 emacs`internal_catch(tag=(struct Lisp_Symbol *) $571 = 0x00000001009174c0, func=(emacs`command_loop_2 at keyboard.c:1129), arg=(struct Lisp_Symbol *) $574 = 0x00000001009080a0) at eval.c:1197:25 frame #52: 0x000000010015dc9a emacs`command_loop at keyboard.c:1111:2 frame #53: 0x000000010015da9f emacs`recursive_edit_1 at keyboard.c:720:9 frame #54: 0x000000010015e012 emacs`Frecursive_edit at keyboard.c:803:3 frame #55: 0x000000010015ae48 emacs`main(argc=1, argv=0x00007ff7bfefec90) at emacs.c:2529:3 frame #56: 0x00007ff8138de41f dyld`start + 1903 xbacktrace: (unsigned char *) data = 0x00000001003d4d0b "line-number-at-pos" (unsigned char *) data = 0x00000001003c6842 "-" (unsigned char *) data = 0x00000001003d45c5 "let" (unsigned char *) data = 0x0000000120f94b50 "dirvish-index-ml" (unsigned char *) data = 0x00000001003d4651 "eval" (unsigned char *) data = 0x00000001003c694f "format-mode-line" (unsigned char *) data = 0x00000001003d45c9 "let*" (unsigned char *) data = 0x00000001003d4651 "eval" (unsigned char *) data = 0x00000001003d8fe6 "redisplay_internal (C function)" I took a quick look at the function, and it turns out the cursor can be null even on the first iteration. After applying the following change, I can see "cursor is null" printed out just before the crash. diff --git a/src/xdisp.c b/src/xdisp.c index 9cddcfeda27..f994021bb3c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -28457,6 +28457,8 @@ display_count_lines (ptrdiff_t start_byte, ceiling = min (limit_byte - 1, ceiling); ceiling_addr = BYTE_POS_ADDR (ceiling) + 1; base = (cursor = BYTE_POS_ADDR (start_byte)); + if (! cursor) + fprintf (stderr, "cursor is null\n"); do { The crash occurred when I was trying out dirvish with display-line-numbers-mode enabled. Unfortunately, this crash is not quite easy to reproduce. The best recipe I got so far is: 1. Create init.el (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (use-package dirvish :ensure t :config (dirvish-override-dired-mode)) (global-display-line-numbers-mode +1) (dirvish-override-dired-mode) 2. emacs -q -l init.el 3. M-x dirvish 4. randomly kill dirvish buffers, and/or randomly delete dirvish windows. Chances are, at some point, Emacs crashes due to the above segv. I have reproduced the crash in emacs -q, but it was not easy. I will try to find a better recipe and post it here. In GNU Emacs 29.1.50 (build 1, x86_64-apple-darwin22.6.0, NS appkit-2299.70 Version 13.5 (Build 22G74)) of 2023-08-03 built on Kais-MacBook.local Repository revision: 7280e6aaa1978c6e26c4286db9c446fa74637fa4 Repository branch: emacs-29 Windowing system distributor 'Apple', version 10.3.2299 System Description: macOS 13.5 Configured using: 'configure --with-xwidgets --with-ns --with-tree-sitter -C 'LDFLAGS=-L/usr/local/opt/llvm/lib -L/usr/local/opt/bison/lib -L/usr/local/opt/flex/lib' 'CPPFLAGS=-I/usr/local/opt/llvm/include -I/usr/local/opt/flex/include'' Configured features: ACL DBUS GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS ZLIB Important settings: value of $LC_ALL: zh_CN.utf-8 value of $LANG: zh_CN.utf-8 locale-coding-system: utf-8-unix Major mode: VTerm Minor modes in effect: repeat-mode: t vterm-copy-mode: t goto-address-mode: t global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t diff-hl-margin-mode: t recentf-mode: t yas-global-mode: t yas-minor-mode: t doom-modeline-mode: t winner-mode: t winum-mode: t which-key-mode: t global-hl-line-mode: t solaire-global-mode: t projectile-mode: t vertico-multiform-mode: t vertico-mouse-mode: t vertico-mode: t keyfreq-autosave-mode: t keyfreq-mode: t evil-leader-mode: t global-evil-surround-mode: t evil-surround-mode: t global-evil-collection-unimpaired-mode: t evil-collection-unimpaired-mode: t diredfl-global-mode: t evil-mode: t evil-local-mode: t corfu-popupinfo-mode: t global-corfu-mode: t marginalia-mode: t prescient-persist-mode: t global-ligature-mode: t ligature-mode: t pixel-scroll-precision-mode: t save-place-mode: t server-mode: t electric-pair-mode: t global-so-long-mode: t delete-selection-mode: t global-auto-revert-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /Users/kaima/.emacs.d/elpa/transient-20230723.1411/transient hides /Applications/Emacs.app/Contents/Resources/lisp/transient Features: (shadow ecomplete emacsbug tramp-archive tramp-gvfs tabify evil-collection-man man semantic/ia semantic/analyze/refs semantic/db-find semantic/db-ref semantic/senator semantic/decorate semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn semantic/db eieio-base semantic/ctxt semantic/format semantic/tag-ls semantic/find evil-collection-ripgrep ripgrep evil-collection-wgrep wgrep repeat evil-collection-vterm vterm tramp tramp-loaddefs trampver tramp-integration tramp-compat evil-collection-term term ehelp vterm-module term/xterm xterm evil-collection-sh-script sh-script smie executable citre citre-global citre-tags citre-ctags citre-readtags citre-readtags-tables citre-backend-interface citre-ui-peek citre-ui-jump citre-common-tag citre-common-util c-ts-mode c-ts-common all-the-icons-ibuffer htmlfontify url-http url-gw url-auth evil-collection-shortdoc shortdoc cus-start flow-fill mm-archive gnus-html url-queue url-cache mm-url sort smiley gnus-cite mail-extr textsec uni-scripts idna-mapping uni-confusable textsec-check gnus-async gnus-bcklg gnus-dup qp gnus-ml disp-table align evil-collection-speedbar speedbar ezimage dframe haskell-mode haskell-cabal haskell-utils haskell-font-lock haskell-indentation haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports haskell-complete-module haskell-ghc-support evil-collection-flymake flymake-proc flymake etags fileloop haskell-customize nndraft nnmh utf-7 nnfolder nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr pixel-fill kinsoku url-file gnus-topic gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win evil-collection-gnus gnus nnheader range org-protocol goto-addr org-capture magit-extras magit-bookmark evil-collection-magit magit-submodule magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode diff git-commit evil-collection-log-edit log-edit message sendmail yank-media rfc822 mml mml-sec evil-collection-epa epa gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell magit-mode transient magit-git magit-base which-func ido evil-collection-magit-section magit-section benchmark cursor-sensor crm org-clock evil-org-agenda evil-org evil-collection-org citeproc citeproc-itemgetters citeproc-biblatex parse-time citeproc-bibtex parsebib ol-bibtex bibtex iso8601 citeproc-cite citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters citeproc-number rst citeproc-proc citeproc-disamb citeproc-itemdata citeproc-generic-elements citeproc-macro citeproc-choose citeproc-date citeproc-context citeproc-prange citeproc-style citeproc-locale citeproc-term citeproc-rt citeproc-lib citeproc-s oc-bibtex ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox org-element org-persist org-id org-refile avl-tree org-tempo tempo org time-date ob-d2 ob-dot ob-python evil-collection-python python treesit ob-rust ob-C ccls ccls-member-hierarchy ccls-inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens ccls-semantic-highlight ccls-common lsp-mode lsp-protocol spinner network-stream puny nsm evil-collection-markdown-mode markdown-mode evil-collection-outline noutline outline ht inline epg rfc6068 epg-config cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine ob-emacs-lisp org-table org-loaddefs evil-collection-calendar cal-menu calendar cal-loaddefs ob ob-tangle ol ob-ref ob-lob ob-table ob-exp org-macro org-src org-keys oc ob-comint ob-core org-cycle org-fold ob-eval semantic/symref/grep semantic/symref semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet consult-xref evil-collection-consult consult evil-collection-bookmark bookmark org-pcomplete pcomplete evil-collection-xref xref org-list org-footnote org-fold-core org-entities org-faces org-version bug-reference misearch multi-isearch all-the-icons-dired dired-filter dired-hacks-utils dired-aux dired-x org-compat autoinsert org-macs format-spec info-colors jka-compr vertico-directory evil-collection-helpful helpful cc-langs cc-vars cc-defs evil-collection-imenu imenu trace evil-collection-edebug edebug info-look help-fns radix-tree evil-collection-elisp-refs elisp-refs pulse hideshow display-line-numbers hl-todo rainbow-delimiters copilot copilot-balancer editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch jsonrpc evil-collection-ert ert evil-collection-debug debug backtrace find-func warnings symbol-overlay evil-collection-diff-hl diff-hl-margin diff-hl-dired diff-hl vc-hg evil-collection-vc-git vc-git evil-collection-log-view log-view pcvs-util evil-collection-vc-dir vc-dir ewoc vc vc-dispatcher evil-collection-diff-mode diff-mode recentf tree-widget yasnippet-snippets yasnippet doom-modeline doom-modeline-segments let-alist doom-modeline-env doom-modeline-core shrink-path f f-shortdoc s nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon winner winum evil-collection-which-key which-key hl-line solaire-mode face-remap projectile project skeleton ibuf-macs find-dired lisp-mnt evil-collection-grep grep evil-collection-compile compile text-property-search evil-collection-comint comint ansi-osc ansi-color ibuf-ext evil-collection-ibuffer ibuffer ibuffer-loaddefs evil-collection-vertico vertico-multiform vertico-mouse vertico hardhacker-theme keyfreq prelude-nix prelude-evil evil-leader evil-surround evil-collection-unimpaired evil-collection-tabulated-list evil-collection-tab-bar evil-collection-so-long evil-collection-simple evil-collection-replace evil-collection-process-menu evil-collection-popup evil-collection-package-menu evil-collection-info evil-collection-indent evil-collection-image image-mode evil-collection-dired diredfl dired dired-loaddefs exif evil-collection-help evil-collection-eshell em-prompt esh-mode evil-collection-elisp-mode evil-collection-eldoc evil-collection-custom evil-collection-corfu evil-collection-buff-menu evil-collection annalist evil evil-integration evil-maps evil-commands evil-digraphs reveal evil-jumps evil-command-window evil-search evil-ex evil-types evil-macros evil-repeat evil-states evil-core evil-common thingatpt rect evil-vars prelude-irc prelude-apps prelude-mail prelude-os prelude-help prelude-lang-zig prelude-lang-web prelude-lang-agda agda2 prelude-lang-haskell prelude-lang-js prelude-lang-ml prelude-lang-coq prelude-lang-rust prelude-lang-python prelude-lang-cc prelude-lang-lisp prelude-prog prelude-blog prelude-org prelude-tex prelude-git prelude-dired prelude-chinese rime rime-predicates derived xdg posframe popup dash prelude-ibuffer prelude-search prelude-completion kind-icon svg-lib color svg dom xml corfu-popupinfo corfu cape marginalia orderless prescient char-fold prelude-project prelude-ui cus-edit pp cus-load icons wid-edit rx ligature all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons pixel-scroll cua-base prelude-core hydra ring lv saveplace adaptive-wrap dabbrev server finder-inf elec-pair diminish exec-path-from-shell eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util files-x undohist edmacro kmacro so-long delsel autorevert filenotify prelude-benchmark benchmark-init advice cl-extra help-mode prelude-common prelude-iload queue generator cl prelude-package vc-use-package pcase use-package use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode prelude-loaddefs no-littering compat package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core password-cache json subr-x map byte-opt url-vars cl-macs gv use-package-ensure cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile info adaptive-wrap-autoloads alert-autoloads all-the-icons-dired-autoloads all-the-icons-ibuffer-autoloads auctex-autoloads tex-site benchmark-init-autoloads cape-autoloads carbon-now-sh-autoloads cargo-autoloads catppuccin-theme-autoloads ccls-autoloads cdlatex-autoloads cider-autoloads citeproc-autoloads citre-autoloads clojure-mode-autoloads company-coq-autoloads company-math-autoloads company-autoloads copilot-autoloads corfu-autoloads d2-mode-autoloads dap-mode-autoloads bui-autoloads dash-at-point-autoloads dashboard-autoloads debbugs-autoloads deft-autoloads devdocs-autoloads diff-hl-autoloads diminish-autoloads dired-filter-autoloads dired-hacks-utils-autoloads diredfl-autoloads dirvish-autoloads doom-modeline-autoloads doom-themes-autoloads dracula-theme-autoloads dumb-jump-autoloads dune-autoloads ebib-autoloads editorconfig-autoloads ef-themes-autoloads elfeed-autoloads embark-consult-autoloads consult-autoloads embark-autoloads evil-collection-autoloads annalist-autoloads evil-leader-autoloads evil-org-autoloads evil-surround-autoloads evil-autoloads exec-path-from-shell-autoloads expand-region-autoloads flycheck-haskell-autoloads flycheck-autoloads forge-autoloads closql-autoloads emacsql-autoloads geiser-autoloads ghub-autoloads gntp-autoloads go-translate-autoloads google-translate-autoloads goto-chg-autoloads gptel-autoloads haskell-mode-autoloads helpful-autoloads elisp-refs-autoloads hl-todo-autoloads info-colors-autoloads js2-mode-autoloads keyfreq-autoloads kind-icon-autoloads ligature-autoloads log4e-autoloads lsp-docker-autoloads lsp-treemacs-autoloads lsp-ui-autoloads lsp-mode-autoloads lua-mode-autoloads magit-autoloads git-commit-autoloads marginalia-autoloads markdown-mode-autoloads math-symbol-lists-autoloads merlin-autoloads minimap-autoloads modern-cpp-font-lock-autoloads modus-themes-autoloads multiple-cursors-autoloads nerd-icons-autoloads nix-mode-autoloads magit-section-autoloads nix-sandbox-autoloads no-littering-autoloads nov-autoloads esxml-autoloads kv-autoloads ob-d2-autoloads ob-rust-autoloads one-themes-autoloads orderless-autoloads org-appear-autoloads org-preview-html-autoloads org-xlatex-autoloads ormolu-autoloads paredit-autoloads parsebib-autoloads parseedn-autoloads parseclj-autoloads pdf-tools-autoloads pinyinlib-autoloads pkg-info-autoloads epl-autoloads prescient-autoloads proof-general-autoloads proof-site proof-autoloads queue-autoloads quickrun-autoloads racket-mode-autoloads rainbow-delimiters-autoloads rainbow-mode-autoloads rime-autoloads popup-autoloads ripgrep-autoloads rotate-autoloads sesman-autoloads shrink-path-autoloads f-autoloads sly-autoloads smartparens-autoloads solaire-mode-autoloads speed-type-autoloads spinner-autoloads string-inflection-autoloads svg-lib-autoloads symbol-overlay-autoloads tablist-autoloads telega-autoloads rainbow-identifiers-autoloads theme-emacs-autoloads transient-autoloads treemacs-all-the-icons-autoloads all-the-icons-autoloads treemacs-persp-autoloads persp-mode-autoloads treemacs-projectile-autoloads projectile-autoloads treemacs-tab-bar-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads ht-autoloads hydra-autoloads lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads s-autoloads treepy-autoloads undohist-autoloads utop-autoloads tuareg-autoloads caml-autoloads valign-autoloads vc-use-package-autoloads vertico-autoloads visual-fill-column-autoloads vterm-toggle-autoloads vterm-autoloads vundo-autoloads wakatime-mode-autoloads web-mode-autoloads wgrep-autoloads which-key-autoloads winum-autoloads dash-autoloads with-editor-autoloads compat-autoloads yaml-autoloads yasnippet-snippets-autoloads yasnippet-autoloads zig-mode-autoloads reformatter-autoloads rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads xwidget-internal dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 1809150 1742795) (symbols 48 93202 23) (strings 32 361902 89427) (string-bytes 1 11206118) (vectors 16 116188) (vector-slots 8 3198247 827822) (floats 8 2706 12115) (intervals 56 58501 31705) (buffers 984 62))