From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Pettersson Newsgroups: gmane.emacs.bugs Subject: bug#70032: 30.0.50; thread-yield inconsistency with macOS GUI and other platforms Date: Wed, 27 Mar 2024 16:44:02 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8757"; mail-complaints-to="usenet@ciao.gmane.io" To: 70032@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 27 16:45:18 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rpVSo-000203-1r for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 27 Mar 2024 16:45:18 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rpVSa-0006UR-ND; Wed, 27 Mar 2024 11:45:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rpVSY-0006UE-Nj for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 11:45:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rpVSY-0001xz-BJ for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 11:45:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rpVSY-000431-6o for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 11:45:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Daniel Pettersson Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Mar 2024 15:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 70032 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.171155426015333 (code B ref -1); Wed, 27 Mar 2024 15:45:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Mar 2024 15:44:20 +0000 Original-Received: from localhost ([127.0.0.1]:38203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpVRs-0003zD-8S for submit@debbugs.gnu.org; Wed, 27 Mar 2024 11:44:20 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:57104) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpVRo-0003yM-AM for submit@debbugs.gnu.org; Wed, 27 Mar 2024 11:44:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rpVRh-0006OR-NE for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 11:44:09 -0400 Original-Received: from mail-lf1-f43.google.com ([209.85.167.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rpVRf-0001Yd-UL for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 11:44:09 -0400 Original-Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-512e4f4e463so7767453e87.1 for ; Wed, 27 Mar 2024 08:44:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711554245; x=1712159045; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Qf1eGKcDnnvV+sZRrzFTfrKHx0m28fSXR67LR3kEw7g=; b=X/1oPnrKrtV/EdMZRDW5PG7+PVdy1vz468BoScEcEmMFROkS+Km3xgGOAsQDdSJHls FcngOhmB1fnJmk+61NsM15CFY0U4iHHcJwG4pYCOITtbbcNUwL2/EFkBCpROkAizIoo8 ACsBQCHwip4jqspm50KLZcqDNV1vGlWo4ddq2EYzsdn5/LuS+lult76KMwmBH602RI1x l5TB1cCTS4sEcZRSPa7SrvZE5r3vt7itKrOUn1r3Pf2HchuMW2uuZwk46mjN/IlAJVzL OLGWyzrcruwU9fXFk5bNHFML1p4dC0ANLTeh85zJ0WbfYtf2K7WLgo+r/F8zOTezqXS9 ldHg== X-Gm-Message-State: AOJu0Yx9uzg1PkVr4Be/Er5ld+XEjDK/PR5OoNEubsqqAlOu/oP2k5fn u6AoBdzAzD9kQPRC50Hp8+kTYnIDdDfmMxwHnKZauR3W4P5r7ocU6xjIxUDM X-Google-Smtp-Source: AGHT+IGPb1LEpDsYQFs+ILW/Mkm6ye/ihKZMr0HShdgqI2Tsk4bcDJWKiZa+1z3/fVIF8TyN61buDQ== X-Received: by 2002:ac2:58ed:0:b0:515:8c3e:5665 with SMTP id v13-20020ac258ed000000b005158c3e5665mr3785272lfo.27.1711554244483; Wed, 27 Mar 2024 08:44:04 -0700 (PDT) Original-Received: from Daniels-Air (c-72cde455.027-357-6d6c6d4.bbcust.telenor.se. [85.228.205.114]) by smtp.gmail.com with ESMTPSA id n27-20020a056512311b00b00515a7da64c8sm1506992lfb.133.2024.03.27.08.44.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 08:44:03 -0700 (PDT) Received-SPF: pass client-ip=209.85.167.43; envelope-from=daniel.dpettersson.net@gmail.com; helo=mail-lf1-f43.google.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:282143 Archived-At: (make-thread (lambda () (benchmark-progn (dotimes (_ 100000) (thread-yield)))) "benchmark-thread") The thread will finish in less then one second on macOS '-nw' and Linux (GUI and '-nw') (have not tested on Windows). On macOS GUI "benchmark-thread" will almost certainly never finish. The only way that I know to drive the thread forward is to generate input events, so you need to generate at 100000 input events for it to finish. With macOS GUI the Main thread does only seam to yield back to the other thread after an mouse/keyboard event. * src/nsterm.m: ns_select_1 /* emacs -nw doesn't have an NSApp, so we're done. */ if (NSApp == nil) return thread_select (pselect, nfds, readfds, writefds, exceptfds, timeout, sigmask); if (![NSThread isMainThread] || (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0)) thread_select (pselect, nfds, readfds, writefds, exceptfds, timeout, sigmask); else { struct timespec t = {0, timeout->tv_nsec}; thread_select (pselect, 0, NULL, NULL, NULL, &t, sigmask); } I don't understand Emacs threads well enough but it seams that the else block is the reason for the main thread not yielding to the "benchmark-thread" is the Main thread will almost always pselect with timeout {0, 0}. But if timeout is not zeroed Emacs becomes extremely unresponsive (but "benchmark-thread" will finish in the same amount of time as running emacs with '-nw') In GNU Emacs 30.0.50 (build 1, aarch64-apple-darwin23.1.0, NS appkit-2487.20 Version 14.1.1 (Build 23B81)) of 2023-12-20 built on Daniels-Air Repository revision: 281be72422f42fcc84d43f50723a3e91b7d03cbc Repository branch: master Windowing system distributor 'Apple', version 10.3.2487 System Description: macOS 14.1.1 Configured features: ACL DBUS GLIB GNUTLS JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date subr-x 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 dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 38459 8478) (symbols 48 5148 0) (strings 32 13180 1700) (string-bytes 1 386239) (vectors 16 10512) (vector-slots 8 164949 10278) (floats 8 24 23) (intervals 56 242 3) (buffers 992 11))