From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 02 15:20:40 2025 Received: (at submit) by debbugs.gnu.org; 2 Jul 2025 19:20:40 +0000 Received: from localhost ([127.0.0.1]:39471 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uX30S-0002vR-7k for submit@debbugs.gnu.org; Wed, 02 Jul 2025 15:20:40 -0400 Received: from lists.gnu.org ([2001:470:142::17]:45732) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uX30H-0002nq-PY for submit@debbugs.gnu.org; Wed, 02 Jul 2025 15:20:29 -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 ) id 1uX304-0007tu-9F for bug-gnu-emacs@gnu.org; Wed, 02 Jul 2025 15:20:10 -0400 Received: from mail-qk1-x732.google.com ([2607:f8b0:4864:20::732]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uX2zw-0007j9-VR; Wed, 02 Jul 2025 15:20:06 -0400 Received: by mail-qk1-x732.google.com with SMTP id af79cd13be357-7d09a17d2f7so450343985a.1; Wed, 02 Jul 2025 12:19:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751483989; x=1752088789; darn=gnu.org; h=message-id:to:cc:subject:date:mime-version :content-transfer-encoding:from:feedback-id:from:to:cc:subject:date :message-id:reply-to; bh=fx5ehNDYg9KPSu4hRJPXZ7XCWoWEmpmrPikXESx45ck=; b=XCAHuUVrGpg+JeUTw5MtDjHTXC8O2gFAE+/kitLol0C+G1wokus7ywoTwpis3lO0cj vIeaNSoB3swt321vZUZKtViFY4CTLbgY1h5jQKBUgR5Fb9pq8muZmijfm9aCuKpaZIbo RIY0+2tawsT6K8K1Y+v2NIwgyaTklWnoMNCCbJZMMWoZxldoCEfE12ewRBuGVHPftBwz +Pye6yly4kAbJR+VJjLwkuZys/3/dfKWJ7NNt0GXuU492UpCiNgDJlqh6vcbjktAdODI x/LxF3kI4LX0Um/DMPjdRaoej1UTnXeIGdbTP3mHKPtM7MsFqpwYTt8D96JdE/uOH7Um /sTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751483989; x=1752088789; h=message-id:to:cc:subject:date:mime-version :content-transfer-encoding:from:feedback-id:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fx5ehNDYg9KPSu4hRJPXZ7XCWoWEmpmrPikXESx45ck=; b=dCr/qF2bSroEdBx+pmE5haQb/pMTjpAHoipSvtUNGO31dqCsmX8jFvCFP0pJ9BqBFB keeDpFsPJljwb1+X/NNZDfF0zvcUuLDsmEpxrkshLjSzIe7FUqXDvqtxpC6xGGT+D6cq Bocc9nWXphw0GnHiSWEBJXNoWxD2tj77SMExS5PLrCINI9/twBg/LUfku7dbbKZGPvO1 oKtQ+3sMYUng/gaenUFtvn09v0WW6JwN+kUxIZ+3VQIZsvKIBF7OrwMcxC0pGCp4EAhk WaUeJ4uVzDdqPL/95ghxarHB+l9BfcxowKaNpFT4kt2zCyjpll23uEAWkvsRwikyeGGT Y8EA== X-Gm-Message-State: AOJu0YxCG0qJvaU3YgSoneJYrwF28xin7X1KdckhLHWaQb1m7SEqekfj CUhZ4VHhCQQEwJOvp1sGZQYrGkhICAAnO5RZPArvyDPbUafUnIqkUieW X-Gm-Gg: ASbGncsGVjTYxStBog/X8JcRB2gm7JRkPM98QvyR3h9zz6MWiEy5XxBaKyjaumf4pYx 8jfW38FSwdRPx7pFvPxcxZvxBdMCcRfQFkCb22E98MJOGMdFY3mtI2RfEXAvMGv+m7nAllIiRms tSA20ncB0aIhmbK39xB7quqgsN3x6rMJ5ks60/eagNKyNsRoJwEgb05hOi5wpwNA/ao3/p8o94E ih62UhHkIpaoYBfQtyvy5mpwhODZ9kIoYBtzHAYW1FbTWpWjU3lRENAlxczJlFDuqVxLYho0Iym hWup8WwOpCCkwwhNoWhOfZYzlfoHcoIGV56GHOaC+caZsS7nshkEAjWHEACRFvgP9CuFebroxjC 8avUac1kDqhQT5xet6Zo0eV15P/Wr5gcTOd4XZ902TaBJkMY7+A== X-Google-Smtp-Source: AGHT+IGtMQiQ/C/NxfUFgHC/m1nuvfIGD5SNgp0xkSWZI/MgfUKOO7aI4UqWf53bbUe4M2Ijg1DYlA== X-Received: by 2002:a05:620a:1706:b0:7d5:c26a:f24c with SMTP id af79cd13be357-7d5c4744937mr646000585a.21.1751483984533; Wed, 02 Jul 2025 12:19:44 -0700 (PDT) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d443204d75sm992708985a.72.2025.07.02.12.19.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Jul 2025 12:19:43 -0700 (PDT) Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfauth.phl.internal (Postfix) with ESMTP id 05CBEF4006A; Wed, 2 Jul 2025 15:19:43 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-07.internal (MEProxy); Wed, 02 Jul 2025 15:19:43 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddukedvvdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephfgtgfggfffuvefvkffosehtqhhmtdhhtd ejnecuhfhrohhmpeflohhhnhcuhghivghglhgvhicuoehjfihivghglhgvhiesghhmrghi lhdrtghomheqnecuggftrfgrthhtvghrnhephfekvdefhfekuddtueehleejhedtfedtte egueehveeludeiffffkeefheelteegnecuffhomhgrihhnpehnvgifrghrthhishgrnhhs rdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epjhhohhhnfidomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieekleegieef keegqddujeejheefkeduiedqjhifihgvghhlvgihpeepghhmrghilhdrtghomhesnhgvfi grrhhtihhsrghnshdrtghomhdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtohepsghughdqghhnuhdqvghmrggtshesghhnuhdrohhrghdprhgtph htthhopegvlhhiiiesghhnuhdrohhrghdprhgtphhtthhopegtohhnthgrtghtsehkrghr thhhihhnkhhsrdgtohhmpdhrtghpthhtohepjhifihgvghhlvgihsehgmhgrihhlrdgtoh hm X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 2 Jul 2025 15:19:42 -0400 (EDT) From: John Wiegley Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Date: Wed, 2 Jul 2025 12:19:31 -0700 Subject: 30.1; accept-process-output not allowed in threads on macOS To: bug-gnu-emacs@gnu.org Message-Id: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> X-Mailer: Apple Mail (2.3826.600.51.1.1) Received-SPF: pass client-ip=2607:f8b0:4864:20::732; envelope-from=jwiegley@gmail.com; helo=mail-qk1-x732.google.com 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, FREEMAIL_FROM=0.001, 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-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: eliz@gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) If I run the attached code from the terminal using: #+begin_src sh emacs -batch -Q -l accept-process-bug.el #+end_src It will correctly run forever, processing output from the =E2=80=9Cyes=E2=80= =9D command (you can convince yourself of this by adding a debug statement inside the = process filter, but it will be extremely noisy). If you now attempt to evaluate this code in a graphical Emacs running on macOS, it will immediately stall out. Running Emacs under lldb shows = that it is reporting the following exception continuously: #+begin_example 2025-07-02 12:10:23.857272-0700 Emacs[34130:54192679] [General] = nextEventMatchingMask should only be called from the Main Thread! 2025-07-02 12:10:23.857732-0700 Emacs[34130:54192679] [General] ( 0 CoreFoundation 0x0000000193d66ca0 = __exceptionPreprocess + 176 1 libobjc.A.dylib 0x000000019382ab90 = objc_exception_throw + 88 2 AppKit 0x00000001985baefc = -[NSApplication(NSEventRouting) = _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3068 3 AppKit 0x0000000197c0ec64 = -[NSApplication run] + 480 4 Emacs 0x000000010040f400 = -[EmacsApp run] + 100 5 Emacs 0x000000010040d35c = ns_select_1 + 1080 6 Emacs 0x000000010040cefc = ns_select + 72 7 Emacs 0x000000010036d148 = wait_reading_process_output + 4784 8 Emacs 0x000000010036bdb8 = Faccept_process_output + 1268 9 Emacs 0x00000001002cda90 = eval_sub + 2252 10 Emacs 0x00000001002ce20c Fprogn = + 112 11 Emacs 0x00000001002ce3b8 = prog_ignore + 24 12 Emacs 0x00000001002d19ac Fwhile = + 132 13 Emacs 0x00000001002cd62c = eval_sub + 1128 14 Emacs 0x00000001002ce20c Fprogn = + 112 15 Emacs 0x00000001002d108c FletX + = 876 16 Emacs 0x00000001002cd62c = eval_sub + 1128 17 Emacs 0x00000001002ce20c Fprogn = + 112 18 Emacs 0x00000001002d84ec = funcall_lambda + 1832 19 Emacs 0x00000001002d7618 = funcall_general + 288 20 Emacs 0x00000001002cf438 = Ffuncall + 472 21 Emacs 0x00000001003c3c10 = invoke_thread_function + 64 22 Emacs 0x00000001002d32c4 = internal_condition_case + 148 23 Emacs 0x00000001003c22dc = run_thread + 344 24 libsystem_pthread.dylib 0x0000000193c0ac0c = _pthread_start + 136 25 libsystem_pthread.dylib 0x0000000193c05b80 = thread_start + 8 ) #+end_example While this is happening, the only thing I can do is send a SIGTERM to = Emacs to force it to abort. Note that this does NOT happen in a graphical Emacs = on GNU/Linux, as confirmed by Karthik Chikmagalur. Below is the Lisp code to reproduce this problem on macOS: #+begin_src emacs-lisp (message "Starting thread...") (let ((thread (make-thread #'(lambda () (let* (completed (proc (make-process :name "process" :command '("yes") :connection-type 'pipe :filter #'(lambda (_proc x)) :sentinel #'(lambda (_proc event) (message "Sentinel: %S" x) (setq completed t))))) (while (not completed) (thread-yield) (accept-process-output proc nil 100))))))) (message "Beginning yield loop...") (while (thread-live-p thread) (thread-yield)) (message "Joining thread...") (thread-join thread) (message "Test completed!")) #+end_src John Wiegley In GNU Emacs 30.1 (build 1, aarch64-apple-darwin24.5.0, NS = appkit-2575.60 Version 15.5 (Build 24F74)) Windowing system distributor 'Apple', version 10.3.2575 System Description: macOS 15.5 Configured using: 'configure = --prefix=3D/nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1 --disable-build-details --with-modules --disable-ns-self-contained = --with-ns --with-compress-install --with-toolkit-scroll-bars = --with-native-compilation --with-imagemagick --with-mailutils --without-small-ja-dic = --with-tree-sitter --without-xinput2 --without-xwidgets --without-dbus --without-selinux --disable-gc-mark-trace' Configured features: ACL GLIB GMP GNUTLS IMAGEMAGICK JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP = NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $EMACSLOADPATH: value of $EMACSNATIVELOADPATH: value of $LC_CTYPE: en_US.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ELisp/d Minor modes in effect: aggressive-indent-mode: t flymake-mode: t highlight-defined-mode: t highlight-quoted-mode: t redshank-mode: t paredit-mode: t highlight-numbers-mode: t pretty-control-l-mode: t rainbow-delimiters-mode: t global-edit-server-edit-mode: t pdf-occur-global-minor-mode: t magit-todos-mode: t global-git-commit-mode: t server-mode: t consult-org-roam-mode: t vulpea-db-autosync-mode: t org-extra-emphasis-intraword-emphasis-mode: t org-edna-mode: t org-auto-expand-mode: t typo-global-mode: t diredfl-global-mode: t dired-hist-mode: t corfu-popupinfo-mode: t org-super-agenda-mode: t yas-minor-mode: t corfu-prescient-mode: t vertico-prescient-mode: t prescient-persist-mode: t global-corfu-mode: t corfu-mode: t vertico-multiform-mode: t vertico-mode: t projectile-mode: t global-completion-preview-mode: t completion-preview-mode: t winner-mode: t global-whitespace-cleanup-mode: t whitespace-cleanup-mode: t ultra-scroll-mode: t pixel-scroll-precision-mode: t display-time-mode: t selected-global-mode: t selected-minor-mode: t savehist-mode: t repeat-mode: t recentf-mode: t persistent-scratch-autosave-mode: t midnight-mode: t auto-image-file-mode: t outline-minor-mode: t eager-state-mode: t eager-state-preempt-kill-emacs-hook-mode: t delete-selection-mode: t global-auto-revert-mode: t override-global-mode: t tooltip-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t minibuffer-regexp-mode: 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 temp-buffer-resize-mode: t abbrev-mode: t hs-minor-mode: t Load-path shadows: /Users/johnw/.emacs.d/lisp/gptel/gptel-gh hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-gh /Users/johnw/.emacs.d/lisp/gptel/gptel-curl hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-curl /Users/johnw/.emacs.d/lisp/gptel/gptel-bedrock hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-bedrock /Users/johnw/.emacs.d/lisp/gptel/gptel-anthropic hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-anthropic /Users/johnw/.emacs.d/lisp/gptel/gptel-context hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-context /Users/johnw/.emacs.d/lisp/gptel/gptel-openai hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-openai /Users/johnw/.emacs.d/lisp/gptel/gptel-openai-extras hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-openai-extras /Users/johnw/.emacs.d/lisp/gptel/gptel-ollama hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-ollama /Users/johnw/.emacs.d/lisp/gptel/gptel-rewrite hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-rewrite /Users/johnw/.emacs.d/lisp/gptel/gptel-transient hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-transient /Users/johnw/.emacs.d/lisp/gptel/gptel-kagi hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-kagi /Users/johnw/.emacs.d/lisp/gptel/gptel hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel /Users/johnw/.emacs.d/lisp/gnus-harvest/gnus-harvest hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gnus-harvest /Users/johnw/.emacs.d/lisp/gptel/gptel-gemini hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-gemini /Users/johnw/.emacs.d/lisp/gptel/gptel-integrations hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-integrations /Users/johnw/.emacs.d/lisp/gptel/gptel-org hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/gptel-org /Users/johnw/.emacs.d/lisp/alert/alert hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/alert-20221213.1619/alert = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/ox-odt hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-odt = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-ml-20250514.2314/init hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-sql-20240819.2145/init /Users/johnw/.emacs.d/lisp/regex-tool/regex-tool hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/regex-tool-20170104.1918/regex-tool = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/elsa-20250316.29/Elsafile hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/trinary-20230301.2044/Elsafile = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/eat-0.9.4/eat hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/eat-0.9.4/term/eat = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-vcard-20250325.1512/styles/flat/functions hides = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-vcard-20250325.1512/styles/tree/functions = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/site-start hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/site-li= sp/site-start = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/external-completion-0.1/external-completion hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/external-completion = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/jsonrpc-1.0.25/jsonrpc hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/jsonrpc = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/transient-20250530.2040/transient hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/transient = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/peg-1.0.1/peg hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/progmodes/peg = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/xref-1.7.0/xref hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/progmodes/xref = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/project-0.11.1/project hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/progmodes/project = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/eglot-1.18/eglot hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/progmodes/eglot = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/flymake-1.4.1/flymake hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/progmodes/flymake = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-exp hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-exp = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-emacs-lisp hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-emacs-lisp = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-css hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-css = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-lob hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-lob = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-irc hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-irc = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-forth hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-forth = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-macs hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-macs = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-version hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-version = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-scheme hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-scheme = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-C hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-C = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-capture hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-capture = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-ref hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-ref = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-clojure hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-clojure = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-mouse hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-mouse = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-persist hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-persist = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-ctags hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-ctags = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-entities hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-entities = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-archive hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-archive = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-screen hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-screen = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-bibtex hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-bibtex = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-haskell hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-haskell = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-loaddefs hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-loaddefs = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-table hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-table = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-eww hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-eww = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-man hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-man = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-org hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-org = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-num hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-num = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-plot hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-plot = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-rmail hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-rmail = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-awk hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-awk = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-groovy hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-groovy = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-octave hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-octave = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-faces hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-faces = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc-biblatex hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc-biblatex = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-colview hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-colview = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-R hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-R = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-refile hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-refile = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-timer hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-timer = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-mobile hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-mobile = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-fortran hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-fortran = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-shell hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-shell = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-perl hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-perl = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-sqlite hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-sqlite = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc-basic hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc-basic = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-sed hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-sed = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-list hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-list = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-ruby hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-ruby = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-eval hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-eval = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-habit hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-habit = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-clock hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-clock = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-goto hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-goto = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-html hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-html = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-src hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-src = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-lisp hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-lisp = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-eshell hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-eshell = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-ditaa hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-ditaa = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-pcomplete hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-pcomplete = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-lint hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-lint = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-latex hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-latex = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-sass hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-sass = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-tangle hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-tangle = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-calc hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-calc = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-java hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-java = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-icalendar hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-icalendar = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-mhe hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-mhe = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-attach-git hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-attach-git = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-md hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-md = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-beamer hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-beamer = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-element hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-element = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc-natbib hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc-natbib = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-protocol hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-protocol = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-gnuplot hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-gnuplot = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-tempo hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-tempo = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-latex hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-latex = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-w3m hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-w3m = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-id hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-id = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-man hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-man = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-doi hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-doi = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-feed hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-feed = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-fold-core hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-fold-core = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-julia hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-julia = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-lua hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-lua = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-table hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-table = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-ocaml hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-ocaml = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc-csl hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc-csl = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-gnus hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-gnus = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-indent hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-indent = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-lilypond hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-lilypond = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-matlab hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-matlab = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-datetree hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-datetree = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-docview hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-docview = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/oc-bibtex hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/oc-bibtex = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-python hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-python = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-makefile hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-makefile = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-duration hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-duration = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-agenda hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-agenda = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-dot hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-dot = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-js hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-js = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-publish hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-publish = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-inlinetask hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-inlinetask = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-org hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-org = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-keys hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-keys = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-core hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-core = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-compat hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-compat = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/ox-odt hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-odt = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-info hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-info = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-plantuml hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-plantuml = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-eshell hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-eshell = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-ascii hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-ascii = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-koma-letter hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-koma-letter = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-maxima hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-maxima = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ol-bbdb hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ol-bbdb = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-macro hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-macro = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-fold hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-fold = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-sql hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-sql = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-attach hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-attach = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-cycle hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-cycle = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-processing hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-processing = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ox-texinfo hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ox-texinfo = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-crypt hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-crypt = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-footnote hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-footnote = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/org-element-ast hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/org-element-ast = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/org-9.7.30/ob-comint hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/org/ob-comint = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/supercite hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/mail/supercite = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/compat-30.1.0.0/compat hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/compat = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/track-changes-1.4/track-changes hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/track-changes = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/seq-2.24/seq hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/seq = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/let-alist-1.0.6/let-alist hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/let-alist = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/nadvice-0.4/nadvice hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/nadvice = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/map-3.3.1/map hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/map = /nix/store/fw868mrz90292idbv5shv0nhli6qvcdr-emacs-packages-deps/share/emac= s/site-lisp/elpa/eldoc-1.15.0/eldoc hides = /nix/store/mwy2gfjya1iv262gq75yav8qfpbhpm0l-emacs-30.1/share/emacs/30.1/li= sp/emacs-lisp/eldoc /Users/johnw/.emacs.d/lisp/mcp.el/mcp hides = /Users/johnw/.emacs.d/lisp/mcp Features: (shadow sort gnus-cite gnus-alias footnote jinx mail-extr emacsbug = tramp-cmds easy-kill embark-org-roam embark-org embark-consult embark ffap checkdoc lisp-mnt aggressive-indent flymake highlight-cl highlight-defined highlight-quoted redshank skeleton paredit-ext paredit hideshow highlight-numbers parent-mode pp-c-l rainbow-delimiters = vertico-unobtrusive vertico-flat gnus-async gnus-dup qp gnus-ml my-gnus-score utf-7 = gnus-topic nndraft nnmh network-stream gnus-agent gnus-srvr nnvirtual gnus-cache org-clock dired-aux gnus-dired dired-x eshell-bookmark em-xtra em-unix = em-term em-script em-rebind em-prompt em-pred em-ls em-hist em-glob em-cmpl = em-basic em-alias eshell-z em-dirs esh-mode esh-var eshell esh-cmd esh-ext = esh-opt esh-proc esh-io esh-arg esh-module esh-module-loaddefs esh-util = esh-toggle edit-server font-utils cal-iso org-appear org-pdftools org-noter = org-noter-pdf pdf-virtual pdf-sync pdf-outline pdf-occur pdf-links pdf-isearch = pdf-history pdf-dev pdf-annot tablist tablist-filter semantic/wisent/comp = semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic = semantic/tag semantic/lex semantic/fw cedet pdf-misc pdf-tools pdf-view pdf-cache = pdf-info tq pdf-util pdf-macs org-noter-core org-pretty-table toc-org face-remap ox-pandoc ox-gfm orgit-forge orgit magit-tbdiff forge-repos = forge-tablist hl-line+ hl-line forge-topics forge-commands forge-semi forge-bitbucket = buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github = ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth forge-forgejo = forge-notify forge-revnote forge-pullreq forge-issue forge-discussion forge-topic = yaml eieio-custom bug-reference forge-post markdown-preview-mode web-server web-server-status-codes websocket bindat markdown-mode edit-indirect forge-repo forge forge-core forge-db closql magit-todos pcre2el rxt = re-builder hl-todo async magit-popup magit-bookmark 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 which-func imenu magit-diff smerge-mode diff git-commit log-edit = pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient = magit-process with-editor server magit-mode benchmark magit-git magit-base = org-roam-ext listen listen-vlc listen-lib parse-csv consult-org-roam consult-org-roam-buffer emacsql-sqlite-builtin vulpea-ext vulpea-field = vulpea vulpea-meta vulpea-select vulpea-buffer vulpea-db vulpea-utils = vulpea-note org-review org-projectile org-project-capture = org-project-capture-backend org-category-capture org-real ispell boxy org-protocol org-mime ox-org org-inlinetask org-extra-emphasis htmlfontify cus-edit ox-odt oc-csl = citeproc citeproc-itemgetters parsebib citeproc-cite citeproc-biblatex = citeproc-bibtex citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters = citeproc-proc citeproc-disamb citeproc-itemdata citeproc-generic-elements = citeproc-macro citeproc-choose citeproc-date citeproc-number rst citeproc-context citeproc-prange citeproc-style citeproc-locale citeproc-term citeproc-rt citeproc-lib citeproc-s let-alist queue rng-loc rng-uri rng-parse = rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util = odt ox-md ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox = org-color org-edna org-devonthink org-crypt org-context org-archive = org-bookmark-heading mode-local ob-restclient restclient ob-makefile ob-dot ob-sql ob-C = cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ob-plantuml ob-ditaa ob-latex ob-shell ob-calc calc-store = calc-trail ob-haskell ob-python python ob-emamux emamux vagrant-tramp term = disp-table ehelp tramp trampver tramp-integration files-x tramp-message = tramp-compat shell tramp-loaddefs org-attach-git org-auto-expand org-config org-agenda-random org-roam-dailies org-roam-migrate org-roam-log = org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db org-roam-utils org-roam-compat org-roam org-attach emacsql-sqlite emacsql = emacsql-compiler magit-section cursor-sensor llama vc-git vc-dispatcher bm org-contacts org-capture typo oc-basic ol-eww eww url-queue mm-url ol-rmail ol-mhe = ol-irc ol-info ol-gnus nnselect spam spam-stat gnus-uu yenc gnus-msg gnus-demon = nntp gnus-registry registry gnus-score score-mode gnus-art mm-uu mml2015 = mm-view mml-smime smime gnutls dig rs-gnus-summary gnus-sum shr pixel-fill = kinsoku url-file svg gnus-group gnus-undo gnus-start gnus-dbus dbus xml = gnus-cloud nnimap nnmail mail-source utf7 parse-time gnus-spec gnus-win nnoo = gnus-int gnus-range gnus-harvest smtpmail message yank-media puny rfc822 mml = mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader mailalias sendmail rfc2047 rfc2045 ietf-drums gnus nnheader gnus-util mail-utils range mm-util mail-prsvr ol-docview doc-view = jka-compr image-mode exif diredfl dired-hist dired dired-loaddefs ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi org-link-doi corfu-popupinfo org-ql-ext org-ql-find org-ql-completing-read org-ql-search org-ql-view ov crm org-super-agenda ht f org-ext org-ql peg ts s org-habit = org-agenda-overlay timeout org-agenda org-duration proof-site proof-autoloads = consult-yasnippet yasnippet vertico-quick vertico-directory vertico-repeat corfu-prescient vertico-prescient prescient char-fold orderless cape corfu = consult-projectile vertico-multiform vertico consult-xref xref consult projectile ibuf-ext ibuffer ibuffer-loaddefs completion-preview winner = whitespace-cleanup-mode whitespace wgrep unicode-fonts ultra-scroll pixel-scroll cua-base sky-color-clock color templatel time selected savehist repeat recentf tree-widget wid-edit plstore personal persistent-soft list-utils pcache eieio-base cl persistent-scratch multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines = mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu dom mc-cycle-cursors = multiple-cursors-core advice comp comp-cstr comp-run comp-common move-text midnight inheritenv image-file image-converter grep compile mcp jsonrpc warnings llm-tool-collection gptel-got gptel-rag gptel-prompts ob-gptel gptel-ext corsair project gptel-quick gptel-context gptel-rewrite gptel-transient transient gptel-integrations gptel-org org-element org-persist xdg = org-id org-refile org-element-ast inline org ob ob-tangle ob-ref ob-lob = ob-table ob-exp org-macro org-src sh-script smie treesit executable ob-comint org-pcomplete pcomplete comint ansi-osc ansi-color org-list org-footnote org-faces org-entities time-date noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table org-keys oc org-loaddefs thingatpt find-func = ol org-fold org-fold-core org-compat ring avl-tree generator org-version = org-macs format-spec gptel-litellm gptel-tools gptel-presets gptel-backends = gptel-curl gptel gptel-openai compat epa-file epa derived epg rfc6068 epg-config eager-state direnv diff-mode track-changes dash delsel cus-load = diary-lib diary-loaddefs cal-julian solar cal-dst cal-menu calendar cal-loaddefs calc-units bookmark text-property-search pp autorevert filenotify = agda-input quail diminish org-constants edmacro kmacro uuidgen calc-misc calc-ext = calc calc-loaddefs rect calc-macs auth-source-pass john-wiegley-theme = cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode = use-package-core 2048-game-autoloads ace-mc-autoloads ace-jump-mode-autoloads adoc-mode-autoloads aggressive-indent-autoloads apiwrap-autoloads aria2-autoloads auctex-autoloads tex-site auto-yasnippet-autoloads avy-embark-collect-autoloads avy-zap-autoloads biblio-autoloads biblio-core-autoloads bm-autoloads boogie-friends-autoloads browse-kill-ring-autoloads browser-hist-autoloads burly-autoloads button-lock-autoloads calfw-autoloads calfw-cal-autoloads = calfw-org-autoloads cape-autoloads cargo-autoloads change-inner-autoloads = citar-embark-autoloads citar-org-roam-autoloads citar-autoloads citeproc-autoloads cmake-font-lock-autoloads cmake-mode-autoloads color-moccur-autoloads color-theme-autoloads command-log-mode-autoloads company-coq-autoloads company-math-autoloads consult-company-autoloads consult-dir-autoloads consult-eglot-embark-autoloads consult-eglot-autoloads consult-gh-embark-autoloads consult-gh-forge-autoloads consult-gh-with-pr-review-autoloads consult-gh-autoloads consult-org-roam-autoloads consult-projectile-autoloads consult-yasnippet-autoloads copy-as-format-autoloads = corfu-prescient-autoloads corfu-autoloads csv-mode-autoloads dape-autoloads deadgrep-autoloads dedicated-autoloads diff-hl-autoloads diffview-autoloads = diminish-autoloads dired-rsync-autoloads dired-subtree-autoloads = dired-hacks-utils-autoloads dired-toggle-autoloads diredfl-autoloads direnv-autoloads discover-my-major-autoloads docker-autoloads aio-autoloads docker-compose-mode-autoloads dockerfile-mode-autoloads easky-autoloads eask-mode-autoloads eask-autoloads easy-kill-autoloads eat-autoloads edbi-autoloads edit-server-autoloads eglot-autoloads el-job-autoloads el-mock-autoloads elisp-depend-autoloads elisp-docstring-mode-autoloads elisp-slime-nav-autoloads elmacro-autoloads elpy-autoloads = elsa-autoloads ansi-autoloads emamux-autoloads embark-consult-autoloads = consult-autoloads embark-org-roam-autoloads embark-vc-autoloads embark-autoloads = ement-autoloads emojify-autoloads epc-autoloads ctable-autoloads concurrent-autoloads eshell-bookmark-autoloads eshell-up-autoloads eshell-z-autoloads evil-autoloads expand-region-autoloads eyebrowse-autoloads feebleline-autoloads flymake-autoloads flymake-eask-autoloads flymake-easy-autoloads fn-autoloads focus-autoloads = font-lock-studio-autoloads free-keys-autoloads fringe-helper-autoloads fuzzy-autoloads = gerrit-autoloads git-link-autoloads git-timemachine-autoloads git-undo-autoloads gnus-alias-autoloads gnus-recent-autoloads goto-chg-autoloads goto-last-change-autoloads graphviz-dot-mode-autoloads = haskell-mode-autoloads helpful-autoloads elisp-refs-autoloads highlight-autoloads highlight-defined-autoloads highlight-indentation-autoloads highlight-numbers-autoloads highlight-quoted-autoloads ialign-autoloads iedit-autoloads indium-autoloads company-autoloads inheritenv-autoloads inspector-autoloads ipcalc-autoloads jinx-autoloads jq-mode-autoloads js2-refactor-autoloads js2-mode-autoloads json-mode-autoloads json-process-client-autoloads json-reformat-autoloads = json-snatcher-autoloads key-chord-autoloads keypression-autoloads khoj-autoloads know-your-http-well-autoloads kv-autoloads language-id-autoloads ledger-mode-autoloads lgr-autoloads link-hint-autoloads lispy-autoloads listen-autoloads literate-calc-mode-autoloads lively-autoloads logito-autoloads loop-autoloads lsp-mode-autoloads lua-mode-autoloads m-buffer-autoloads magit-popup-autoloads magit-tbdiff-autoloads magit-todos-autoloads hl-todo-autoloads async-autoloads makey-autoloads malyon-autoloads marginalia-autoloads markdown-preview-mode-autoloads marquee-header-autoloads marshal-autoloads math-symbol-lists-autoloads mc-calc-autoloads mc-extras-autoloads mediawiki-autoloads memory-usage-autoloads minesweeper-autoloads move-text-autoloads multi-term-autoloads multi-vterm-autoloads multifiles-autoloads multiple-cursors-autoloads nginx-mode-autoloads nix-mode-autoloads noflet-autoloads nov-autoloads ob-diagrams-autoloads = ob-restclient-autoloads ob-solidity-autoloads olivetti-autoloads operate-on-number-autoloads orderless-autoloads org-anki-autoloads org-appear-autoloads org-auto-expand-autoloads org-autolist-autoloads org-bookmark-heading-autoloads org-caldav-autoloads = org-contacts-autoloads org-drill-autoloads org-edit-indirect-autoloads org-edna-autoloads org-mime-autoloads org-mru-clock-autoloads org-notifications-autoloads alert-autoloads log4e-autoloads gntp-autoloads org-pdftools-autoloads org-noter-autoloads org-projectile-autoloads = org-project-capture-autoloads org-category-capture-autoloads org-real-autoloads boxy-autoloads org-remark-autoloads org-review-autoloads org-rich-yank-autoloads org-roam-ui-autoloads org-sidebar-autoloads org-ql-autoloads = org-sql-autoloads org-ml-autoloads org-sticky-header-autoloads org-super-agenda-autoloads org-superstar-autoloads org-table-color-autoloads = org-transclusion-autoloads org-vcard-autoloads org-web-tools-autoloads esxml-autoloads orgit-forge-autoloads orgit-autoloads forge-autoloads closql-autoloads outline-indent-autoloads ov-autoloads ox-gfm-autoloads = ox-pandoc-autoloads package-lint-autoloads pact-mode-autoloads pandoc-mode-autoloads paradox-autoloads parent-mode-autoloads parse-csv-autoloads = parsebib-autoloads parsec-autoloads pass-autoloads password-store-otp-autoloads password-store-autoloads pcre2el-autoloads pdf-tools-autoloads pdfgrep-autoloads persist-autoloads persistent-scratch-autoloads = pg-autoloads pkg-info-autoloads epl-autoloads plantuml-mode-autoloads plz-autoloads popup-autoloads popwin-autoloads pos-tip-autoloads pr-review-autoloads ghub-autoloads markdown-mode-autoloads magit-autoloads pcase = prodigy-autoloads projectile-autoloads promise-autoloads protobuf-mode-autoloads python-mode-autoloads pyvenv-autoloads queue-autoloads = quick-peek-autoloads rainbow-delimiters-autoloads rainbow-mode-autoloads redshank-autoloads paredit-autoloads regex-tool-autoloads request-autoloads = restclient-autoloads riscv-mode-autoloads rust-mode-autoloads sbt-mode-autoloads scala-mode-autoloads selected-autoloads separedit-autoloads edit-indirect-autoloads shell-toggle-autoloads shift-number-autoloads simple-httpd-autoloads slime-autoloads macrostep-autoloads smart-newline-autoloads smartparens-autoloads = solidity-flycheck-autoloads solidity-mode-autoloads sort-words-autoloads sound-wav-autoloads deferred-autoloads spinner-autoloads sql-indent-autoloads string-inflection-autoloads sudo-edit-autoloads svg-lib-autoloads swift-mode-autoloads swiper-autoloads ivy-autoloads tablist-autoloads tagedit-autoloads taxy-magit-section-autoloads taxy-autoloads templatel-autoloads terraform-mode-autoloads hcl-mode-autoloads timeout-autoloads toc-org-autoloads track-changes-autoloads transient-autoloads transpose-mark-autoloads tree-inspector-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads ht-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads treepy-autoloads treeview-autoloads trinary-autoloads ts-autoloads tuareg-autoloads rx caml-autoloads typescript-mode-autoloads typo-autoloads = undo-propose-autoloads unicode-fonts-autoloads ucs-utils-autoloads font-utils-autoloads persistent-soft-autoloads list-utils-autoloads pcache-autoloads uniline-autoloads uuidgen-autoloads vagrant-autoloads = vagrant-tramp-autoloads vdiff-autoloads hydra-autoloads lv-autoloads verb-autoloads vertico-prescient-autoloads vertico-autoloads prescient-autoloads vimish-fold-autoloads f-autoloads virtual-auto-fill-autoloads adaptive-wrap-autoloads visual-regexp-autoloads vterm-autoloads vulpea-autoloads org-roam-autoloads magit-section-autoloads = llama-autoloads emacsql-autoloads org-autoloads vundo-autoloads w3m-load w3m-autoloads web-autoloads s-autoloads dash-autoloads web-mode-autoloads web-server-autoloads websocket-autoloads wgrep-autoloads whitespace-cleanup-mode-autoloads window-purpose-autoloads imenu-list-autoloads with-editor-autoloads info writeroom-mode-autoloads visual-fill-column-autoloads xr-autoloads yaml-autoloads = yaml-mode-autoloads yasnippet-autoloads z3-mode-autoloads flycheck-autoloads zoom-autoloads zoutline-autoloads ztree-autoloads 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 cl-seq = eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt gv = bytecomp byte-compile url-vars cl-loaddefs cl-lib 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 kqueue = cocoa ns lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 2344901 1982502) (symbols 48 87115 119) (strings 32 396635 = 186413) (string-bytes 1 11876087) (vectors 16 235499) (vector-slots 8 2840459 1810933) (floats 8 1666 2318) (intervals 56 7769 4228) (buffers 992 113)) -- John Wiegley GPG fingerprint =3D 4710 CF98 AF9B 327B = B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 03 06:12:50 2025 Received: (at 78946) by debbugs.gnu.org; 3 Jul 2025 10:12:50 +0000 Received: from localhost ([127.0.0.1]:44192 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXGvx-0006eq-Ms for submit@debbugs.gnu.org; Thu, 03 Jul 2025 06:12:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38650) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uXGvv-0006eD-FT for 78946@debbugs.gnu.org; Thu, 03 Jul 2025 06:12:48 -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 ) id 1uXGvp-0000xZ-FL; Thu, 03 Jul 2025 06:12: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=lgoEDbqjE0l7ZShXegOse6+3CdR48eWuluxx8THCnaE=; b=TC62GvG7w1PriN5xzlVm IPYg0xF9M1GR3PVbeHmFTZGS8gK4e94X+xtLKwsaXhFveyVH6wFa6/pjIyvc+LTOk/Gdqto5QDIEK 9NMhMN9n7TpuszAfy13jgw0Ruy5DlxoG0EztIh7C8V3LR01gc5nRkl5anrlS36WzLxK+2tWuwFcAd aK68I+ZwS0mM8NiM2RdUaKGRHrqWqMosT9zH7udDXwO93navuHUUPoXNpledUkupiZZqi7ZGE+wZN TLISgrko92Q8sOnGKcXswXgfW6sbpEUajEUWKHh1tRBrAB5xkJ0xYzEEc93S/uYeSRXMwpt4Ml7BM xBTYbuJAa9MatQ==; Date: Thu, 03 Jul 2025 13:12:32 +0300 Message-Id: <86v7o9zipb.fsf@gnu.org> From: Eli Zaretskii To: John Wiegley In-Reply-To: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> (message from John Wiegley on Wed, 2 Jul 2025 12:19:31 -0700) Subject: Re: 30.1; accept-process-output not allowed in threads on macOS References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78946 Cc: 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: John Wiegley > Date: Wed, 2 Jul 2025 12:19:31 -0700 > Cc: eliz@gnu.org, > contact@karthinks.com > > If I run the attached code from the terminal using: > > #+begin_src sh > emacs -batch -Q -l accept-process-bug.el > #+end_src > > It will correctly run forever, processing output from the “yes” command (you > can convince yourself of this by adding a debug statement inside the process > filter, but it will be extremely noisy). > > If you now attempt to evaluate this code in a graphical Emacs running on > macOS, it will immediately stall out. Running Emacs under lldb shows that it > is reporting the following exception continuously: Please elaborate on "will immediately stall". Does it mean it will not "run forever" as in batch mode? If so, what will it do instead? > #+begin_example > 2025-07-02 12:10:23.857272-0700 Emacs[34130:54192679] [General] nextEventMatchingMask should only be called from the Main Thread! This message seems to be relevant, no? Can some macOS expert explain what it means, and how is that related to ns_select? > 2025-07-02 12:10:23.857732-0700 Emacs[34130:54192679] [General] ( > 0 CoreFoundation 0x0000000193d66ca0 __exceptionPreprocess + 176 > 1 libobjc.A.dylib 0x000000019382ab90 objc_exception_throw + 88 > 2 AppKit 0x00000001985baefc -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3068 > 3 AppKit 0x0000000197c0ec64 -[NSApplication run] + 480 > 4 Emacs 0x000000010040f400 -[EmacsApp run] + 100 > 5 Emacs 0x000000010040d35c ns_select_1 + 1080 > 6 Emacs 0x000000010040cefc ns_select + 72 > 7 Emacs 0x000000010036d148 wait_reading_process_output + 4784 > 8 Emacs 0x000000010036bdb8 Faccept_process_output + 1268 > 9 Emacs 0x00000001002cda90 eval_sub + 2252 > 10 Emacs 0x00000001002ce20c Fprogn + 112 > 11 Emacs 0x00000001002ce3b8 prog_ignore + 24 > 12 Emacs 0x00000001002d19ac Fwhile + 132 > 13 Emacs 0x00000001002cd62c eval_sub + 1128 > 14 Emacs 0x00000001002ce20c Fprogn + 112 > 15 Emacs 0x00000001002d108c FletX + 876 > 16 Emacs 0x00000001002cd62c eval_sub + 1128 > 17 Emacs 0x00000001002ce20c Fprogn + 112 > 18 Emacs 0x00000001002d84ec funcall_lambda + 1832 > 19 Emacs 0x00000001002d7618 funcall_general + 288 > 20 Emacs 0x00000001002cf438 Ffuncall + 472 > 21 Emacs 0x00000001003c3c10 invoke_thread_function + 64 > 22 Emacs 0x00000001002d32c4 internal_condition_case + 148 > 23 Emacs 0x00000001003c22dc run_thread + 344 > 24 libsystem_pthread.dylib 0x0000000193c0ac0c _pthread_start + 136 > 25 libsystem_pthread.dylib 0x0000000193c05b80 thread_start + 8 > ) > #+end_example From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 03 08:39:17 2025 Received: (at 78946) by debbugs.gnu.org; 3 Jul 2025 12:39:18 +0000 Received: from localhost ([127.0.0.1]:46649 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXJDh-0001y5-8y for submit@debbugs.gnu.org; Thu, 03 Jul 2025 08:39:17 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:52430) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXJDc-0001ws-8j for 78946@debbugs.gnu.org; Thu, 03 Jul 2025 08:39:13 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3a52874d593so4660365f8f.0 for <78946@debbugs.gnu.org>; Thu, 03 Jul 2025 05:39:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751546345; x=1752151145; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pG7hKAIapWwLjfFBzdGhUf8RZODFRFc9xY68PGq9DCw=; b=D12umTnRyW6t7zIrPbd7DSHreu/Okl7VzDQFCB1JlS4hpU89CIwnIvu1Vak/a0kYcV Rkt4p/v3rHGLcFTMqaqR0JHT0zGIIloI661gzBZCPKpqpBaVYWLt3Ayv7MwruaSbyC3d 1UocUU8I8fpI4t5ecNQLLdeUEowCaSI8si8t39wFsgwgAorRgbZOfvLFAIqF6YjRVwKh QlbP6GFW6ukgI1s91O97Katt+XJPh2d16wGoLEobkBPa3g8wVx/myhB0wR+uENRHgcAS ZTLsWzUmB7UDroAXZgFAqPoe4zw4k5NF3y175atpdJ1IEUSQL7HMIZbRHdwpMGkZZjAO y/WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751546345; x=1752151145; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pG7hKAIapWwLjfFBzdGhUf8RZODFRFc9xY68PGq9DCw=; b=qfKR/MZzPnlFqYl9GQKT0z3PUCgP2rp2R7d/gpMHRtkcBef5RgVcZv/3MUrkTuTu+5 Rqg4nBkFKyigjQtS7N2LTnZYeFvf68qSdwtD9Tl52x30KeEOq0X9lrBX4RdopC9jKdiz HMR2UKSh4D7hgS5FbWEeaopQwqsbUaV3gibcrZFjeolsPJc8u2UH69ghgPjFMnsEUOmK GLJSSphi+YN80fexrrFHm/gh9lYZ8EHZrX3wxDrDtA0ed009j6BXGOUBpEPiDaggopdx aSxEksPseRGioMqsd2DIarnvL5WGuLNnNcH0XA5faui7AEVjBg6hks+FpmPhnyGHqFx4 FTXw== X-Forwarded-Encrypted: i=1; AJvYcCUrKNy8ykZVxwa8LFPp2WhVPv0GoxOqAcEtQ7UaLVLprDRxSNbJ0yWXOKmJdp0y2DMgYvopGQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwGOVdMTWts/wW5rXNkwaAI4Q8AoDsFAjN1a/HIQ3iSoLp/DZh8 xeh7Imkx1EU6Anq3NP4o52xgLhX8ohWZrfals62lMcZYNQQnMJGQmzPk X-Gm-Gg: ASbGncvEosNyxl2043PmDV87+HumohXaHIYpTj4qFBFw7a9/i4UKNDcac+GptvS2+yR 3pOCh++KwOawWp+lYp9Ts7RZvUby9pY7P9ZQlUqG8bmGAZRrGts1oYD4XOuDBHSaQ9U4ntPCxCN Dh9rrVI/iW7E+PC2TN5uhKt3weIUeMC1GO4+NXIE9gbIpJMIeoJiZBNR946VbxFLJtXO0ML6+gU ZbixAqz7xgAaWqwddYiy7I+8ePRTheMLupUqtNJm8u6GENgLf0AJPpbFvST/6v2JBPZrKI0bnjW KtQ76WGY0v8PMYof3fXyMXESwZzQptqiJ7/Rbey7xMYCo7JU+Q== X-Google-Smtp-Source: AGHT+IEjhbfW9p57Be8kv+2/5lt8Fcw/KMAX22dgiDXT94mL7OvHdE37wv3UGfBsBvmpS5au5yYINg== X-Received: by 2002:a05:6000:20c4:b0:3a4:d4cd:b06 with SMTP id ffacd0b85a97d-3b32d4d10d9mr1773426f8f.34.1751546345326; Thu, 03 Jul 2025 05:39:05 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:5cbd:67d5:3501:d739]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a88c7ec6aesm18511288f8f.5.2025.07.03.05.39.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jul 2025 05:39:04 -0700 (PDT) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: <86v7o9zipb.fsf@gnu.org> References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> Date: Thu, 03 Jul 2025 14:39:04 +0200 Message-ID: <87ms9lmot3.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 03 Jul 2025 13:12:32 +0300, Eli Zaretskii said: >> #+begin_example >> 2025-07-02 12:10:23.857272-0700 Emacs[34130:54192679] [General] >> nextEventMatchingMask should only be called from the Main Thread! Eli> This message seems to be relevant, no? Can some macOS expert expl= ain Eli> what it means, and how is that related to ns_select? On macOS only the main thread is allowed to process events, which is why ns_select normally does a whole dance with a separate thread which posts events for the main thread to react to. It=CA=BCs fragile, and should probably be re-written, but nobody has stepped up to do it. John, does it help if you stick something like if ([[NSThread currentThread] isMainThread]) { } around the [NSApp run]; in `ns_select_1'? Robert --=20 From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 03 13:24:58 2025 Received: (at 78946) by debbugs.gnu.org; 3 Jul 2025 17:24:58 +0000 Received: from localhost ([127.0.0.1]:51196 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXNg9-00066H-MF for submit@debbugs.gnu.org; Thu, 03 Jul 2025 13:24:58 -0400 Received: from mail-qv1-xf31.google.com ([2607:f8b0:4864:20::f31]:54520) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXNg5-00064z-Ca for 78946@debbugs.gnu.org; Thu, 03 Jul 2025 13:24:54 -0400 Received: by mail-qv1-xf31.google.com with SMTP id 6a1803df08f44-6facc3b9559so2410206d6.0 for <78946@debbugs.gnu.org>; Thu, 03 Jul 2025 10:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751563487; x=1752168287; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id:from:to:cc :subject:date:message-id:reply-to; bh=D4C1A5yRFdO37uqCr1KXeGZajz8hTU4gazrVEwkQqAw=; b=enGAKskcPHPd/rIXqxfdftd2QZd5MP0flKiNYKn51TnAWqHVjVoVTqRry3oiki5lXr gQTkBbwpAOuZV34T7AkBLxTUv1DUE2FFvMlvR5LBiubJ5MPVoM9SOrCY+NxcwtFYnq5s g6vniwclyl/UgU9+15X55HjRhCnqaHBwvHFmdVsqEfAmNtEeqcCYZU8TXuKgJyeqTbYi T325FZ4Z82OO2Y8QEFiB2TiPTG0zq5pbmYwjGk19UZZXEeqQKBkpE43oP1/yaixuN0Xj ExqmbNFO1H3BIr2Sgh8QRq2wFM4TEGU1Ley7+BaFpbTNx3f36S1mA3NOSSzvZJYlOzuX fR/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751563487; x=1752168287; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=D4C1A5yRFdO37uqCr1KXeGZajz8hTU4gazrVEwkQqAw=; b=cbIWQExw/iR35jLETwGQYgLIVLid+LhAJyVDXHi0czy/Kc1s+ATVig7lqYHyOBQrns 6Y3RSQ49g9XVY9QiBYBKskFiYNty3FH/7BXbC5f0ssF2ml7HajRz2vrQRpL5fTxmINTe 3H7col4LEJi8T56SZ0d6t4u+HZId5XBTxylftieXR40vuQPXgpaVHZFSjmdTjxY2/cJt VhA6Q7h+/4OGUbp4OrVbp5A099ZbB8SO3oGLN0LDu8KPnEWOBDDc9VbdfKJpte0G9448 zsZhcDTQLCDZf4Ed2Ffe3H4LFp8zfhrQb3IqM2tMt2WP4VYXISzzKZJwzUrK+wetzB2w UQpQ== X-Gm-Message-State: AOJu0YxJYZCy5FmA4INskAn3a8hpUceyT27ZikTEyNSbg5ILbsM50HWY qyHO4zpvADyJYZIlqgE9L2veQvkcKKh/mY66G+WS/0EF+kvLapfAQG+swHDE7Q== X-Gm-Gg: ASbGncs68ci/pet0t8KbBF++EpM7T04qoeWvhPUDW50cl/NYRAXDz8QcJ5N538ViqC6 fueGXldHEvNU1ZTBoJinYQN6yXQyKTnBI11QbTYEozxn7XkeHR5X8dLIk4qZtjPaqElKHzenUh2 9m2Py6UHOta+LHhp2iDPIvU7MwmlhEALmXKCoj/vOZNsDMUvVPZ8xRoB4IzZFqCIfpVMfHbGjHJ VQwmQGlFy5gGFxtdFmtt2/do+rzu8W6wGXMNcpJa3q/S3qUkIJvmb7WHuHLiUG2fOMztEIddP0f gBvHvdgltILKIN0Fvi6aDOyKIa1FrIfWdcx6YGl/gk2+mXSkH67n9/bP4P+GR46/sZ/xBCSbVT7 YWTFA6jIuLvKy71pmwTcg9t4jAKOFmytRSflRuXtXJCvih8N3DQ== X-Google-Smtp-Source: AGHT+IFyF74/Ah/3pvFGDhyoAg1uidgOodHdjhZbYDW05wqFa/HFAOt4xjxp1x5DMuaItRSwKKcdnw== X-Received: by 2002:a05:6214:1c46:b0:6fa:ce27:5975 with SMTP id 6a1803df08f44-702bc91da92mr77042026d6.22.1751563487133; Thu, 03 Jul 2025 10:24:47 -0700 (PDT) Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com. [103.168.172.201]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-702c4d5111csm430026d6.67.2025.07.03.10.24.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jul 2025 10:24:46 -0700 (PDT) Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfauth.phl.internal (Postfix) with ESMTP id EAA25F40066; Thu, 3 Jul 2025 13:24:45 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Thu, 03 Jul 2025 13:24:45 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddvtdekjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufgjfhffkfgfgggtgfesthhqredttderjeenucfhrhhomheplfhohhhnucgh ihgvghhlvgihuceojhifihgvghhlvgihsehgmhgrihhlrdgtohhmqeenucggtffrrghtth gvrhhnpeetkefhgfeuvdekhfelveffvdefudelgfetueelvdeivdegffekvdejgeefvdek hfenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehjoh hhnhifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdeikeelgeeifeekgedq udejjeehfeekudeiqdhjfihivghglhgvhieppehgmhgrihhlrdgtohhmsehnvgifrghrth hishgrnhhsrdgtohhmpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopegtohhnthgrtghtsehkrghrthhhihhnkhhsrdgtohhmpdhrtghpthhtoh epjeekleegieesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopegvlhhiiies ghhnuhdrohhrgh X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 3 Jul 2025 13:24:45 -0400 (EDT) From: John Wiegley To: Eli Zaretskii Subject: Re: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: <86v7o9zipb.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 03 Jul 2025 13:12:32 +0300") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> Date: Thu, 03 Jul 2025 10:24:44 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> Eli Zaretskii writes: >> If you now attempt to evaluate this code in a graphical Emacs running on >> macOS, it will immediately stall out. Running Emacs under lldb shows tha= t it >> is reporting the following exception continuously: > Please elaborate on "will immediately stall". Does it mean it will not "r= un > forever" as in batch mode? If so, what will it do instead? By stall I mean it shows a =E2=80=9Cspinning cursor of death=E2=80=9D and w= ill never recover. Meanwhile, if I am running under the LLDB debugger, I see the exception I h= ad posted being repeated continuously for as long as Emacs is running. >> #+begin_example >> 2025-07-02 12:10:23.857272-0700 Emacs[34130:54192679] [General] nextEven= tMatchingMask should only be called from the Main Thread! > This message seems to be relevant, no? Can some macOS expert explain what= it > means, and how is that related to ns_select? Yes, I think this is entirely relevant. :) I will try Robert=E2=80=99s sugg= estion next. John From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 03 19:00:39 2025 Received: (at 78946) by debbugs.gnu.org; 3 Jul 2025 23:00:39 +0000 Received: from localhost ([127.0.0.1]:53501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXSuz-0005eP-U5 for submit@debbugs.gnu.org; Thu, 03 Jul 2025 19:00:39 -0400 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]:42037) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXSuw-0005dC-JA for 78946@debbugs.gnu.org; Thu, 03 Jul 2025 19:00:35 -0400 Received: by mail-qt1-x82e.google.com with SMTP id d75a77b69052e-4a58d95ea53so5272671cf.0 for <78946@debbugs.gnu.org>; Thu, 03 Jul 2025 16:00:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751583628; x=1752188428; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id:from:to:cc :subject:date:message-id:reply-to; bh=SDmN8PQ6XLCJrkLnQhhZyAwGE9byv1Sh+ZRuUuI8gZo=; b=WO6yW/UwRRZ0cfGkkZM12cJLJd0KJTfjLUa8YGA2HpicT7VBHEqN9jShx3uX9qb/8T gKJA/IaoesExIp/mIsdEGhY3d6Wl3HNIEBF3pVuUKGKImBoomQJn7nJfjImY9x1zCG0U b/dTmNUwMTUWk6Tna5f27yf+TltyV3CzsxPFXo9FpeZHjdMsHyLFotJiY6kNhISWxRLg U//mKpOQWqa8C0rUwDWMSUguiO2Vq+YzqVUj5Ygp2H67+smC72hIR3h6aXSM+8erECD1 ajf51v4/4B7+1u1gXjUfolSETr9GVlcVBmFuPVD/69nfBRMWIgM8TFKz/170QaW+QyDU b1bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751583628; x=1752188428; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SDmN8PQ6XLCJrkLnQhhZyAwGE9byv1Sh+ZRuUuI8gZo=; b=a3b/9STKPgvEs+wq90SUB0/BRLb/V52E40B3qtTc4z38RaRwgHjiDd7CQXMOagtBEU 6WsaojxVf/aFh5oTw6F0Df2dBepI68ttYx5a5AECQhXLQyaW4N0b/RP/1ePUsQ0EuYy6 ruFNTYQiFCpDYOYbIPkTkW5UX3XUVHh6jWGMD7ovnF5bzaVH87b7i/oX9KsZ9PWInS4x 4iWnDtaSUETkA7UAyTLXn8zAmytNw7iHjMV6lrFVNhQPfqPxrH+p6Zv2TGKylBT584ll ko+3dnqO+DGf0+D5p8bJhOu349osZ4SzlHMS7iSGfwr+SC/K0RsBdnSidYphZTVUEyTe xr9w== X-Forwarded-Encrypted: i=1; AJvYcCXn2jG3MaMTD2IPr0rdVQOYOPoIijxFDFtPYTVPIZp21ZMnTyycvgb1elhpIOTa3ALfGbQfGw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwNR4Jcxbptno7cwbwKLlq5ijOGE53H3hOXiKWh1UApNR96rY38 3CR34qm1pJStggDPqj/MB2CqjvNNJ5caCynyfwvbKUNnCL2AUyzvZY8q9/FL7A== X-Gm-Gg: ASbGncshvAuwVTeY2Z0UN3nzALuJP8icQ7fVJHh7aYatnXkWSnFoVfTukuBWsD4HIsP GnyxDV1VSHdZ1jw+CMllgzGhYpgMdZqY2bJIEWCLROUciIlisW9XmBdewbbSWWYLX9LEG/RedKm tV9yYopalSWm9O9x8dnCxLtUO+TO2xrT+m1qAr5GDBgfyax/ZDhEw9tEAooP29awTPQ+yYWG4I6 ZGNf2KDNK1L3/jitam2WWZu4pTp1iDzNS6xWdry/wEDURkaoAcl9KOhqD3hMXSmmgNWYlR/Bnfa bxrVHrv+LyetcU1PbqGHwKD19zUb97tyicJn3FCHlq8vgkE64TdlFoJ1Lyas89hmsSolPa8t+xj daCgL5FG1hG44WyF5WdkVMojERf3z9Xztb8dPcICMUAz625EI7A== X-Google-Smtp-Source: AGHT+IF0QVxe9wCHzSMWDYGCf11hEoIGZBWwjxQ2G3AFlxOB8FxS3q2/D+VycQ1t2RkqpRG+Kc3h+w== X-Received: by 2002:a05:622a:355:b0:4a7:817e:c345 with SMTP id d75a77b69052e-4a9957f4213mr12499251cf.24.1751583627779; Thu, 03 Jul 2025 16:00:27 -0700 (PDT) Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com. [103.168.172.201]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d5dbd946adsm63040085a.18.2025.07.03.16.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jul 2025 16:00:27 -0700 (PDT) Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfauth.phl.internal (Postfix) with ESMTP id 1FC52F40067; Thu, 3 Jul 2025 19:00:26 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-05.internal (MEProxy); Thu, 03 Jul 2025 19:00:26 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddvudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufgjfhffkfgfgggtgfesthhqredttderjeenucfhrhhomheplfhohhhnucgh ihgvghhlvgihuceojhifihgvghhlvgihsehgmhgrihhlrdgtohhmqeenucggtffrrghtth gvrhhnpeetkefhgfeuvdekhfelveffvdefudelgfetueelvdeivdegffekvdejgeefvdek hfenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehjoh hhnhifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdeikeelgeeifeekgedq udejjeehfeekudeiqdhjfihivghglhgvhieppehgmhgrihhlrdgtohhmsehnvgifrghrth hishgrnhhsrdgtohhmpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopegtohhnthgrtghtsehkrghrthhhihhnkhhsrdgtohhmpdhrtghpthhtoh epjeekleegieesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopegvlhhiiies ghhnuhdrohhrghdprhgtphhtthhopehrphhluhhimhesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 3 Jul 2025 19:00:25 -0400 (EDT) From: John Wiegley To: Robert Pluim Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: <87ms9lmot3.fsf@gmail.com> (Robert Pluim's message of "Thu, 03 Jul 2025 14:39:04 +0200") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> Date: Thu, 03 Jul 2025 16:00:23 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> Robert Pluim writes: > John, does it help if you stick something like > if ([[NSThread currentThread] isMainThread]) > { > } > around the > [NSApp run]; > in `ns_select_1'? Hi Robert, With this change, I=E2=80=99m able to run the tests successfully 10,000 tim= es in my interactive Emacs on macOS. John From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 04 02:21:36 2025 Received: (at 78946) by debbugs.gnu.org; 4 Jul 2025 06:21:37 +0000 Received: from localhost ([127.0.0.1]:56118 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXZnj-0007nv-SP for submit@debbugs.gnu.org; Fri, 04 Jul 2025 02:21:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54608) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uXZnf-0007m4-3I for 78946@debbugs.gnu.org; Fri, 04 Jul 2025 02:21:33 -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 ) id 1uXZnZ-0001RM-38; Fri, 04 Jul 2025 02:21:25 -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=sGWovvLoQa7OiIIH+sNY5t/3uvlxwvMUre22kZnw+fI=; b=aswN5PWQJffka7RPUiii VT/Fj863bFQcmBl2SF7Qqm9fGXFUMPITBv+HCi4SlVhdkfGJjqBUS3hgn+poUqOESObW2bN7zUUha 3zYBIcQoZOfXdGVQeMeKF+4qD5HRehTe/uaelngwZfzwy4hJEkN3TGF7ZwQ2Tm4GMW4IUSX3QxsBv Y1iApSyoB/TqsFa63bqAUi9jxgYLTnljS/l7/SvMJQ47XceHb4c6nYqZ/y7DMkX8nJEqRF3Nx0fPT tom0pVeE3y03L5o7A7q3fc73MfOhHy+NDcBNnxfm7OcdXe9IgILS+whK5KtgrgLufMGiuqvELsxzQ lpEjVcDvRcSyjw==; Date: Fri, 04 Jul 2025 09:21:22 +0300 Message-Id: <86cyagzdb1.fsf@gnu.org> From: Eli Zaretskii To: John Wiegley In-Reply-To: (message from John Wiegley on Thu, 03 Jul 2025 10:24:44 -0700) Subject: Re: 30.1; accept-process-output not allowed in threads on macOS References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78946 Cc: 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: John Wiegley > Cc: 78946@debbugs.gnu.org, contact@karthinks.com > Date: Thu, 03 Jul 2025 10:24:44 -0700 > > >>>>> Eli Zaretskii writes: > > >> If you now attempt to evaluate this code in a graphical Emacs running on > >> macOS, it will immediately stall out. Running Emacs under lldb shows that it > >> is reporting the following exception continuously: > > > Please elaborate on "will immediately stall". Does it mean it will not "run > > forever" as in batch mode? If so, what will it do instead? > > By stall I mean it shows a “spinning cursor of death” and will never recover. What does it mean in terms of what the Emacs threads do at that time? I don't think I understand that from the fact that you see that spinning cursor. Does Apple document when it is shown? From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 04 02:34:16 2025 Received: (at 78946) by debbugs.gnu.org; 4 Jul 2025 06:34:16 +0000 Received: from localhost ([127.0.0.1]:56146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXZzz-0000pb-Qp for submit@debbugs.gnu.org; Fri, 04 Jul 2025 02:34:16 -0400 Received: from mail-qk1-x731.google.com ([2607:f8b0:4864:20::731]:47550) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXZzx-0000p5-9V for 78946@debbugs.gnu.org; Fri, 04 Jul 2025 02:34:14 -0400 Received: by mail-qk1-x731.google.com with SMTP id af79cd13be357-7d412988b14so61475585a.3 for <78946@debbugs.gnu.org>; Thu, 03 Jul 2025 23:34:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751610847; x=1752215647; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id:from:to:cc :subject:date:message-id:reply-to; bh=OX5DX/xOVXAxVkmSHAhfQQMpvw+yR5ReAua9ZnL70RY=; b=VwP9Ll3VMHoyjRwnAdJ26ibqAfITHYY9g3YcOtV0MjFySVWDBNEj+iV3pQiZwMAFyu nxfyL0qQ0Z5nUV9vfSfDU/yGg5jT6Jp5cNPGpWUFS67a59Kf2xg4ugUPz5+wrNCO1myk 99AF3IU4aRfVPRgmjCDafZZti1bLsx/Hsx785asBb2/x4nqq7vDX4vOSIuBpBdKuh7z7 BoBE6dqMouoT6JKINIRpKOUY4OSjoFLUcx/HgKK8RQw+oCW59XLG8k64F0ncck32/1A7 wHBvscNtrJO4IK2AH5WYmZY7V+e7yco+7xCEuPuHyD8sSMqtpsyCWWUNYChh3EzilzoA Ukbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751610847; x=1752215647; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OX5DX/xOVXAxVkmSHAhfQQMpvw+yR5ReAua9ZnL70RY=; b=E/bgs+BlqDQLtUsizxa82R9sVTmX+dCBMSOsVtmFqUlBp8Z6lo5es15qC0E58RmCpp NIv7+JEKqBE5bWH/bQ5xFzofuE4/E7wqbXsw2K7L83srkzp/CvjCc5o3G3RfGVpM/0EK SkAeP/tcu4okEvmv0GNt2CCFsXhQoirVkmVs/WqJXXhHI3zv9Uw3tlHUoOBDxh+ldqLw RIF9Ie47o31SMqK0oUazBQXTbnWbMwjNChM7ygbxtCnUUIp2CbDMMkPA+SUiic/4Q7c0 cg81UtvGTGX6iqzS5iZtSEZTygmowRYDcWSk65lzQcIoVPw8Q1D2tzuAotZfW2FlnkuJ dm+w== X-Gm-Message-State: AOJu0Yz9fjEnponKVOq/Iv+iHajEMmGPtbbfUJDr7b5a/kcoLw+RliDL 2af4DJwUPSb98n5dG1VDIwu6SutgM6GC9FrKkrTidcXVUSRHN7If1JAv2wnIig== X-Gm-Gg: ASbGncvAa3srOFYj7VbiimoFSPXLvZSi7P4AFnkeDU762/cg14gILM9qO+n+T7fhCYB 2JXBD4FQRtZRJlqffc65FGDmQl6nnfyNdhAdolu8sSjP6TCfLIiTrq/t7A5bsDb3uGrsV87hdyu BVXIOxQgCtR6bDdOcXQFSVMEOk42NzUFsNiBeGZiKh6kwzfVn2T7BCjh6EkSwn9wiosuVAvqOFs ff8ZP2uBIDnF8BYo73iINFS+LHm3BTdAa+ubVbRUyJkeOxHCnPlgCX2Gv4RRBKCjFwGyexrSDSt 78KyNj+mgtEhh0TN8vm/V8/PJYV6Vcs3AaP08VudqPasR/1GWWkxA2FN5J5kbYCkbXoEO/KK/1v 2bWNvQczD88wD2boplEJYxEkyX2bvUScNEOcRZecgTiJL8wdx4Q== X-Google-Smtp-Source: AGHT+IFQyE9n5BcyeONciHIXVWRhCaL3AYyYqYA3/HlKe4nltxhM+YBUTEVhRW6apoK6MorTu/8URQ== X-Received: by 2002:a05:620a:1707:b0:7d2:15e:1f9d with SMTP id af79cd13be357-7d5ddc930f5mr178759785a.53.1751610846931; Thu, 03 Jul 2025 23:34:06 -0700 (PDT) Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com. [103.168.172.201]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d5dbeb2318sm100851185a.107.2025.07.03.23.34.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jul 2025 23:34:06 -0700 (PDT) Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfauth.phl.internal (Postfix) with ESMTP id E7D9BF40066; Fri, 4 Jul 2025 02:34:05 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Fri, 04 Jul 2025 02:34:05 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddvvdeghecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufgjfhffkfgfgggtgfesthhqredttderjeenucfhrhhomheplfhohhhnucgh ihgvghhlvgihuceojhifihgvghhlvgihsehgmhgrihhlrdgtohhmqeenucggtffrrghtth gvrhhnpeetkefhgfeuvdekhfelveffvdefudelgfetueelvdeivdegffekvdejgeefvdek hfenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehjoh hhnhifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdeikeelgeeifeekgedq udejjeehfeekudeiqdhjfihivghglhgvhieppehgmhgrihhlrdgtohhmsehnvgifrghrth hishgrnhhsrdgtohhmpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopegtohhnthgrtghtsehkrghrthhhihhnkhhsrdgtohhmpdhrtghpthhtoh epjeekleegieesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopegvlhhiiies ghhnuhdrohhrgh X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 4 Jul 2025 02:34:05 -0400 (EDT) From: John Wiegley To: Eli Zaretskii Subject: Re: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: <86cyagzdb1.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 04 Jul 2025 09:21:22 +0300") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <86cyagzdb1.fsf@gnu.org> Date: Thu, 03 Jul 2025 23:34:04 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> Eli Zaretskii writes: >> By stall I mean it shows a =E2=80=9Cspinning cursor of death=E2=80=9D an= d will never recover. > What does it mean in terms of what the Emacs threads do at that time? I > don't think I understand that from the fact that you see that spinning > cursor. Does Apple document when it is shown? I don=E2=80=99t know what Emacs is doing at that time, because all I see is= a frozen frame and a colorful spinning cursor, and in lldb I=E2=80=99m seeing an exc= eption being reported over and over again. I have no further information, unfortunately. Applying the fix that Robert suggested resolves the problem, so I think it= =E2=80=99s pretty clear that what=E2=80=99s happening is that a call is being made tha= t can only happen in the main thread. John From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 04 07:46:33 2025 Received: (at 78946) by debbugs.gnu.org; 4 Jul 2025 11:46:33 +0000 Received: from localhost ([127.0.0.1]:58686 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXesB-0000FH-Ib for submit@debbugs.gnu.org; Fri, 04 Jul 2025 07:46:33 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:48330) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXes7-0000Dp-Fy for 78946@debbugs.gnu.org; Fri, 04 Jul 2025 07:46:28 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4531e146a24so5396905e9.0 for <78946@debbugs.gnu.org>; Fri, 04 Jul 2025 04:46:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751629581; x=1752234381; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nhQKpMzI8X+eaQtwabAbogeuP6VwR9/fsIDqKSzNp+w=; b=AGEql33notM+riCP5V0Nto8cD+lZkx4K0ML3bwUliFFC0wn6KLTVuADJShDEs2aQjx krmcV3C/QiJ1g23I30Cgs8p0rKJDW0wlX2NbRFpSW5g5diXG0ExJQgtTC/rs08WUL3Jo C2+qwE9NEJYkbU9kjoRk4FILBUzR0cdfEFAmJiQL37mRIEvUmQzDuqyrFpRpcpc6N1DN oKasMX1qclsTztL6JGdCEraY57CIDTurwIFP1fMIFtmW15LcWg9BKTvZO1eQe6nc5SKP yAbKffM4tTOA/bi7xEWAYSpn/Wp7ZQkz3uKfTgKjNGzZNO8A1KfheAAABAK3isu9ITKa Pdaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751629581; x=1752234381; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nhQKpMzI8X+eaQtwabAbogeuP6VwR9/fsIDqKSzNp+w=; b=tEdm9OPFrXjtrNB+V15QdxGEH30RbeDtSC0If6w48/iF2ByEiBjZjLBqHzpb70YuW9 F5n2MZe8zeXXSZujNaimvpa7bI1bwWTFJ77/KWZeK0GLPPLRAY+49ojyF5NIMbwFvHZB 5wXlMIbCfWHgyhzHRuaPeYkJCo6ZqpkLQV5Y5AKfk9hSoJRxSxydo9ZrihiMlT0xZQLF 8lh1Flds26kwACEoVSI6J4Ukz8jeqGUwoJIBL7auy2PsQrASTVA2cuCrqBcfVpOW31f9 wWagv6BzTpubWNuVdVb+5tbuVOTKiKlMfgLAwIET3of3EBP4EMhsMYvvqW1GEPK63y4b IVkQ== X-Forwarded-Encrypted: i=1; AJvYcCV5UwkH7t13KxHoBSVN7Q4Ep5REbUfqFSCLul6oj+4TETkvPxDaIJlUrq/YUJwaAB+XZN0CEw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyDnPlDwc/qPxVMFYrUbXdHk4NzO+mK6tI8yeFnTn1KktppFJDW XjaCLyrnXvYKw+dFsilw1qdcI9IqRiZaNqfE27lnWaCfUHh4DbUC/pUq X-Gm-Gg: ASbGnct7AsKDTHH0AXsrup8BNwljoIZMfRlkmoxwH1b39TAzkOucbtiAtKHTMd5lcLL /HMp+V7VINt3q3TIRa5/jJ7ArHawK5IE5z3pXue2NnO0w4QkABJbvnolH2/zA7sNm1fmuN1ERes sFlDiVK6DZhzZlbOXOUBE6++oyY2eWK+pjrRTad7H77Q23NgxxbF3TZkDFMtjHjxFbIlRtLAzpl 4IYjWyC14EazHM5O0WQcGiH7HFrmNmQF2AingLh/hVXQeKydJaC4Qo4oIIGfh2mPkE9MUcKmTOW x3lsPduwm6x4o8DjC/ulg3uLJI8eUylaDJ1Yj74tTpgFcEAtabKFDgWDYYiH X-Google-Smtp-Source: AGHT+IFgEnzdzLhRkkcPjLoUcw8hSNNhIXYDS68F1WZKk3AB/XEV5mq8zfVzByNoqq9ZEiemR5qFGw== X-Received: by 2002:a05:600c:1f12:b0:442:dc75:5625 with SMTP id 5b1f17b1804b1-454b31091dfmr21717505e9.5.1751629580766; Fri, 04 Jul 2025 04:46:20 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:96ac:db47:9101:6663]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-454b1628ff9sm24374805e9.11.2025.07.04.04.46.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Jul 2025 04:46:20 -0700 (PDT) From: Robert Pluim To: John Wiegley Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> Date: Fri, 04 Jul 2025 13:46:19 +0200 Message-ID: <87ikk8mb5g.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com, Alan Third X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 03 Jul 2025 16:00:23 -0700, John Wiegley = said: >>>>> Robert Pluim writes: >> John, does it help if you stick something like >> if ([[NSThread currentThread] isMainThread]) >> { >> } >> around the >> [NSApp run]; >> in `ns_select_1'? John> Hi Robert, John> With this change, I=E2=80=99m able to run the tests successfully = 10,000 times in my John> interactive Emacs on macOS. That=CA=BCs encouraging. Alan, does this change make sense? (I=CA=BCve swap= ped out what little I know about the macOS event loop =F0=9F=98=80) Robert --=20 From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 04 16:20:18 2025 Received: (at 78946) by debbugs.gnu.org; 4 Jul 2025 20:20:18 +0000 Received: from localhost ([127.0.0.1]:35394 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uXmtN-0005Tt-SE for submit@debbugs.gnu.org; Fri, 04 Jul 2025 16:20:18 -0400 Received: from dane.soverin.net ([185.233.34.39]:49021) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uXmtK-0005Rf-8f for 78946@debbugs.gnu.org; Fri, 04 Jul 2025 16:20:15 -0400 Received: from smtp.soverin.net (unknown [10.10.4.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4bYlP426hMzqJt; Fri, 4 Jul 2025 20:20:08 +0000 (UTC) Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.100]) by soverin.net (Postfix) with ESMTPSA id 4bYlP359KhzQ4; Fri, 4 Jul 2025 20:20:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=idiocy.org; s=soverin; t=1751660408; bh=p1baOInfFwczho8L2Wtwe37YsBX7M/JfsC60h3zVz/Q=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=BhhiDDHPJKnVhGbeUspAEjmnJzqmFviAd9Ny+PDJoFhYpQS9219l2muxYS+gdwbsv d7+qdPkoSMDJ2KEwA3uAW9R2gZPlP16Mjd7C82mtfMiL8oT6CDXAa1aZWEd/DReE0t TejBrrHPd0yID9+YvrULdyyoOpaUpPRXLjBhS4Oy0ZTL/O5w+GdiVPkCFMLAjNlxfG 7YKULLrE0mF7PYGRYXeWurSoguFmYfxD3qgqQd4Im/4i6JvsYgJZ8S/v1R0uEJjLcC 5J1LtuoZQVOlqrxmI1Idf9biHPgvpaGIsyO6E1fWImGsLJGYV7Z5YlWs+eBurRG789 d+vnttTve1miw== X-CM-Analysis: v=2.4 cv=UsCZN/wB c=1 sm=1 tr=0 ts=68683778 a=UbsBXRcqaZ6D9kgPt/Dvnw==:617 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Wb1JkmetP80A:10 a=pGLkceISAAAA:8 a=ppacTjg24rUxpE874MgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=9MSFP0l5Dcwi9NrB_JPx:22 X-CM-Envelope: MS4xfLSWQNC6lPUVniLYXcJENBoFteA5DAkp/DlizI27PYONy3Mke0NDBKN47KojCb89pRjiCPZGCbp3IxdbrSnxpGPmzAt0jsm5lnE1PWVhaAYY5dBRA709 7N9oE4Rb22FoBqNf/sD9Y4jONghuMKZNOUKuavVj9q8Y0+QjhtfViSlwXhwjsxqLx2+iuYxKQHl0yczsyTFzTykJVaAF2AD5INdrAJ+JlLqwRM0VTVyKDpn+ m9QJoI7zpV72z+miBxrFQXzgyhl4pIgH2OCz78248uspsNhXtj99Vtsl4Ox72/ZA+RYoUDv7vAmCyinAkojGhQ== Received: from localhost (faroe.holly.idiocy.org [local]) by faroe.holly.idiocy.org (OpenSMTPD) with ESMTPA id 8565c429; Fri, 4 Jul 2025 20:20:07 +0000 (UTC) Date: Fri, 4 Jul 2025 21:20:07 +0100 From: Alan Third To: Robert Pluim Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS Message-ID: Mail-Followup-To: Alan Third , Robert Pluim , John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> <87ikk8mb5g.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87ikk8mb5g.fsf@gmail.com> X-Spampanel-Class: ham X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) On Fri, Jul 04, 2025 at 01:46:19PM +0200, Robert Pluim wrote: > >>>>> On Thu, 03 Jul 2025 16:00:23 -0700, John Wiegley said: > > >>>>> Robert Pluim writes: > >> John, does it help if you stick something like > > >> if ([[NSThread currentThread] isMainThread]) > >> { > >> } > > >> around the > > >> [NSApp run]; > > >> in `ns_select_1'? > > John> Hi Robert, > > John> With this change, I’m able to run the tests successfully 10,000 times in my > John> interactive Emacs on macOS. > > Thatʼs encouraging. Alan, does this change make sense? (Iʼve swapped > out what little I know about the macOS event loop 😀) Not really... The whole thing is a mess. The return here: if (![NSThread isMainThread] || (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0)) thread_select (pselect, nfds, readfds, writefds, exceptfds, timeout, sigmask); Was removed and I don't think it should have been, but it was to prevent freezes, apparently... I don't know or recall how this helped, it looks completely wrong to me. Surely that thread_select call should return a result? Sorry, this hasn't been much help. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 15:12:42 2025 Received: (at 78946) by debbugs.gnu.org; 6 Jul 2025 19:12:42 +0000 Received: from localhost ([127.0.0.1]:58798 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYUn3-0006qV-Cu for submit@debbugs.gnu.org; Sun, 06 Jul 2025 15:12:42 -0400 Received: from mail-il1-x136.google.com ([2607:f8b0:4864:20::136]:46289) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYUn1-0006pJ-1i for 78946@debbugs.gnu.org; Sun, 06 Jul 2025 15:12:39 -0400 Received: by mail-il1-x136.google.com with SMTP id e9e14a558f8ab-3ddda0a8ba2so26249485ab.0 for <78946@debbugs.gnu.org>; Sun, 06 Jul 2025 12:12:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751829153; x=1752433953; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pibAhOPEvUJblcCkfixRDGdEH1MaQUkhyd1u7LRhyLQ=; b=Nq4WEdqYngDfJFRUspIChy64h+AC3HBphh6eJqQch1jgR0wYVT2ywGT87MZo2j3Z/g giArhb0FdqlXMQWVwvBQzntwKFlbmsg+YUo4j+Hs8gHGdpXzJqlnishWEYSrW6pr42YR tMJu4T6ozR5riyt3zLTUT/+twi6A1C1wzP8q332KAcfe+qwcdQQHG602jp19PfG310xW NcSF7NA9HHSCbjZcuxIerEqyIvDRGMnUUqRy0+jLX7qeFP2rIrUApF/7CgVG8eD6yVCI BJWT+8B952rj0AAwWPhMYkYn4FzBxKXpP0lWx3utyNW3pX6ORIdvQ+eY8r1fQM2wrkDE m3rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751829153; x=1752433953; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pibAhOPEvUJblcCkfixRDGdEH1MaQUkhyd1u7LRhyLQ=; b=kCf+OY41aPN8W7xBGE/N4aCwBZasoSakeOaRI/AGEyoU/3If/4URQzPeVNdr+ZA91h Axo/SJg1xrMHHDU6ZATgEY6kAWnz/WPCJxEZlfOz4ymStCgyWtazYIxXgHZXH5+EH6aA XaMp5LwIR5EtqV2Ync1J0YuHpkud782kKg11KnNnivfdJ1UnLvoWhr0HmRMuJRok4JW1 OVD00AjtZx/pSlZaHvf059kNvJOeFSFSwPJygP9dqLv3vtkRCaziLJGghifn0hOPYX/M VmLR4O/NVCSAsg5HdkI8h8FAvSJWdNODCM3a0WwZCjRErUNANoasipcxXeaUJB21BBvn fSAQ== X-Gm-Message-State: AOJu0Yws66I7SoYCQb4XbaTpXvyDbRp53ceaOfSxJ8G57lar7sxe9t0O BuZl+Et1JK0V4UxLqxWyiMAX5tF9BHi+vbqucpZ+JWUnEvKhXq08yvd4 X-Gm-Gg: ASbGncsxHky7LdLBX1GEdoH/ABUIwQjDxArFB14gw/YLXjMync/Am1Mt1qNZT/JnHDD 2vohrn2NlTukfgSl59d1zlwoW7UBDRvs/xwd9qqttB4Yrx0RGb2HVhSRJeimgl3gXAer0Dbylaa pthiN+RviMAvD5luTVLRuclwm5DamgmhC9TxCEKyYoAO+N9SCBszJhFj/SW98nG+fuWiK0rtX1w qGjasIcdPGqmagl0NMX7bvI2FFf8vfsz0XYsmTgC2A2ciFQqSUpuP1ZZRV7S32nesD5iiLpJrCT vYVNO9Wts4SrM/b9Ncd1ZUP2C0DC/1oKdcCv9M6ofccqiB9abjktwSHkC4WAdxPmuAhBHU2qBEM No3XNLojXUnBu4RxTYRVp X-Google-Smtp-Source: AGHT+IElFPzV17Aq7l8X+0jftaR4bqKcrZG5F7+/v4GxeRf+1WoBZq/8tqF3A9keMW+gF0VP7C/5zQ== X-Received: by 2002:a05:6e02:318c:b0:3dd:f3e1:2899 with SMTP id e9e14a558f8ab-3e13ee85590mr67498355ab.2.1751829152973; Sun, 06 Jul 2025 12:12:32 -0700 (PDT) Received: from moss-3 (cm-24-53-185-196.buckeyecom.net. [24.53.185.196]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-503b599a411sm1315950173.1.2025.07.06.12.12.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Jul 2025 12:12:32 -0700 (PDT) From: "J.D. Smith" To: John Wiegley Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> (John Wiegley's message of "Wed, 2 Jul 2025 12:19:31 -0700") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Date: Sun, 06 Jul 2025 15:12:31 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: eliz@gnu.org, 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) John Wiegley writes: > If I run the attached code from the terminal using: > > #+begin_src sh > emacs -batch -Q -l accept-process-bug.el > #+end_src > > > It will correctly run forever, processing output from the =E2=80=9Cyes=E2= =80=9D command (you > can convince yourself of this by adding a debug statement inside the proc= ess > filter, but it will be extremely noisy). > > If you now attempt to evaluate this code in a graphical Emacs running on > macOS, it will immediately stall out. Running Emacs under lldb shows that= it > is reporting the following exception continuously: > FYI, the emacs-mac build does not suffer this problem. It runs until you C= -g, reporting: Starting thread... Beginning yield loop... Joining thread... Test completed! From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 16:35:45 2025 Received: (at 78946) by debbugs.gnu.org; 6 Jul 2025 20:35:45 +0000 Received: from localhost ([127.0.0.1]:59132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYW5R-00019L-2a for submit@debbugs.gnu.org; Sun, 06 Jul 2025 16:35:45 -0400 Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]:53437) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYW5O-00017q-CV for 78946@debbugs.gnu.org; Sun, 06 Jul 2025 16:35:43 -0400 Received: by mail-qk1-x729.google.com with SMTP id af79cd13be357-7d5d3f3f710so247585885a.2 for <78946@debbugs.gnu.org>; Sun, 06 Jul 2025 13:35:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751834136; x=1752438936; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id:from:to:cc :subject:date:message-id:reply-to; bh=I7vTog7IZ8moHob/kinVOwTtkpga1XUvWJ3Y3z0PF0w=; b=DXXeH0Fa0adYs3F6PW2pBMyJcQCb5VkUKQpMaV2jfaO2VGTjOol1ED3V3MeHh2IhdP wD2nOQQbtqnNAdJgz579f3KefkoazeLRWL+4aSZOsmFzkmFyUeg9gcIha62A9pFYiQbe yj57XZmJ+JmGDiO8k/AJpSUGM/56fVV9JokhnNY9cuu5kADPfhtTxh21tYr0l1zxWgK2 Pc8XJdeoaFDlN6Rg0r4DtwwLPjy5uaoyD5/uVUDuRv1wm6YoT7sv9Y3F61rMIWX+Acnp 06Bpr2JTtOqLeXEtr2t5/qgXczy7nE8vnwiRzpZk9PDM+rqimXnGUDg1yof/ivvIjcOq TNzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751834136; x=1752438936; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=I7vTog7IZ8moHob/kinVOwTtkpga1XUvWJ3Y3z0PF0w=; b=xCaej/QFExoYX1IsBrWFj+nj/C8xfY7F4LThIJJlrVQgnxMQXnezBi/xG0JPgZJFdl SYf9kDrLV+bIpB+q2MWRbkHBHgeRq6CNPNlVICbaRkTPWIxWIMG1tEFDNaaWHwVG4t1W 5Ip+6fA/QiHwjX/MlZVoz69VO7scCawWFf+kr63XK1BZ63I/1W3qsmcphaMEMeWCzjAG 94qJaU1xNa9uGWoJdtmCdy0juzfy2h7YpLrNFWERlwsZpPy78MDrg3wcT1lV5vmx5gbI IZzwSRqQS+bJIN8WMiwa72voR8YtO3awWEdg0crwUPL6DiA+2uDLpNx2uAPveoN3Hrc/ bQxw== X-Gm-Message-State: AOJu0YwmkdEvngspVwovf9he8A1G4V3L082WokQiImTDtSt5FeNd2gLi mENV5fztKMPEIk06WaPNDu37QucpSfuC7wSSrm6C0mkvUnIUdGXcYdOclcfIQQ== X-Gm-Gg: ASbGnctaWiAfP8DCV8jXdJMGm5sczuYYX1p2VSx1cgnUomPBdlWp7+8MoZY6b/3KLZ9 2PfP0cONjmKk8Xpc/P+YdPX3uBgv6c7+09hJqxCe4gDMhTEMgm9jHJHaKVxBpXR87c43c+9yLKN +WYJUaWeDf0pYOgYK3KozqOuuPM/jFkSxP2bDs+06/xOnfQHmEZwJh7aGywg6olidOjN8Dh7kio opfZmBpDAIKhPJzDyreLqd2DnkeJs/Px5rO1ZmAFEPEhzUS6nTZi9ZFFUbfbxGBBrs2OM5AHPLf 5lhT+i8r8hKTnQ0iEPXUQbatFcimNVlSivp1IIsPk+MCus3Rp8OmnUSeQfphjPck67LTf1fl8T0 GMHdEsW5GYRDQfH6CdL+mxBj1+UirNdimn/0l6KaoX0YuElge9WpG6YilOksh X-Google-Smtp-Source: AGHT+IHW8APM5wNHa86ndmuHUYWpfAv9MSDEC7kPTcy3lR+ClAlIeUCnlN1ebINaR7ZxhExE4q1KmA== X-Received: by 2002:a05:620a:2993:b0:7d4:492a:31fe with SMTP id af79cd13be357-7d5dcd40466mr1467375985a.52.1751834136419; Sun, 06 Jul 2025 13:35:36 -0700 (PDT) Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com. [103.168.172.201]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d5dbe7c31esm498221385a.68.2025.07.06.13.35.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Jul 2025 13:35:35 -0700 (PDT) Received: from phl-compute-02.internal (phl-compute-02.phl.internal [10.202.2.42]) by mailfauth.phl.internal (Postfix) with ESMTP id 5C155F40066; Sun, 6 Jul 2025 16:35:35 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Sun, 06 Jul 2025 16:35:35 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddvleeklecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufgjfhffkfgfgggtgfesthhqredttderjeenucfhrhhomheplfhohhhnucgh ihgvghhlvgihuceojhifihgvghhlvgihsehgmhgrihhlrdgtohhmqeenucggtffrrghtth gvrhhnpeetkefhgfeuvdekhfelveffvdefudelgfetueelvdeivdegffekvdejgeefvdek hfenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehjoh hhnhifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdeikeelgeeifeekgedq udejjeehfeekudeiqdhjfihivghglhgvhieppehgmhgrihhlrdgtohhmsehnvgifrghrth hishgrnhhsrdgtohhmpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopegtohhnthgrtghtsehkrghrthhhihhnkhhsrdgtohhmpdhrtghpthhtoh epvghlihiisehgnhhurdhorhhgpdhrtghpthhtohepjeekleegieesuggvsggsuhhgshdr ghhnuhdrohhrghdprhgtphhtthhopehjughtshhmihhthhesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 6 Jul 2025 16:35:34 -0400 (EDT) From: John Wiegley To: "J.D. Smith" Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: (J. D. Smith's message of "Sun, 06 Jul 2025 15:12:31 -0400") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> Date: Sun, 06 Jul 2025 13:35:28 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: eliz@gnu.org, 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> J D Smith writes: > FYI, the emacs-mac build does not suffer this problem. It runs until you= C-g, reporting: > Starting thread... > Beginning yield loop... > Joining thread... > Test completed! That=E2=80=99s good to know. I was using emacs-mac for a long time until it= fell too far behind the NeXTstep port in nixpkgs. I hope that we can find a solution for stock Emacs, so that my library can work well on all systems. John From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 22:53:59 2025 Received: (at 78946) by debbugs.gnu.org; 7 Jul 2025 02:53:59 +0000 Received: from localhost ([127.0.0.1]:59996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYbzS-0003XP-6s for submit@debbugs.gnu.org; Sun, 06 Jul 2025 22:53:59 -0400 Received: from mail-io1-xd32.google.com ([2607:f8b0:4864:20::d32]:54685) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYbzO-0003W9-TO for 78946@debbugs.gnu.org; Sun, 06 Jul 2025 22:53:55 -0400 Received: by mail-io1-xd32.google.com with SMTP id ca18e2360f4ac-875acfc133dso83294539f.1 for <78946@debbugs.gnu.org>; Sun, 06 Jul 2025 19:53:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751856829; x=1752461629; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q8ehc8zVA6nkvKEBM3EgGpdiHEL73uVLhAjgbFWxxz0=; b=U5H9z20AzqlKPJUmyw7+/885Yqjvj/K0Ob4+k154fs6B+x1o3uvhyUBvh8zUjm3x5S XUqd3jcMx9FSN4hBCeGmw83Ysd877yN8VsMTY3AbLneR3VAs7WqCw7LFWT6dMUkcPoqq +EOJS+5o6ZPhBY4WiBCOn2slTzC+84/3HeeJffw/xEqaTyd0OX1pEIX6GFYFXk8xlbgc wSxaG6a6Zzuq3VIm1Tu8vowUfRcGNGvDZMmFVea87K+tm+OVm7happ/Z5HOl8yow8Nhm +CA2CwhATnu99+jNGgfUikfyImCXVxVXT519i6JDdee0yQoE6C9/UsFnnvMAHnuRqMy2 P9KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751856829; x=1752461629; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Q8ehc8zVA6nkvKEBM3EgGpdiHEL73uVLhAjgbFWxxz0=; b=VHMwuhkd/dvCyVrF5uRmxFCLaNp+Jwot4TF506FsdcU7Vnk3ZyEC9uhSK8mRobl+FL QasGUV1fDKb+TK8Cy1AGxrfxB88eoLIApfymFuRLqnkaN5vglwKJv7CmrSRMvMkGMLV9 PoxaQk8O7VP/Zd+xWI8Iwpe8nljGeXAcrOsZpF5yyyz3GFvPNwLcqR74KmxhgoZnyH8W WPPOFAe3K3hd5rJi+kuUs/1dwlf4+1TDm9JVSyNV1bxJxt/mu5lhU0w1skj5nPZb3n9g nelpTNhfUILtHMZLQxvIyDAbolsQexIFpwvoCvaJ91AAZZWxzh57IBtZKFp4nT/Ao9Zt FWMw== X-Forwarded-Encrypted: i=1; AJvYcCXifAhDpJvbDTd0C1VJw3uNpoy0kmp5w1LwuhGiUInaN8D+t9CgGuu8MgZPeWbn2Q0V1rbWlw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwkKWJPxOKnORMlvSBpxrTHPHU/vsRIdRZF0fqcDZrmNjIdpyqr 20IZ50l2sXK9eIpwooi6eN+RCFSv3xUx4rbgLYoDv+wylrziDA+TMVSj X-Gm-Gg: ASbGncsgM6T6Kly818iMKbbEGNr2JYQkHNZLoJXqx5F50JmTyolNeOaWD9Q+ZBynAfW Y0Fc5UndVyz6C1yqMxZKcDtAreejT4HHL4uYW46QO/g7WSbOIE/3gKd+7DNhjnemoJd3Rn/SZjq 9YADNVXGsYlvor3m+lb+n+Vrv/EYsUnHvWxUqwr3clCPjMBjPoOTpscbHl9hhWeAlN0mKWktSlO iLwUqBZ/f9Ftt7W7zPzu/aj08K8kI8lRE3TXEcoqaVhwRMdtbYyOvBbOR4lhWrD58rjMlfQimDn G3rY+vNTqWP96kWOtn2ByEoUb9joDaf2aexRmj8spCAW1sjKhdTzmK/Q0/n71bEuLfX67io9MHg /hg5oIN7DztWUTJ5Op1x0 X-Google-Smtp-Source: AGHT+IEFUUNY4jUlHouTyeBLZM18myqR4FMiboo8t0YpqO61r1dtRzvrRZZCotLZekHmjN4hBGU9Xg== X-Received: by 2002:a05:6602:3405:b0:86c:ee8b:c089 with SMTP id ca18e2360f4ac-876e15722bbmr1025004239f.3.1751856828886; Sun, 06 Jul 2025 19:53:48 -0700 (PDT) Received: from moss-3 (cm-24-53-185-196.buckeyecom.net. [24.53.185.196]) by smtp.gmail.com with ESMTPSA id ca18e2360f4ac-876e08684c7sm195473739f.40.2025.07.06.19.53.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Jul 2025 19:53:48 -0700 (PDT) From: "J.D. Smith" To: John Wiegley Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: (John Wiegley's message of "Sun, 06 Jul 2025 13:35:28 -0700") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> Date: Sun, 06 Jul 2025 22:53:47 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: eliz@gnu.org, 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) John Wiegley writes: >>>>>> J D Smith writes: > >> FYI, the emacs-mac build does not suffer this problem. It runs until yo= u C-g, reporting: >> Starting thread... >> Beginning yield loop... >> Joining thread... >> Test completed! > > That=E2=80=99s good to know. I was using emacs-mac for a long time until = it fell too > far behind the NeXTstep port in nixpkgs. I hope that we can find a soluti= on > for stock Emacs, so that my library can work well on all systems. We have an experimental build tracking emacs-30 and master, if you are inte= rested. Works well. https://github.com/jdtsmith/emacs-mac From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 06 23:22:03 2025 Received: (at 78946) by debbugs.gnu.org; 7 Jul 2025 03:22:03 +0000 Received: from localhost ([127.0.0.1]:60051 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYcQc-0007Gb-3k for submit@debbugs.gnu.org; Sun, 06 Jul 2025 23:22:03 -0400 Received: from mail-qk1-x731.google.com ([2607:f8b0:4864:20::731]:59658) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYcQZ-0007FP-Ka for 78946@debbugs.gnu.org; Sun, 06 Jul 2025 23:22:00 -0400 Received: by mail-qk1-x731.google.com with SMTP id af79cd13be357-7d44c6774e7so163786285a.3 for <78946@debbugs.gnu.org>; Sun, 06 Jul 2025 20:21:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751858514; x=1752463314; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id:from:to:cc :subject:date:message-id:reply-to; bh=Tw4Q9qbL3KsLr0gmiZPwa1Xqkr3wza00kra7/BGpoe0=; b=E/DySquqWeoUvpHg4Sw59ghccYnBGoH+XdPbjRFCZfJt7vThpPaEkm3rwolUHUnkAU f7cHu78vtW6qVwK0LwYNE1XuK9IrSYVF/sdx9scirNEmoy4ch79NwhTK1IoCXfFyot1o gdEconPrdNQCGAr2p7n8/YejmMUk2elQh5tnbI3i69R4bZKThbYEjw4Ahrrx+Qi1+nJU k7ik5dx3SXIdHyED+IFT9K+caey/97fzL55OuIes63t4lnqcAq/gT02tMJ1+tP47OZSS F0tF704Wj8doPotb6N7wvSxM5WcJjZLARcvTBAtEZohUEpXuPp/vSgVBdzBvOmrlFqVH dL4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751858514; x=1752463314; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:feedback-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Tw4Q9qbL3KsLr0gmiZPwa1Xqkr3wza00kra7/BGpoe0=; b=bjq0OoALIL4b5XsnpsdHXtOb/akPn4tu6Lb/OaB9CFvtPKFVtQ1zZO0hTmFIAgnCpQ V9rmRKiByO4ko3JWguUopIKJRig9kk8KLwcvBnNGOxVa6Q5BpKAvESV+7WmggXZCf2jl Ij/221OXP6aGhOZkPKkUOFStRm2VcDWkHHWH4XWrrfJqwdQhRdDbX32sRIoRJidtkbjz Ki/xXyAVYxAdzEITrOyJEDvTcvsLXgrBCcIDLkN8nZDsEyGIK+2buc7GGOFTjPLA0Xgf BuTygapbHgc8JrB8R/JI/kwuJ6pApyLk5DKqLYbPEq1KXljHB6bblE+NQT58nFntF+Zs 6qlQ== X-Forwarded-Encrypted: i=1; AJvYcCVLhenJ1kBLpIAF+4TiNNpGBniZRNPvoxJ2tNtsIPEWtRIpMzwRtDK3JrOKc2l5jd+bLFHvdw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwwI94rhl1i0HpU2i/V/rP1R22tW39ZAPavY+1eGHln9F8qneWN oVX73reTgPXrK6XSIZtRwXYkrJSi4KF7asWaQZFo/gr2w0ERuPzVO+uHAwS6jw== X-Gm-Gg: ASbGncudJ1d/ykgzzEskatBBepvfGQrdu78egctrnTeW7djbOehl5g0QUirObg+nFLP se9/Yp9xQg8zpfWOwA/LuIPf71opmH66rBD+vwFB5XFlg//gr6zboOBahGS3TqKsZZGJoPu7jK4 HfCe6JjNAYpbMMoHZen6a1xkxhBV/2p1VNRcSQf2bc2/2TK8R/nqe5AsGh7WoO/37iGg/Jj4T9G oqbOZ9wO05eLd2elQJWEJ9/8xYmbZJ7Z3T76VUdwsaeps0Sqf/2+vlk4nTs3KXKD4fBTw1r1+Hm Q59/omMp/nQ5ilqye114wKRzK0bQ/5wsBqbhjOUY2O/NypJaK8tk8IX7td7Qvo437CPemZMje1i 2BbO3t1B/Kd6lC8zHdTJPrBb2C8PXo7HY4l/XKBHNaiNbh2kKKQ== X-Google-Smtp-Source: AGHT+IHN8lpAupAIC5KSHb4GQiYR9nEaohGehOpufnXQNTvOdfTYHKhibRXU2r9BunCrbax41oYKdA== X-Received: by 2002:a05:620a:46a8:b0:7d4:6138:bd58 with SMTP id af79cd13be357-7d5df193718mr1606107885a.52.1751858513627; Sun, 06 Jul 2025 20:21:53 -0700 (PDT) Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com. [103.168.172.201]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d5dbdc4623sm540452285a.50.2025.07.06.20.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Jul 2025 20:21:53 -0700 (PDT) Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfauth.phl.internal (Postfix) with ESMTP id A9D09F40066; Sun, 6 Jul 2025 23:21:52 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Sun, 06 Jul 2025 23:21:52 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdeftdejtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufgjfhffkfgfgggtgfesthhqredttderjeenucfhrhhomheplfhohhhnucgh ihgvghhlvgihuceojhifihgvghhlvgihsehgmhgrihhlrdgtohhmqeenucggtffrrghtth gvrhhnpeffkefhveefveevfeetkeeuudejhedtieefheeuveekgeekvefhtdefhedttdek tdenucffohhmrghinhepghhithhhuhgsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepjhhohhhnfidomhgvshhmthhprghuthhhphgv rhhsohhnrghlihhthidqieekleegieefkeegqddujeejheefkeduiedqjhifihgvghhlvg ihpeepghhmrghilhdrtghomhesnhgvfigrrhhtihhsrghnshdrtghomhdpnhgspghrtghp thhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheptghonhhtrggttheskh grrhhthhhinhhkshdrtghomhdprhgtphhtthhopeejkeelgeeiseguvggssghughhsrdhg nhhurdhorhhgpdhrtghpthhtohepvghlihiisehgnhhurdhorhhgpdhrtghpthhtohepjh guthhsmhhithhhsehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i3c0945b2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 6 Jul 2025 23:21:51 -0400 (EDT) From: John Wiegley To: "J.D. Smith" Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: (J. D. Smith's message of "Sun, 06 Jul 2025 22:53:47 -0400") References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> Date: Sun, 06 Jul 2025 20:21:50 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: eliz@gnu.org, 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> J D Smith writes: > We have an experimental build tracking emacs-30 and master, if you are > interested. Works well. https://github.com/jdtsmith/emacs-mac Sounds great, there=E2=80=99s even a nixpkgs overlay for it: https://github.com/what-the-functor/nix-emacs30-macport-overlay The only reason I=E2=80=99m not running this is that it doesn=E2=80=99t all= ow me to specify which version of nixpkgs it uses underneath, but I=E2=80=99ll have to see i= f I can make that configurable. John From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 07 05:28:31 2025 Received: (at 78946) by debbugs.gnu.org; 7 Jul 2025 09:28:31 +0000 Received: from localhost ([127.0.0.1]:32959 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYi9G-0000To-08 for submit@debbugs.gnu.org; Mon, 07 Jul 2025 05:28:30 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:51433) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYi9C-0000S6-DT for 78946@debbugs.gnu.org; Mon, 07 Jul 2025 05:28:27 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4538bc52a8dso21906145e9.2 for <78946@debbugs.gnu.org>; Mon, 07 Jul 2025 02:28:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751880500; x=1752485300; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Le06panxlcWsy7EgLvrwiLTQDETdeK+a/uyae9eiLsg=; b=d6G2gH01Pa++JZYJMjYgG6WDryA+rRpDA8CqLeJo/nnW1tgdbD7e39TxYVuh0NMb3X 4LRR7My/UDj2kK/ejGrVWvKTruzQzaUWcXilCNogJn7kUdh6A1e9WJ2axz/eMYO2wtfm ejLPD0vjbHO9l3hEL8VY42sMtCIHwmbZY95CVp2N60kzTnXGEgSphnO8zk1VDdAVbOp7 tLdZV5s7gPf+ZXQNMaGiNtkzRESfE20eXojZvqSLLm59qeLfbX0PS4c0lvyPVXC6I7/j B6m6qAr6xHqUhTd1vrg6tZ74RJ5jBK9xgGDlt2GpRnZTuXTvtHZ8AxKgc5d4yfrlYplX wGLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751880500; x=1752485300; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Le06panxlcWsy7EgLvrwiLTQDETdeK+a/uyae9eiLsg=; b=KTYXN4KrRybvQmkFggPh6fYDTfJgVNXoBdYO7lENokW2Jh7Ff7bR7CNaL/r/LMvJ/I tlgBEx8lhLpSB4gmaTmuIK3r5ISy+L2kewqGitb8fQDyRqDkHVj5sEcnhCjRtORxfDbn RWgCOuY7k+pghisCntGo0hudBJyewXwlvaYFurAl/tHqVzy//zsrjmLF8yDSfkmCpa1Z g2Bai5CZwZDzLPhFuOpo/b4la5HugiZwBNtZ/p6nwF1bQnsH2zMTF3fZeSMTBP+HWwgz p87Oxquckx1ngIP3LCWCG4SxACnJozHTv+hcAmJbjeQh1a2nuE2zrcxZEw7l3hROswZE 748A== X-Forwarded-Encrypted: i=1; AJvYcCWTZt2E1aL5eq7c9N3STuO/4/DM0sVYsR7UUEYrFXqst1N/H83bTU0eXXELg9vwL7kJEf9mNQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzWyTTJlrbCrrIuMm737WSRQFKzKY3B9C23Zk7r02LQ+83ohro4 LpuuDyCJzY5yDBv7ZwyTdCzFp5VkaP7Pj4wRCMkNJEZ/dzhM+CrR/3sm X-Gm-Gg: ASbGncuDyQZU4TydV/HH7TtComOgMVckbNO0mcnpE33YHX3kGRub+49Z2sI9JUmPaXt GRuuHICkxIAUfpZ9TN8L1tkhujH8J/VpNMhBCSxqqtSxTB2Nwg0J2XLgep1vFHcPEpP360EdYUM 3gqW8/oU0jqwBHsjj6/oyg+p92HdMKaPdxQKgnyhab3I+tSBlGEOD21oZCqoQcqpT0Toea1lWzB 6H44W5FLiHRsTSq2dFkD6RY5lmD5NI+3uRgoiwDTlIU+1LM7pWoUqXlfQrTSqA6eWSnDIuZ9MuW tGNh1DtQn9s+BkI9Qa0L7Nt/ioEEAi+ryjZ4gsUArXRIC6cetg== X-Google-Smtp-Source: AGHT+IEiq0rdPBf6C+opkD9UfnND5iMpcNI36Lc4pyIjPujHojkdbDcOFxSFql7WYAcV+sn8NP6Png== X-Received: by 2002:a05:6000:1a8c:b0:3a4:dde7:ee12 with SMTP id ffacd0b85a97d-3b49aa86c76mr6223352f8f.53.1751880499619; Mon, 07 Jul 2025 02:28:19 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:54b1:641f:83c8:874c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b4708d0aa0sm9819928f8f.34.2025.07.07.02.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jul 2025 02:28:18 -0700 (PDT) From: Robert Pluim To: Alan Third Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> <87ikk8mb5g.fsf@gmail.com> Date: Mon, 07 Jul 2025 11:28:18 +0200 Message-ID: <87wm8k1hal.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Fri, 4 Jul 2025 21:20:07 +0100, Alan Third said: Alan> On Fri, Jul 04, 2025 at 01:46:19PM +0200, Robert Pluim wrote: >> >>>>> On Thu, 03 Jul 2025 16:00:23 -0700, John Wiegley said: >>=20 >> >>>>> Robert Pluim writes: >> >> John, does it help if you stick something like >>=20 >> >> if ([[NSThread currentThread] isMainThread]) >> >> { >> >> } >>=20 >> >> around the >>=20 >> >> [NSApp run]; >>=20 >> >> in `ns_select_1'? >>=20 John> Hi Robert, >>=20 John> With this change, I=E2=80=99m able to run the tests successfully = 10,000 times in my John> interactive Emacs on macOS. >>=20 >> That=CA=BCs encouraging. Alan, does this change make sense? (I=CA=BC= ve swapped >> out what little I know about the macOS event loop =F0=9F=98=80) Alan> Not really... The whole thing is a mess. The return here: Alan> if (![NSThread isMainThread] Alan> || (timeout && timeout->tv_sec =3D=3D 0 && timeout->tv_nsec= =3D=3D 0)) Alan> thread_select (pselect, nfds, readfds, writefds, Alan> exceptfds, timeout, sigmask); Alan> Was removed and I don't think it should have been, but it was to Alan> prevent freezes, apparently... I don't know or recall how this he= lped, Alan> it looks completely wrong to me. Surely that thread_select call s= hould Alan> return a result? I really don=CA=BCt get it either: on macOS we run an infinite loop in `fd_handler', that gets sent messages via a pipe by `ns_select_1' to run `pselect' (previously only if `ns_select_1' was called from the main thread, but now all the time). But apparently it=CA=BCs ok to call `pselect' directly (via `thread_select') from a non-main thread (which is why previously that return was there for that case). It=CA=BCs not ok to call the macOS run loop from a non-main thread, which is where John=CA=BCs problems came from, but we have to run the run loop because `fd_handler' returns information using macOS events. Perhaps we could use a second pipe instead? It would remove the requirement to go via the macOS event loop, I think. I think more coffee is needed =F0=9F=98=80 Robert --=20 From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 07 16:47:19 2025 Received: (at 78946) by debbugs.gnu.org; 7 Jul 2025 20:47:19 +0000 Received: from localhost ([127.0.0.1]:38262 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uYskA-0004vc-O2 for submit@debbugs.gnu.org; Mon, 07 Jul 2025 16:47:19 -0400 Received: from dane.soverin.net ([185.233.34.30]:60623) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uYsk8-0004v0-S0 for 78946@debbugs.gnu.org; Mon, 07 Jul 2025 16:47:17 -0400 Received: from smtp.soverin.net (c04smtp-lb01.int.sover.in [10.10.4.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4bbbrt4zzWz2xLS; Mon, 7 Jul 2025 20:47:10 +0000 (UTC) Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net (Postfix) with ESMTPSA id 4bbbrt0GY3z7w; Mon, 7 Jul 2025 20:47:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=idiocy.org; s=soverin; t=1751921230; bh=Vs6t43m0zvymnxh6eCuLpqYsFffJ8GhlDayI8Yu/y3U=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=LPvuO62N4zztN8EEWNMH4pGMrD7C5NBsKvmImZ522Lis80TB1/i2afU6rEZb3ohUc JPeEqYNND/LZ9ZEDOHepW6xATB/tpg4zH/c2KADXjA+FJCn774Vx6R6N4P4UhnUTpd LGGokQI43/9xmzzALlXB8CWJXsScyJ+gMHpnctGNh7putGyK08IERcv6OZW+f0hqDd NaZAvw9SShZiaSaaBy8YSKiTFJCH7BB/5DY9LtJ23XNYq1Q25puMOOCZKt+gtPludU cNUM3P5GKXVPCPjyXavGOpQtrIA5482pwQxW1RRdY0BjraucnP8NqlIbbgRz5kZiU8 +mvLiNQeOC54g== X-CM-Analysis: v=2.4 cv=UsCZN/wB c=1 sm=1 tr=0 ts=686c324e a=UbsBXRcqaZ6D9kgPt/Dvnw==:617 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Wb1JkmetP80A:10 a=3NU3gUGwZnZjoPT7bSoA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=9MSFP0l5Dcwi9NrB_JPx:22 X-CM-Envelope: MS4xfPGHXGGW1EX+0ed5/r2sODwh+s21Ev/C09TvQZpY6wEhWiixzNHZZAAreZAd/hI7o1TS0KSC3bSj+JE8QqWxAM9FUn6psYlKMAH/LdNblTjuIOcgaIpN bv31iUPt4a7KTgrGtw+/edE7ac0yW+GBXyxYVFQqg8GC8aE+5OBvr/mrf1WNRIpDu1B+f5nf5WvBZeel79Ojsi6abPNG0k3XigATNJvypFiNNnQujd4CwUdL JPVhgIfhlpMvkb59v853KT9wpIK/XmZuqASH06umSQFgmM9NygY6SKbXFCFl1oGqNpl/sEVTOzSqpWtg2uPaRw== Received: from localhost (faroe.holly.idiocy.org [local]) by faroe.holly.idiocy.org (OpenSMTPD) with ESMTPA id 1f88699e; Mon, 7 Jul 2025 20:47:09 +0000 (UTC) Date: Mon, 7 Jul 2025 21:47:09 +0100 From: Alan Third To: Robert Pluim Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS Message-ID: Mail-Followup-To: Alan Third , Robert Pluim , John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> <87ikk8mb5g.fsf@gmail.com> <87wm8k1hal.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87wm8k1hal.fsf@gmail.com> X-Spampanel-Class: ham X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On Mon, Jul 07, 2025 at 11:28:18AM +0200, Robert Pluim wrote: > > I really donʼt get it either: on macOS we run an infinite loop in > `fd_handler', that gets sent messages via a pipe by `ns_select_1' to > run `pselect' (previously only if `ns_select_1' was called from the > main thread, but now all the time). > > But apparently itʼs ok to call `pselect' directly (via > `thread_select') from a non-main thread (which is why previously that > return was there for that case). > > Itʼs not ok to call the macOS run loop from a non-main thread, which > is where Johnʼs problems came from, but we have to run the run loop > because `fd_handler' returns information using macOS events. > > Perhaps we could use a second pipe instead? It would remove the > requirement to go via the macOS event loop, I think. > > I think more coffee is needed 😀 OK, the fd_handler thread only exists because we "need" to run the NS run loop and pselect simultaneously. Obviously we can't do that with a single thread, so one has to be put into a separate thread. The fd_handler only communicates with the run loop in as much as it tells it to stop. All it's actual *results* are handed back via the global variables select_readfds, select_writefds, etc. So there's nothing special about running pselect in the main thread here, it's just not done because the run loop is required at the same time. This means that if we decide we don't need to run the run loop (which is something we used to do) then we could just call thread_select. And just to confuse matters we have to run thread_select anyway, as that's how Emacs chooses to run another lisp thread. So you'll see a call near the top of the ns_select function with a zero timeout and we just ignore the return value. Sub-threads, as you say, can't call the run loop, so for them ns_select should act pretty much just like a call to pselect. Ultimately, ns_select should look to the caller just like a call to pselect, or whatever. It should return whatever pselect would return in that situation, and shouldn't behave differently, although you and I know it's doing a whole bunch of other stuff behind the caller's back. I scare quoted "need" above because the reality is that we don't actually *need* to run the run loop in ns_select, it's just a convenient place for it. The ideal situation would be for the run loop to run in it's own thread and ns_select could then be replaced with a simple call to thread_select like some of the other terms. But implementing that comes with it's own set of nightmares. Another approach I looked at briefly to simplify this is emulating pselect in the run loop. It can monitor the read fds, but not the write fds, so I gave up on that. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 09 04:12:29 2025 Received: (at 78946) by debbugs.gnu.org; 9 Jul 2025 08:12:29 +0000 Received: from localhost ([127.0.0.1]:48507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uZPum-0002sr-RL for submit@debbugs.gnu.org; Wed, 09 Jul 2025 04:12:29 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:50181) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uZPuj-0002s5-4t for 78946@debbugs.gnu.org; Wed, 09 Jul 2025 04:12:26 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3a575a988f9so3397708f8f.0 for <78946@debbugs.gnu.org>; Wed, 09 Jul 2025 01:12:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752048739; x=1752653539; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pEP10r0M1/+e/2Dk9DMasDuBlL4fB/OZaReJkQANSn0=; b=PzdCzoOkjHtykwFMOgVMhHDkOvywvjzpec+TJU/PcMoYp+fbVhcWc6YN4cAfA9uAAb tR2ZzpH5ThCIlwhYkqIUDsS0EwO0AJAlVIt2bfY4J6AOpEzGkDx/FHBhxDpwqnz7IsLQ YDO+gbc4KUmRGX6CnNjuYWJLC7kxCWeh7+N02PFB/1IyHcx1NtOp3PjBx6dl5phsSwkI 4TUPUt/1Fm+rnevjkzRtEec089D+425RzHPKu8I25YtUwR59m5zggozdd5oIo3+U6Uk6 7nLSiKsXhdjnnHI18y9a7No/EWPQbCzLISbcMnbgM4Ww0WSnGMmlFizmCa+cjWMHrS4F ng3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752048739; x=1752653539; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pEP10r0M1/+e/2Dk9DMasDuBlL4fB/OZaReJkQANSn0=; b=nAceujm+faHJ6OgrMGZ73+NY/ChJcGNq+fh7fzW6H+3o3r2JVuDAYfYn324CPKyIOP p/SIypRlg4PeSM41jkB8AvLk0Fvt5xKX44h2/2QJYNIt0CYPo5VgvmxCn5XYrQi+WjNI gMerce9WT0s8cEQTw2z/IzIvu+nJnR0QLzJiUgF+B5CG6YBQ4D7qN4tFvKMAJqGFpD/B CFuDDenc2Y4ShSZndPPADlRy9pegsKk14LmY+TYT8x9girzKg2lYboHwSlhz/qUPZx89 c4dIZQ7eKhP9flwW3YkQ3A07GFXLnSNnJ24jndsYPgSfNZF30HT/rE4mUtIlELgS4rNn kqIA== X-Forwarded-Encrypted: i=1; AJvYcCVY1yQWW0Qh7SFr3F6f68TMuEVF0PpLJphQjXqH1AE8v3NngEQfb0UqXRxx06q9m1Ifkno1aw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyykkXFWN2r5A+2NFra4eIj7CN1qiXhW2dvlBP417Fe1OeT6k7V cCw2Bf+1fa/xFnHYGB/1dprWmURzc4lat96530qkXDwGV7hjGgnJ5J1K X-Gm-Gg: ASbGncsIL0Q2EvJDSTCA5zOuE5KgB+OiofzWYp68Nmze6vPnIi9JZyroUzaaLfopDPb zW7q8YsaiGqjK3xvSifLfKzTVKFbINsm854m4qkLYZ3D41OVXVVpFtmJQapPU0i6J0eWMLYnZy9 iidP54p5ampTKRrnE7E7dRiZsxq9dehP1rp1Yca9kYzF4PYlunJwzbV/HMnI80RKpUEtxrYlhG3 ZcPoGF+edP6ViArYD5Avf+AkwcnxQfIMJZlYcpyskbVeEIUWxc+N9Ec8YLo3vV/+p0xJOfmZgL2 6VKagrMyNV51q4L71exZ/w1NqbwssdfEBk5pbjdk0tV1WHR5wA== X-Google-Smtp-Source: AGHT+IEIuv1vY4/Yb8LOwDGPXO/sTh6Wd+WafjP0P6uiVs3eh0J3O9KWBsqLAj8GWFf71V/i2SDDJw== X-Received: by 2002:a05:6000:2081:b0:3a4:e841:b236 with SMTP id ffacd0b85a97d-3b5e4503eadmr1250365f8f.33.1752048738529; Wed, 09 Jul 2025 01:12:18 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:b08f:84d6:881e:d7c5]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b47285e241sm15260948f8f.94.2025.07.09.01.12.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Jul 2025 01:12:18 -0700 (PDT) From: Robert Pluim To: Alan Third Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS In-Reply-To: References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> <87ikk8mb5g.fsf@gmail.com> <87wm8k1hal.fsf@gmail.com> Date: Wed, 09 Jul 2025 10:12:17 +0200 Message-ID: <87sej5236m.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Mon, 7 Jul 2025 21:47:09 +0100, Alan Third said: Alan> OK, the fd_handler thread only exists because we "need" to run th= e NS Alan> run loop and pselect simultaneously. Obviously we can't do that w= ith a Alan> single thread, so one has to be put into a separate thread. The Alan> fd_handler only communicates with the run loop in as much as it t= ells Alan> it to stop. All it's actual *results* are handed back via the glo= bal Alan> variables select_readfds, select_writefds, etc. Alan> So there's nothing special about running pselect in the main thre= ad Alan> here, it's just not done because the run loop is required at the = same Alan> time. Alan> This means that if we decide we don't need to run the run loop (w= hich Alan> is something we used to do) then we could just call thread_select= . And Alan> just to confuse matters we have to run thread_select anyway, as t= hat's Alan> how Emacs chooses to run another lisp thread. So you'll see a call Alan> near the top of the ns_select function with a zero timeout and we= just Alan> ignore the return value. I guess you mean this in ns_select_1, which does a non-blocking pselect for 0 seconds on no file descriptors: else { struct timespec t =3D {0, 0}; thread_select (pselect, 0, NULL, NULL, NULL, &t, sigmask); } If it=CA=BCs there for the emacs thread infrastructure, is there a more explicit way of doing whatever it does? Alan> Sub-threads, as you say, can't call the run loop, so for them Alan> ns_select should act pretty much just like a call to pselect. OK. But it would be good if we could have a single code path, rather than 2. Alan> Ultimately, ns_select should look to the caller just like a call = to Alan> pselect, or whatever. It should return whatever pselect would ret= urn Alan> in that situation, and shouldn't behave differently, although you= and Alan> I know it's doing a whole bunch of other stuff behind the caller's Alan> back. Alan> I scare quoted "need" above because the reality is that we don't Alan> actually *need* to run the run loop in ns_select, it's just a Alan> convenient place for it. Alan> The ideal situation would be for the run loop to run in it's own Alan> thread and ns_select could then be replaced with a simple call to Alan> thread_select like some of the other terms. Yes. I was a bit surprised when I discovered that we=CA=BCre starting and stopping the run loop all the time. It makes reasoning about stuff a lot harder. Alan> But implementing that comes with it's own set of nightmares. Such as? If we put the run loop in its own thread, running forever, then the main emacs code (and emacs threads) can call pselect/thread_select without having to communicate with the fd_handler thread, which we could remove[1]. It would remove a bunch of code that=CA=BCs just needed to synchronize between the main thread, the run loop, and the fd_handler thread, which is evidently fragile enough that we keep futzing with it. Alan> Another approach I looked at briefly to simplify this is emulating Alan> pselect in the run loop. It can monitor the read fds, but not the Alan> write fds, so I gave up on that. Is that because macOS doesn=CA=BCt send events for fds becoming writeable? Robert Footnotes: [1] It works currently, but based on my traces we end up sending a lot of messages back and forth that are ignored. --=20 From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 09 15:45:53 2025 Received: (at 78946) by debbugs.gnu.org; 9 Jul 2025 19:45:54 +0000 Received: from localhost ([127.0.0.1]:52565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uZajm-0003Cb-Ah for submit@debbugs.gnu.org; Wed, 09 Jul 2025 15:45:53 -0400 Received: from dane.soverin.net ([185.233.34.44]:48935) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uZaji-0003AW-9H for 78946@debbugs.gnu.org; Wed, 09 Jul 2025 15:45:47 -0400 Received: from smtp.soverin.net (unknown [10.10.4.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4bcpNz6qY7z1P28; Wed, 9 Jul 2025 19:45:39 +0000 (UTC) Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net (Postfix) with ESMTPSA id 4bcpNz2gPBzWD; Wed, 9 Jul 2025 19:45:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=idiocy.org; s=soverin; t=1752090339; bh=ckulFT0E5oGECgq1h3wQeXMxZQ6e3j99dnVM45J8IRo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=DxcbXfxQQ4Tj42jn1cfd15CtxbSQtizV4jq/l6WauUtceWYbzNGs5GB/AZhm3Dh8Q 1ipQSrIORHmLbblDj+FLLdoWMlzXL967m/dmNBzjCfjPboizkRw4FaWRcwK+/ca6Ff apPzrbHYqNJppZVDCw/nljyf5wQikjSApJOjZnn1XO3UJ9lg416ggXFuxkFiHM2QIr o8XRINn5oq5IuKSEG3rjJXHdzAGUeUpapquc+SsrndW9gyMXXbb+lVUvMf1WcAF+BF 0hONqOS8JZfgRHdSdL+jzG3KM5nZ3DMQ3dwf/oN4LbPonRQqnJ4W4BJXqgwJZbEZq9 hUVS7CCgvS9pA== X-CM-Envelope: MS4xfEZV6d7X5PoLh+cUoaN//fvixHsnKvGoqUQ0ypkVdyS46EeUl+VQbYxelzSxj27XmLVZVEeTT0XBFbYxf1L2TO4rmEW39AxeYNBzn8EuyY9TrN4IIuKU 9UGsWZNPEUEOObO753D+4iuCI1dpAXTuFRiGICWbb7PErnuXNyReiZl9xzcU97qk2bNxuH7l837+ysnYvAiBt4lVf+nJU8FxvjsY4Tcul95am1HSgUefAsd5 higV5HNZcFXPz6r0438sYle2aMExs81/SDr2nJeflHON4Ow7mNt0yBCBC1Ut9HVbC5glHQqTBIsXRwgRuk7epw== X-CM-Analysis: v=2.4 cv=UsCZN/wB c=1 sm=1 tr=0 ts=686ec6e3 a=UbsBXRcqaZ6D9kgPt/Dvnw==:617 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Wb1JkmetP80A:10 a=hIj89exaAAAA:8 a=kB3_eTpt-dUYIVNHs34A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=lS9wXHQM5UdnNJ4u63Ry:22 a=9MSFP0l5Dcwi9NrB_JPx:22 Received: from localhost (faroe.holly.idiocy.org [local]) by faroe.holly.idiocy.org (OpenSMTPD) with ESMTPA id f3e9fe62; Wed, 9 Jul 2025 19:45:38 +0000 (UTC) Date: Wed, 9 Jul 2025 20:45:38 +0100 From: Alan Third To: Robert Pluim Subject: Re: bug#78946: 30.1; accept-process-output not allowed in threads on macOS Message-ID: Mail-Followup-To: Alan Third , Robert Pluim , John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com References: <738A2AA4-8753-4DEF-AD66-52B794F294EF@gmail.com> <86v7o9zipb.fsf@gnu.org> <87ms9lmot3.fsf@gmail.com> <87ikk8mb5g.fsf@gmail.com> <87wm8k1hal.fsf@gmail.com> <87sej5236m.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87sej5236m.fsf@gmail.com> X-Spampanel-Class: ham X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78946 Cc: John Wiegley , Eli Zaretskii , 78946@debbugs.gnu.org, contact@karthinks.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Wed, Jul 09, 2025 at 10:12:17AM +0200, Robert Pluim wrote: > >>>>> On Mon, 7 Jul 2025 21:47:09 +0100, Alan Third said: > > Alan> OK, the fd_handler thread only exists because we "need" to run the NS > Alan> run loop and pselect simultaneously. Obviously we can't do that with a > Alan> single thread, so one has to be put into a separate thread. The > Alan> fd_handler only communicates with the run loop in as much as it tells > Alan> it to stop. All it's actual *results* are handed back via the global > Alan> variables select_readfds, select_writefds, etc. > > Alan> So there's nothing special about running pselect in the main thread > Alan> here, it's just not done because the run loop is required at the same > Alan> time. > > Alan> This means that if we decide we don't need to run the run loop (which > Alan> is something we used to do) then we could just call thread_select. And > Alan> just to confuse matters we have to run thread_select anyway, as that's > Alan> how Emacs chooses to run another lisp thread. So you'll see a call > Alan> near the top of the ns_select function with a zero timeout and we just > Alan> ignore the return value. > > I guess you mean this in ns_select_1, which does a non-blocking > pselect for 0 seconds on no file descriptors: > > else > { > struct timespec t = {0, 0}; > thread_select (pselect, 0, NULL, NULL, NULL, &t, sigmask); > } > > If itʼs there for the emacs thread infrastructure, is there a more > explicit way of doing whatever it does? I've no idea, I don't actually know much about how it works. IIRC Eli told me to add it years ago when I was trying to improve thread support... > Alan> Sub-threads, as you say, can't call the run loop, so for them > Alan> ns_select should act pretty much just like a call to pselect. > > OK. But it would be good if we could have a single code path, rather > than 2. I think that it makes more sense to just have an early return rather than go through all the nonsense required for the run loop when we don't actually use it. > Alan> Ultimately, ns_select should look to the caller just like a call to > Alan> pselect, or whatever. It should return whatever pselect would return > Alan> in that situation, and shouldn't behave differently, although you and > Alan> I know it's doing a whole bunch of other stuff behind the caller's > Alan> back. > > Alan> I scare quoted "need" above because the reality is that we don't > Alan> actually *need* to run the run loop in ns_select, it's just a > Alan> convenient place for it. > > Alan> The ideal situation would be for the run loop to run in it's own > Alan> thread and ns_select could then be replaced with a simple call to > Alan> thread_select like some of the other terms. > > Yes. I was a bit surprised when I discovered that weʼre starting and > stopping the run loop all the time. It makes reasoning about stuff a > lot harder. > > Alan> But implementing that comes with it's own set of nightmares. > > Such as? If we put the run loop in its own thread, running forever, > then the main emacs code (and emacs threads) can call > pselect/thread_select without having to communicate with the > fd_handler thread, which we could remove[1]. It would remove a bunch of > code thatʼs just needed to synchronize between the main thread, the > run loop, and the fd_handler thread, which is evidently fragile enough > that we keep futzing with it. The trouble is that if we move the run loop to it's own thread then everything else has to synchronise with it as it must be in the main thread, and all GUI calls must also be in the main thread. If we take a simple function like ns_clear_frame_area as an example: { NSRect r = NSMakeRect (x, y, width, height); NSView *view = FRAME_NS_VIEW (f); struct face *face = FRAME_DEFAULT_FACE (f); if (!view || !face) return; NSTRACE_WHEN (NSTRACE_GROUP_UPDATES, "ns_clear_frame_area"); r = NSIntersectionRect (r, [view frame]); ns_focus (f, &r, 1); [[NSColor colorWithUnsignedLong:NS_FACE_BACKGROUND (face)] set]; NSRectFill (r); ns_unfocus (f); return; } [view frame], [NSColor set] and NSRectFill all, I think, need to be run in the main thread. Odds are ns_focus and ns_unfocus also need to be largely run in the main thread. And this is a simple example, presumably we'll also need to dispatch from the main thread back to the Emacs thread on occasion. However this function needs to be run in the "Emacs" thread, so we need to take most of this function and dispatch it to the run loop to run it in the main thread. And we're not allowed to use Obj C blocks for this as GCC doesn't support them, so this means we need another function, or probably an object instance method. Last time I looked at this I think my approach was to create an "EmacsFrame" class that would handle all the gui work and provide a minimal interface for the Emacs C code. Perhaps I'm over-thinking it and it's actually quite straight-forward, but I'm pretty much on my own with this and have nobody to turn to for help. Frankly it's all a bit much for me, especially given that the Mac Port works perfectly already and I'm not really convinced of the requirement for support of the NS port. It feels like a waste of my time. (Cue gasps of outrage from the GNUstep community... Oh no, wait, they don't really care.) > Alan> Another approach I looked at briefly to simplify this is emulating > Alan> pselect in the run loop. It can monitor the read fds, but not the > Alan> write fds, so I gave up on that. > > Is that because macOS doesnʼt send events for fds becoming writeable? IIRC, and it's a long time since I looked at this so I could be misremembering, the NSFileHandle class lets you wrap an FD and then monitor it in the run loop so it will call a method when the FD has stuff to read, but there's just no way to do that with writes. I assume the idea is you should be using the NS file writing stuff and therefore don't need that functionality. So, rereading what you wrote, yes. -- Alan Third