From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 19 17:54:41 2021 Received: (at submit) by debbugs.gnu.org; 19 Oct 2021 21:54:41 +0000 Received: from localhost ([127.0.0.1]:52176 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mcx4C-0005ev-Lu for submit@debbugs.gnu.org; Tue, 19 Oct 2021 17:54:41 -0400 Received: from lists.gnu.org ([209.51.188.17]:54210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mcx4B-0005eo-8o for submit@debbugs.gnu.org; Tue, 19 Oct 2021 17:54:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55414) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mcx47-0002r4-9t for bug-gnu-emacs@gnu.org; Tue, 19 Oct 2021 17:54:39 -0400 Received: from kamnitnik.top ([2001:19f0:5001:bf2:5400:2ff:fee0:2626]:57826) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mcx44-0003Al-5O for bug-gnu-emacs@gnu.org; Tue, 19 Oct 2021 17:54:34 -0400 Received: from localhost (BSN-77-156-43.static.siol.net [193.77.156.43]) by kamnitnik.top (Postfix) with ESMTPSA id AD9F09CFB0 for ; Tue, 19 Oct 2021 21:54:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kamnitnik.top; s=mail; t=1634680468; bh=qq5iYf10Zk7g1ODcUBidV+IjxIUPBOzAnGLlLZ4x6sU=; h=From:To:Subject:Date:From; b=JrWfvpQo1ewiHkpP5Tz0Lu9ZVt1gwbKwu3MMff0d7YcCVWEO51tYFua9g1tsR8cLy xabuoxKw3REWhwh+NaPVFngASQPpsuLnmxg+7tLy/4YDT7coQfvmldzjkAOKCNmTeF A0tvyh0jkRWRbqKclSk/oLKP7AXOuIqPdqYh53B1JHNHE64P3Ap30VzAL6LsQbTDSF 60HOFJvNSiiNvjPh42LJu21pW6m9ktjZ4vIkj8E0yxFF8cFsrjjKOdkmtBxMSg7aDu zabGlUH53dYX5Yg2ckAXNgd+a26CMfHpTPLEiTLbSGBjVfG8eI6YFWpCfc0cRQ83pf 8iNngcOwUzC+Q== From: miha@kamnitnik.top To: bug-gnu-emacs@gnu.org Subject: 29.0.50; [PATCH] Avoid excessive specbinding in all-completions Date: Tue, 19 Oct 2021 23:58:17 +0200 Message-ID: <871r4goex2.fsf@miha-pc> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Received-SPF: pass client-ip=2001:19f0:5001:bf2:5400:2ff:fee0:2626; envelope-from=miha@kamnitnik.top; helo=kamnitnik.top X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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, FROM_SUSPICIOUS_NTLD=0.499, FROM_SUSPICIOUS_NTLD_FP=1.997, PDS_OTHER_BAD_TLD=0.452, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.7 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: If 'all-completions' is called under certain conditions, case-fold-search is specbound and unbound for each matching candidate. Because this variable is DEFVAR_PER_BUFFER, specbinding it is slow (scal [...] Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 0.9 SPF_FAIL SPF: sender does not match SPF record (fail) [SPF failed: Please see http://www.openspf.org/Why?s=mfrom; id=miha%40kamnitnik.top; ip=209.51.188.17; r=debbugs.gnu.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.51.188.17 listed in wl.mailspike.net] 0.5 FROM_SUSPICIOUS_NTLD_FP From abused NTLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-Debbugs-Envelope-To: submit 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.1 (/) --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain If 'all-completions' is called under certain conditions, case-fold-search is specbound and unbound for each matching candidate. Because this variable is DEFVAR_PER_BUFFER, specbinding it is slow (scales with number of buffers). This patch eliminates specbinding from the three core completion functions. Benchmark: (dotimes (i 300) (get-buffer-create (format " *test-buffer-%s*" i))) (let ((completion-regexp-list '("\\`.*?"))) (benchmark-run-compiled 50 (all-completions "" obarray #'boundp))) 9.9 seconds without patch, 0.83 seconds with patch applied. Note that for the performance issue to be observed, we must have a lot of live buffers, completion-regexp-list must be non-nil and a predicate must be passed to all-completions. The last two conditions are satisfied if we press M-x TAB. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Avoid-excessive-specbinding-in-all-completions.patch Content-Transfer-Encoding: quoted-printable From=20e74c44270965c725d4e6e27b2b1bebed1f5308a2 Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Miha=3D20Rihtar=3DC5=3DA1i=3DC4=3D8D?=3D Date: Tue, 19 Oct 2021 18:41:13 +0200 Subject: [PATCH] Avoid excessive specbinding in all-completions * src/minibuf.c (match_regexps): (Ftry_completion): (Fall_completions): (Ftest_completion): Use fast_string_match_internal to match against regexps in completion-regexp-list without having to bind case-fold-search. =2D-- src/minibuf.c | 105 +++++++++++++++----------------------------------- 1 file changed, 32 insertions(+), 73 deletions(-) diff --git a/src/minibuf.c b/src/minibuf.c index 0dc340e967..6c0cd358c5 100644 =2D-- a/src/minibuf.c +++ b/src/minibuf.c @@ -1545,6 +1545,27 @@ minibuf_conform_representation (Lisp_Object string, = Lisp_Object basis) return Fstring_make_multibyte (string); } =20 +static bool +match_regexps (Lisp_Object string, Lisp_Object regexps, + bool ignore_case) +{ + ptrdiff_t val; + for (; CONSP (regexps); regexps =3D XCDR (regexps)) + { + CHECK_STRING (XCAR (regexps)); + + val =3D fast_string_match_internal + (XCAR (regexps), string, + (ignore_case ? BVAR (current_buffer, case_canon_table) : Qnil)); + + if (val =3D=3D -2) + error ("Stack overflow in regexp matcher"); + if (val < 0) + return false; + } + return true; +} + DEFUN ("try-completion", Ftry_completion, Stry_completion, 2, 3, 0, doc: /* Return common substring of all completions of STRING in COL= LECTION. Test each possible completion specified by COLLECTION @@ -1578,6 +1599,7 @@ DEFUN ("try-completion", Ftry_completion, Stry_comple= tion, 2, 3, 0, is used to further constrain the set of candidates. */) (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate) { + Lisp_Object bestmatch, tail, elt, eltstring; /* Size in bytes of BESTMATCH. */ ptrdiff_t bestmatchsize =3D 0; @@ -1591,7 +1613,6 @@ DEFUN ("try-completion", Ftry_completion, Stry_comple= tion, 2, 3, 0, ? list_table : function_table)); ptrdiff_t idx =3D 0, obsize =3D 0; int matchcount =3D 0; =2D ptrdiff_t bindcount =3D -1; Lisp_Object bucket, zero, end, tem; =20 CHECK_STRING (string); @@ -1670,27 +1691,10 @@ DEFUN ("try-completion", Ftry_completion, Stry_comp= letion, 2, 3, 0, completion_ignore_case ? Qt : Qnil), EQ (Qt, tem))) { =2D /* Yes. */ =2D Lisp_Object regexps; =2D /* Ignore this element if it fails to match all the regexps. */ =2D { =2D for (regexps =3D Vcompletion_regexp_list; CONSP (regexps); =2D regexps =3D XCDR (regexps)) =2D { =2D if (bindcount < 0) =2D { =2D bindcount =3D SPECPDL_INDEX (); =2D specbind (Qcase_fold_search, =2D completion_ignore_case ? Qt : Qnil); =2D } =2D tem =3D Fstring_match (XCAR (regexps), eltstring, zero, Qnil); =2D if (NILP (tem)) =2D break; =2D } =2D if (CONSP (regexps)) =2D continue; =2D } + if (!match_regexps (eltstring, Vcompletion_regexp_list, + completion_ignore_case)) + continue; =20 /* Ignore this element if there is a predicate and the predicate doesn't like it. */ @@ -1701,11 +1705,6 @@ DEFUN ("try-completion", Ftry_completion, Stry_compl= etion, 2, 3, 0, tem =3D Fcommandp (elt, Qnil); else { =2D if (bindcount >=3D 0) =2D { =2D unbind_to (bindcount, Qnil); =2D bindcount =3D -1; =2D } tem =3D (type =3D=3D hash_table ? call2 (predicate, elt, HASH_VALUE (XHASH_TABLE (collection), @@ -1787,9 +1786,6 @@ DEFUN ("try-completion", Ftry_completion, Stry_comple= tion, 2, 3, 0, } } =20 =2D if (bindcount >=3D 0) =2D unbind_to (bindcount, Qnil); =2D if (NILP (bestmatch)) return Qnil; /* No completions found. */ /* If we are ignoring case, and there is no exact match, @@ -1849,7 +1845,6 @@ DEFUN ("all-completions", Fall_completions, Sall_comp= letions, 2, 4, 0, : VECTORP (collection) ? 2 : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection)); ptrdiff_t idx =3D 0, obsize =3D 0; =2D ptrdiff_t bindcount =3D -1; Lisp_Object bucket, tem, zero; =20 CHECK_STRING (string); @@ -1934,27 +1929,10 @@ DEFUN ("all-completions", Fall_completions, Sall_co= mpletions, 2, 4, 0, completion_ignore_case ? Qt : Qnil), EQ (Qt, tem))) { =2D /* Yes. */ =2D Lisp_Object regexps; =2D /* Ignore this element if it fails to match all the regexps. */ =2D { =2D for (regexps =3D Vcompletion_regexp_list; CONSP (regexps); =2D regexps =3D XCDR (regexps)) =2D { =2D if (bindcount < 0) =2D { =2D bindcount =3D SPECPDL_INDEX (); =2D specbind (Qcase_fold_search, =2D completion_ignore_case ? Qt : Qnil); =2D } =2D tem =3D Fstring_match (XCAR (regexps), eltstring, zero, Qnil); =2D if (NILP (tem)) =2D break; =2D } =2D if (CONSP (regexps)) =2D continue; =2D } + if (!match_regexps (eltstring, Vcompletion_regexp_list, + completion_ignore_case)) + continue; =20 /* Ignore this element if there is a predicate and the predicate doesn't like it. */ @@ -1965,11 +1943,6 @@ DEFUN ("all-completions", Fall_completions, Sall_com= pletions, 2, 4, 0, tem =3D Fcommandp (elt, Qnil); else { =2D if (bindcount >=3D 0) =2D { =2D unbind_to (bindcount, Qnil); =2D bindcount =3D -1; =2D } tem =3D type =3D=3D 3 ? call2 (predicate, elt, HASH_VALUE (XHASH_TABLE (collection), idx - 1)) @@ -1982,9 +1955,6 @@ DEFUN ("all-completions", Fall_completions, Sall_comp= letions, 2, 4, 0, } } =20 =2D if (bindcount >=3D 0) =2D unbind_to (bindcount, Qnil); =2D return Fnreverse (allmatches); } @@ -2068,7 +2038,7 @@ DEFUN ("test-completion", Ftest_completion, Stest_com= pletion, 2, 3, 0, the values STRING, PREDICATE and `lambda'. */) (Lisp_Object string, Lisp_Object collection, Lisp_Object predicate) { =2D Lisp_Object regexps, tail, tem =3D Qnil; + Lisp_Object tail, tem =3D Qnil; ptrdiff_t i =3D 0; =20 CHECK_STRING (string); @@ -2154,20 +2124,9 @@ DEFUN ("test-completion", Ftest_completion, Stest_co= mpletion, 2, 3, 0, return call3 (collection, string, predicate, Qlambda); =20 /* Reject this element if it fails to match all the regexps. */ =2D if (CONSP (Vcompletion_regexp_list)) =2D { =2D ptrdiff_t count =3D SPECPDL_INDEX (); =2D specbind (Qcase_fold_search, completion_ignore_case ? Qt : Qnil); =2D for (regexps =3D Vcompletion_regexp_list; CONSP (regexps); =2D regexps =3D XCDR (regexps)) =2D { =2D /* We can test against STRING, because if we got here, then =2D the element is equivalent to it. */ =2D if (NILP (Fstring_match (XCAR (regexps), string, Qnil, Qnil))) =2D return unbind_to (count, Qnil); =2D } =2D unbind_to (count, Qnil); =2D } + if (!match_regexps (string, Vcompletion_regexp_list, + completion_ignore_case)) + return Qnil; =20 /* Finally, check the predicate. */ if (!NILP (predicate)) =2D-=20 2.33.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJHBAEBCAAxFiEEmxVnesoT5rQXvVXnswkaGpIVmT8FAmFvP3kTHG1paGFAa2Ft bml0bmlrLnRvcAAKCRCzCRoakhWZP323EACisIn6GHCBQ089F7nEyUm0in3gEjC0 kZkK2G5vvqme+E0jrfI1MqrabT91VTX9u17jKDeX6oXkbMU8VSkHsfmKiTVh1HXi 2/lbyCaPCoq5cLKoRbk/eFhsXBHpu1x2qVrbQSCFRADGjvGWt76bb2L2sPPXHQID LqjywZry4wiJQ3nf2ia5kTaSBtsAcHZVzwBC+wrIFeP0Pp7aH3+huCmi3SATq61W TFuiUfEhPYsyJn+gENCbiMamWmCK6tHcp4um9rllROLWOjUPQLjf2aCM9F4+WOpj uuE2NIGrsVjPKitMIUsBp/sJPHmyYts5H0FCJI2cBNSSPTrj+akoenerEZbXhbCu JT8Ee6iVKmTJrY16UrKE2Sy4uIT+ceYr/tEULKqQ97QjxkJlGYmRQvbo0bmNORff SzsukVPPgU48opshrK+hPTTTqsJXlo8QIMs9VZRxrWM1EfKi08ZE9Ebj2z+mHqVV MJ+P/aUs9gd13TpfMB/x3jco9yjfXvH1K2UBGpl9WwFg1sApDtErYFWNEYcAjubE Tjy1MOe2ZQnGxiPN/Wzcj6fGJkIcd32BzUXBXjW0WZCF0jZVa8ZOiQzo+IQg1M0A CFdGFvocQMPXEUhlru6K3gkrQtC8IWcMhXAmbX/66AIv1UK0/4KhhGbIT5VHwYM1 0RNuT5DgstcBsw== =VFyS -----END PGP SIGNATURE----- --==-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 20 04:21:33 2021 Received: (at 51293) by debbugs.gnu.org; 20 Oct 2021 08:21:33 +0000 Received: from localhost ([127.0.0.1]:52633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md6qq-0007H6-O2 for submit@debbugs.gnu.org; Wed, 20 Oct 2021 04:21:33 -0400 Received: from quimby.gnus.org ([95.216.78.240]:44588) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md6qa-0007GQ-2e for 51293@debbugs.gnu.org; Wed, 20 Oct 2021 04:21:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=PY8TDndbVDJTBdzKZlyYQi69uJ6QVOrniJ3i67r/lpc=; b=tLyotzUzoWSWo1gDuI3OZLbrY4 u0bnvQivNezHI+PJnsSrMzTYlA8cSjOBOvnGksQvAtxmkddsEIyokHjpcSTw36jTdZ4K2VGl/KbyG npJ6a5go0EvPP/YUIS62l8Ft+rVsD/gv2pP/4J83hX8BcZh9qgUj1ZhPxMCPr9E78uhI=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1md6qQ-0005u0-If; Wed, 20 Oct 2021 10:21:09 +0200 From: Lars Ingebrigtsen To: miha@kamnitnik.top Subject: Re: bug#51293: 29.0.50; [PATCH] Avoid excessive specbinding in all-completions References: <871r4goex2.fsf@miha-pc> X-Now-Playing: The Soft Pink Truth's _Am I Free To Go?_: "Cybergod (Nausea cover)" Date: Wed, 20 Oct 2021 10:21:06 +0200 In-Reply-To: <871r4goex2.fsf@miha-pc> (miha@kamnitnik.top's message of "Tue, 19 Oct 2021 23:58:17 +0200") Message-ID: <87pms0nm31.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: miha@kamnitnik.top writes: > (dotimes (i 300) > (get-buffer-create (format " *test-buffer-%s*" i))) > > (let ((completion-regexp-list '("\\`.*?"))) > (benchmark-run-compiled 50 > (all-completions "" obarray #'boundp))) > > 9.9 [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: miha@kamnitnik.top writes: > (dotimes (i 300) > (get-buffer-create (format " *test-buffer-%s*" i))) > > (let ((completion-regexp-list '("\\`.*?"))) > (benchmark-run-compiled 50 > (all-completions "" obarray #'boundp))) > > 9.9 [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 T_SPF_TEMPERROR SPF: test of record failed (temperror) X-Debbugs-Envelope-To: 51293 Cc: 51293@debbugs.gnu.org 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.3 (-) miha@kamnitnik.top writes: > (dotimes (i 300) > (get-buffer-create (format " *test-buffer-%s*" i))) > > (let ((completion-regexp-list '("\\`.*?"))) > (benchmark-run-compiled 50 > (all-completions "" obarray #'boundp))) > > 9.9 seconds without patch, > 0.83 seconds with patch applied. Impressive! I've tested your patch, and everything seems to work for me (and all tests pass). It also simplifies the code, so I've pushed this to Emacs 29 now. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 20 04:21:21 2021 Received: (at control) by debbugs.gnu.org; 20 Oct 2021 08:21:21 +0000 Received: from localhost ([127.0.0.1]:52631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md6qf-0007Gh-IO for submit@debbugs.gnu.org; Wed, 20 Oct 2021 04:21:21 -0400 Received: from quimby.gnus.org ([95.216.78.240]:44610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md6qe-0007GV-A3 for control@debbugs.gnu.org; Wed, 20 Oct 2021 04:21:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=vFilRlkZawunNPUsRWzNdBpHpZDGtBSjoVa5In6XUAg=; b=Vt3WnYTJNEnLAheRrIKEURFpVN xo5LvidKnli4D4vae9RB6NHPSKYJ6TfTPqvt2Bjh5YQXQEs8if2FmM685yT+8/JKTorf+bGo3asNj LwlAItHeWBbnhxdm8w1Lj25Y2NUU3MZtb2XzJd25pW+sofyNlXpDwTVknjLJ4Yus5a48=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1md6qW-0005u9-Ru for control@debbugs.gnu.org; Wed, 20 Oct 2021 10:21:14 +0200 Date: Wed, 20 Oct 2021 10:21:12 +0200 Message-Id: <87o87knm2v.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #51293 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 51293 29.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control 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 (---) close 51293 29.1 quit From unknown Fri Aug 15 17:24:05 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 17 Nov 2021 12:24:08 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator