X-Loop: help-debbugs@HIDDEN Subject: bug#65211: 30.0.50; threads and accept-process-output Resent-From: Helmut Eller <eller.helmut@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 10 Aug 2023 15:06:02 +0000 Resent-Message-ID: <handler.65211.B.169167991928627 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 65211 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 65211 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.169167991928627 (code B ref -1); Thu, 10 Aug 2023 15:06:02 +0000 Received: (at submit) by debbugs.gnu.org; 10 Aug 2023 15:05:19 +0000 Received: from localhost ([127.0.0.1]:43827 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qU7Dy-0007Rc-7n for submit <at> debbugs.gnu.org; Thu, 10 Aug 2023 11:05:18 -0400 Received: from lists.gnu.org ([2001:470:142::17]:40436) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eller.helmut@HIDDEN>) id 1qU7Dt-0007RH-0B for submit <at> debbugs.gnu.org; Thu, 10 Aug 2023 11:05:16 -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 <eller.helmut@HIDDEN>) id 1qU7Dn-0005K5-1z for bug-gnu-emacs@HIDDEN; Thu, 10 Aug 2023 11:05:07 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <eller.helmut@HIDDEN>) id 1qU7Dj-000568-0n for bug-gnu-emacs@HIDDEN; Thu, 10 Aug 2023 11:05:06 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-3fe1e1142caso9245735e9.0 for <bug-gnu-emacs@HIDDEN>; Thu, 10 Aug 2023 08:05:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691679899; x=1692284699; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=IZK2EG0B2I8A4f5F0huuFX5YXUnCxk/18h+ZVbeYTME=; b=iyi7dh2tSrjTicxCPzeQmEYd5IMkF/ULo7uKwV/ddiIj963Sb9xYzoy8SOgeyNRgfh ug8X3sFH+NQMDNZJ2NUdhrxb26EYPyQNxYrDz6n8xywO0oCuwK6bkI0Ztrjzd4KF67Z5 JYSyWpGT9TbezmSc8JoISC+LgnGG0tR9znEi5qWo0Z9p68d14+zsfpdwjvMRJgj1wsNJ aToLCNSA3y05P2f4yis82SIzkZy9WRNzzVlRadsCbG36nc/2PFuT67LfrcDnBWEfdt6I poEEUyGvQXFjabVNVovm7NEovSQuRYMJpizG//KoZ6YSaWJCLJZ33i3kVINx+WJ2t6wV N+3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691679899; x=1692284699; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=IZK2EG0B2I8A4f5F0huuFX5YXUnCxk/18h+ZVbeYTME=; b=gpuLs1jyqik1JVfrVmto3Gi93OIKf8zRYMxmPmhRsHtQm+pgfzRX8r8koGSpXy7nwt Ya5HH5G0MEU4WDeDvP3T/RDM+c4zo7pNqHEYh8aQXAL0zk9zYmiVEEWPYU28j6joqpvn 8G7ZdAWvGWDb3ZA7OQ03rHDpb2WJt5YgzK9ELhmYkFTs1BHDeRZqH/DhUxvLy8Vkl+Wy g6uLYV7eMLYBJrzC73Znc1K+i8Fih2hHgRXK6FkBgb8LiOOpc6RqcpcGSXV/mQJoG30y BFzu3F1gXVRkK9jBGuX9eYQOJHAOfvJyRkVVQ01QtCK0TJKMrpB0fCkUylMVN+Ku07Rm b8sA== X-Gm-Message-State: AOJu0YxouJd7KtoGSVWSUPyxD9gUsOQmjKDuUOfb6zGdP6+ukh+9GL0j nxaE/pjzpf4J55jkoCGQzCA0HU57uCo= X-Google-Smtp-Source: AGHT+IEFQrGrYAlxiIQ5aB3drnI2D2R56X4zgWEhK1hB8fpH6COe4nfKaqCLU1dtLoJiJm2552IzxA== X-Received: by 2002:adf:fdc6:0:b0:317:731c:4d80 with SMTP id i6-20020adffdc6000000b00317731c4d80mr2099441wrs.24.1691679898899; Thu, 10 Aug 2023 08:04:58 -0700 (PDT) Received: from caladan (dialin-228086.xdsl.raiffeisen.net. [195.254.228.86]) by smtp.gmail.com with ESMTPSA id b13-20020adfe30d000000b003113ed02080sm2420217wrj.95.2023.08.10.08.04.58 for <bug-gnu-emacs@HIDDEN> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 08:04:58 -0700 (PDT) From: Helmut Eller <eller.helmut@HIDDEN> Date: Thu, 10 Aug 2023 17:04:48 +0200 Message-ID: <m21qgb2b1r.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=eller.helmut@HIDDEN; helo=mail-wm1-x332.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-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain The test case from below hangs when executed with emacs -Q --batch -l apo-tests.el -f ert-run-tests-batch-and-exit It's not 100% reproducible, but it seems to hang 80% of the time. The test is fairly complicated and involves a TLS connection, a sub-process and a background thread. The background thread starts a sub-process and reads all its output until the process terminates. Then the main thread opens a TLS connection, sends a HTTP request and tries to read the response. At this point, accept-process-output hangs even though there is output available. I think the reason for this problem is that the sub-process uses a file descriptor (usually number 6) and sets fd_callback_info[6].waiting_thread to the background thread (in compute_non_keyboard_wait_mask) . Later, the TLS connection receives a file descriptor with the same number (6) because the sub-process closed it already. That would be fine, however fd_callback_info[6].waiting_thread is still set to the background thread. So this time compute_non_keyboard_wait_mask doesn't include 6 in the wait mask. Because 6 is not in the wait mask, emacs_gnutls_record_check_pending will not be called and Emacs doesn't notice the buffered output. The intention in the code seems to be that clear_waiting_thread_info resets fd_callback_info[6].waiting_thread to NULL, however by the time that clear_waiting_thread_info is called, max_desc was reduced to 4, because somebody closed file descriptors 5 and 6. So clear_waiting_thread_info doesn't touch fd_callback_info[6]. A possible solution would be to reset the .waiting_thread field in delete_read_fd, like so: diff --git a/src/process.c b/src/process.c index 08cb810ec13..74d0bf252ab 100644 --- a/src/process.c +++ b/src/process.c @@ -513,6 +513,9 @@ delete_read_fd (int fd) { fd_callback_info[fd].func = 0; fd_callback_info[fd].data = 0; + + if (fd_callback_info[fd].waiting_thread == current_thread) + fd_callback_info[fd].waiting_thread = NULL; } } With this change, the test doesn't hang. Helmut --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline; filename=apo-tests.el Content-Transfer-Encoding: quoted-printable ;; -*- lexical-binding: t -*- (require 'ert) (require 'gnutls) (defun t--read (proc nchars) "Read at least NCHARS characters from process PROC. Return 'ok on success; otherwise return 'not-live." (let* ((buf (process-buffer proc)) (size (+ (buffer-size buf) nchars)) (result nil)) (t--accept-process-output proc 0) (while (eq result nil) (cond ((>=3D (buffer-size buf) size) (setq result 'ok)) ((not (process-live-p proc)) (setq result 'not-live)) (t (t--accept-process-output proc nil)))) result)) ;; a wrapper around accept-process-output for debugging (defun t--accept-process-output (proc timeout) (let ((buf (process-buffer proc))) (message "%s accept-process-output %S %s %s =E2=80=A6" (current-thread) proc (process-status proc) timeout) (let ((val (accept-process-output proc timeout))) (message "%s accept-process-output %S %s %s =3D> %S %d" (current-thread) proc (process-status proc) timeout val (buffer-size buf)) val))) (defun t--read-all (proc) (while (pcase-exhaustive (t--read proc 1) ('ok t) ('not-live nil))) (with-current-buffer (process-buffer proc) (buffer-string))) (defun t--make-buffer (name) (with-current-buffer (generate-new-buffer name t) (buffer-disable-undo) (set-buffer-multibyte nil) (current-buffer))) (ert-deftest t-tls () (thread-join (make-thread (lambda () (let* ((proc (make-process :name "cat" :command (list "cat") :sentinel (lambda (_ _)) :buffer (t--make-buffer "cat")))) (process-send-eof proc) (should (equal (t--read-all proc) "")))))) (let* ((host "www.example.net") (proc (make-network-process :name "tls" :host host :service 443 :tls-parameters (cons 'gnutls-x509pki (gnutls-boot-parameters :hostname host)) :buffer (t--make-buffer "tls") :sentinel (lambda (_ _)))) (request (format "GET / HTTP/1.1\r\nHost: %s\r\n\r\n" host))) (process-send-string proc request) (process-send-eof proc) (let* ((response (t--read-all proc))) (should (string-match "^HTTP/1.1 200 OK" response))))) ;; Local Variables: ;; read-symbol-shorthands: (("t-" . "apo-tests-")) ;; End: --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 71, x86_64-pc-linux-gnu, GTK+ Version 3.24.37, cairo version 1.16.0) of 2023-08-10 built on caladan Repository revision: 164588b174774eba0c3bd6999633a39bed748195 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101007 System Description: Debian GNU/Linux 12 (bookworm) Configured using: 'configure --enable-checking=yes --with-xpm=ifavailable --with-gif=ifavailable 'CFLAGS=-g -O1'' Configured features: CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 GTK3 ZLIB Important settings: value of $LANG: C.UTF-8 locale-coding-system: utf-8-unix --=-=-=--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Helmut Eller <eller.helmut@HIDDEN> Subject: bug#65211: Acknowledgement (30.0.50; threads and accept-process-output) Message-ID: <handler.65211.B.169167991928627.ack <at> debbugs.gnu.org> References: <m21qgb2b1r.fsf@HIDDEN> X-Gnu-PR-Message: ack 65211 X-Gnu-PR-Package: emacs Reply-To: 65211 <at> debbugs.gnu.org Date: Thu, 10 Aug 2023 15:06:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 65211 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 65211: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D65211 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#65211: 30.0.50; threads and accept-process-output Resent-From: Robert Pluim <rpluim@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 10 Aug 2023 15:22:02 +0000 Resent-Message-ID: <handler.65211.B65211.169168090530207 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 65211 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Helmut Eller <eller.helmut@HIDDEN> Cc: 65211 <at> debbugs.gnu.org Received: via spool by 65211-submit <at> debbugs.gnu.org id=B65211.169168090530207 (code B ref 65211); Thu, 10 Aug 2023 15:22:02 +0000 Received: (at 65211) by debbugs.gnu.org; 10 Aug 2023 15:21:45 +0000 Received: from localhost ([127.0.0.1]:43843 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qU7Tr-0007r7-HN for submit <at> debbugs.gnu.org; Thu, 10 Aug 2023 11:21:44 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:61706) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1qU7Tl-0007qp-6h for 65211 <at> debbugs.gnu.org; Thu, 10 Aug 2023 11:21:42 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-3fe82a7864bso1341525e9.3 for <65211 <at> debbugs.gnu.org>; Thu, 10 Aug 2023 08:21:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691680891; x=1692285691; 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=K+YHQxPFLms+Vt0s/3XLF5z6vOaBx19fmcxSu+0u+dQ=; b=jJQ12GKXp0Yau+bJ4st07SfVE0HjkYwOiihyas4UoT7V2GpB5Z+Do7SEBOdtqCX9cA 1F8UbmPWyYAQk7pMCM2w6xRgcGT9/EcnJ4MwHL2R14euKGihxfEBzvNLLgRhVNrwiPL2 yK6L6mNx0krBslhaUPgfFtMwyu/ESMQ1aeK54x/KrhylUZs3/a7F6+HT0Ug3VMK5wiZz XFRZYHrO2uOTe5HdhsKIly+B1qxNIC+tz8J0AUBCa166TOQ/0q+ru0domrTVE33w0dCN B5h0JnDVAS2hT0VqFc6x8nGfecmwk9SEjvRPczDYVvFUW5GdNLqY47SoOw0KjEVa+J4G GcYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691680891; x=1692285691; 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=K+YHQxPFLms+Vt0s/3XLF5z6vOaBx19fmcxSu+0u+dQ=; b=JjLxE7DzhzQctHBoyq46tQTkp4NYa5JrUf2mVE1k3fUhgq+uhbVQhKxu64YP29Hu8v DInGSWvdxQ1rQ50BRo6K4VO7qAQgfsCRHd3BO9YRmIqyzCFof1sCpU6/ToiM2aIkkS1Z hyCDV215f0Hkbk1d904AkzVXXTS4t3FY+SUeyPB427hpkn19FbHYQRR85C0Dv+M/5Yew AzsDuVu8x1xDWvk7x7eb3iWBFFW1KyxnZ90H42CZg4/8tNVNWa+cGaXO5hn/SE2i7sZM lWWgHZ4/CtYFUxzpQivnX6G7muCtUCk1o2YHB++hwqdTpAGhsLB90gYblD8EOkKUZ0pw 6wNQ== X-Gm-Message-State: AOJu0Yw5tS4JzXRBZipnrdnQ8DFByBgdjVlSutTmOsNdLvmtAY0M9za6 94/i5MLNLGpfxfVYY4MNqk6nWGr4x2E= X-Google-Smtp-Source: AGHT+IEWYcCuju+pnXCY6C90Q4Xtd0qpUzAGFY0I8NXKdu1sVi2AYnmaGUSkWEKxb0QOkK80RKCKlw== X-Received: by 2002:a7b:c5d4:0:b0:3f9:b244:c294 with SMTP id n20-20020a7bc5d4000000b003f9b244c294mr2468551wmk.35.1691680890615; Thu, 10 Aug 2023 08:21:30 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb50:b086:92d7:f1ed:48e0]) by smtp.gmail.com with ESMTPSA id p4-20020a1c7404000000b003fe1a092925sm2422649wmc.19.2023.08.10.08.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 08:21:29 -0700 (PDT) From: Robert Pluim <rpluim@HIDDEN> In-Reply-To: <m21qgb2b1r.fsf@HIDDEN> (Helmut Eller's message of "Thu, 10 Aug 2023 17:04:48 +0200") References: <m21qgb2b1r.fsf@HIDDEN> Date: Thu, 10 Aug 2023 17:21:28 +0200 Message-ID: <87sf8q6hzb.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) >>>>> On Thu, 10 Aug 2023 17:04:48 +0200, Helmut Eller <eller.helmut@gmail.= com> said: Helmut> The test case from below hangs when executed with Helmut> emacs -Q --batch -l apo-tests.el -f ert-run-tests-batch-and-e= xit Helmut> It's not 100% reproducible, but it seems to hang 80% of the tim= e. Helmut> The test is fairly complicated and involves a TLS connection, a Helmut> sub-process and a background thread. The background thread sta= rts a Helmut> sub-process and reads all its output until the process terminat= es. Then Helmut> the main thread opens a TLS connection, sends a HTTP request an= d tries Helmut> to read the response. At this point, accept-process-output han= gs even Helmut> though there is output available. Helmut> I think the reason for this problem is that the sub-process use= s a file Helmut> descriptor (usually number 6) and sets Helmut> fd_callback_info[6].waiting_thread to the background thread (in Helmut> compute_non_keyboard_wait_mask) . Later, the TLS connection re= ceives a Helmut> file descriptor with the same number (6) because the sub-proces= s closed Helmut> it already. That would be fine, however Helmut> fd_callback_info[6].waiting_thread is still set to the backgrou= nd Helmut> thread. So this time compute_non_keyboard_wait_mask doesn't in= clude 6 Helmut> in the wait mask. Because 6 is not in the wait mask, Helmut> emacs_gnutls_record_check_pending will not be called and Emacs = doesn't Helmut> notice the buffered output. Helmut> The intention in the code seems to be that clear_waiting_thread= _info Helmut> resets fd_callback_info[6].waiting_thread to NULL, however by t= he time Helmut> that clear_waiting_thread_info is called, max_desc was reduced = to 4, Helmut> because somebody closed file descriptors 5 and 6. So Helmut> clear_waiting_thread_info doesn't touch fd_callback_info[6]. Helmut> A possible solution would be to reset the .waiting_thread field= in Helmut> delete_read_fd, like so: Helmut> diff --git a/src/process.c b/src/process.c Helmut> index 08cb810ec13..74d0bf252ab 100644 Helmut> --- a/src/process.c Helmut> +++ b/src/process.c Helmut> @@ -513,6 +513,9 @@ delete_read_fd (int fd) Helmut> { Helmut> fd_callback_info[fd].func =3D 0; Helmut> fd_callback_info[fd].data =3D 0; Helmut> + Helmut> + if (fd_callback_info[fd].waiting_thread =3D=3D current_t= hread) Helmut> + fd_callback_info[fd].waiting_thread =3D NULL; Helmut> } Helmut> } Hmm. Maybe putting it in `deactivate_process' is better (not that I=CA=BCve tested =F0=9F=98=BA) Robert --=20
X-Loop: help-debbugs@HIDDEN Subject: bug#65211: 30.0.50; threads and accept-process-output Resent-From: Helmut Eller <eller.helmut@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 10 Aug 2023 16:26:01 +0000 Resent-Message-ID: <handler.65211.B65211.16916847084385 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 65211 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim <rpluim@HIDDEN> Cc: 65211 <at> debbugs.gnu.org Received: via spool by 65211-submit <at> debbugs.gnu.org id=B65211.16916847084385 (code B ref 65211); Thu, 10 Aug 2023 16:26:01 +0000 Received: (at 65211) by debbugs.gnu.org; 10 Aug 2023 16:25:08 +0000 Received: from localhost ([127.0.0.1]:43910 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qU8TB-00018b-Oj for submit <at> debbugs.gnu.org; Thu, 10 Aug 2023 12:25:08 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:42331) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eller.helmut@HIDDEN>) id 1qU8T5-00017w-UT for 65211 <at> debbugs.gnu.org; Thu, 10 Aug 2023 12:25:04 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-3fe4b95c371so6510945e9.1 for <65211 <at> debbugs.gnu.org>; Thu, 10 Aug 2023 09:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691684694; x=1692289494; 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=DJtmwUto7xkek64giLhRwUSgdKTRTS8kq95n+EuyMIE=; b=S+Wn7XCCPryYvtOcm69KLFg9hr73MoG68UoVemjv2mHTYbvD79eeEus9ebWVIMaZiU 9tc58IkVaLRyg8j/5EepXy7rpJMikA3gcGsPxWDnroyB8I3XtXdcIWxuGy2EyM+J5szs Q3/Wmk7SlEnxF4APDaQRb2FWpU0cZEf8ISL5nSX/OsA5vdwgCeBwBcIs8sUjGlgoRGO6 gfeGvlrA+lRdtRKFX6FfrGFW9CljJApIym707AGDSxcyCKLogcfE0zsSUbsZAHE9qCXw yYWXiNkOKMwG1OD5/peYuIa3t2VXdR3KhSzuts71wMfcmjOn2qwnybmUVXrZ6pTOkoFF MLLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691684694; x=1692289494; 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=DJtmwUto7xkek64giLhRwUSgdKTRTS8kq95n+EuyMIE=; b=YIbRw5dtviv8wlrhnapqBLrHAbzkgHtcYhey8zoBpeWbOJIG4gBX3D3DyfgOeXlfE2 s3v0ppaPgSalnIZP11Ffb9531AtY4pKg1TS8wBv3je7Yvn5FNN5f+kHxiXHHsOl3Zz0w CaWwKPRqh7Nlg3GV7ScivSpFI2F7DAR+qpIEDc19E8V3A6/yL1szBl9aqYFlROutZjKG USGmwaOz0vC6NHKRfuJDxd8rI/a+vzEo8d+pfGNLdVXEuloToGsa5ESWw6Rii5zzQLCt OyXbBb1J63fuFfwzHKuDCHSFmz/w5MjKYMjp/oEwK5XEr/9tEmQPscw117F9SMjdYShw Fvog== X-Gm-Message-State: AOJu0Yw7zKgnhEY8GOXovBWcNEs1fsNVtsNFVUJn18iG4eDc8IGLus+F OBBTbV/Z2y9WsbY/pNbGCzsDvbN8jwA= X-Google-Smtp-Source: AGHT+IG3YiQkbdMZTGEyUm0seBb2GJpfSVXtPUDgOrUBr04TIepnrP5fERncJgLpbJUk9ATtat+vCA== X-Received: by 2002:a05:600c:3786:b0:3fe:23ec:2494 with SMTP id o6-20020a05600c378600b003fe23ec2494mr2120822wmr.7.1691684693926; Thu, 10 Aug 2023 09:24:53 -0700 (PDT) Received: from caladan (dialin-228086.xdsl.raiffeisen.net. [195.254.228.86]) by smtp.gmail.com with ESMTPSA id t15-20020a7bc3cf000000b003fe601a7d46sm5511277wmj.45.2023.08.10.09.24.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 09:24:53 -0700 (PDT) From: Helmut Eller <eller.helmut@HIDDEN> In-Reply-To: <87sf8q6hzb.fsf@HIDDEN> (Robert Pluim's message of "Thu, 10 Aug 2023 17:21:28 +0200") References: <m21qgb2b1r.fsf@HIDDEN> <87sf8q6hzb.fsf@HIDDEN> Date: Thu, 10 Aug 2023 18:24:52 +0200 Message-ID: <m2o7jerhkb.fsf@HIDDEN> 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-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, Aug 10 2023, Robert Pluim wrote: > Hmm. Maybe putting it in `deactivate_process' is better (not that I=CA=BC= ve > tested =F0=9F=98=BA) That's for the maintainers to decide. It seems to work too. To me, delete_read_fd feels like the appropriate place. For symmetry, delete_write_fd should probably also do something with .waiting_thread, but coming up with a test case for that is beyond my understanding of this code. Helmut
X-Loop: help-debbugs@HIDDEN Subject: bug#65211: 30.0.50; threads and accept-process-output Resent-From: Helmut Eller <eller.helmut@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 11 Aug 2023 08:34:02 +0000 Resent-Message-ID: <handler.65211.B65211.16917427849445 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 65211 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim <rpluim@HIDDEN> Cc: 65211 <at> debbugs.gnu.org Received: via spool by 65211-submit <at> debbugs.gnu.org id=B65211.16917427849445 (code B ref 65211); Fri, 11 Aug 2023 08:34:02 +0000 Received: (at 65211) by debbugs.gnu.org; 11 Aug 2023 08:33:04 +0000 Received: from localhost ([127.0.0.1]:44858 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qUNZv-0002SG-Ie for submit <at> debbugs.gnu.org; Fri, 11 Aug 2023 04:33:04 -0400 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]:56439) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eller.helmut@HIDDEN>) id 1qUNZt-0002Rl-Hq for 65211 <at> debbugs.gnu.org; Fri, 11 Aug 2023 04:33:02 -0400 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b9a2033978so26718421fa.0 for <65211 <at> debbugs.gnu.org>; Fri, 11 Aug 2023 01:33:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691742775; x=1692347575; h=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=RRRTt6p2pi6raXPk1D3iPMwvaZhTCklLK5kXqf8DYtI=; b=kMrEEHB7qseVm2+31Xrjsi1hoO3tX8Pxb+e20nSRVThiywM3rppVS+GKe97dRoqNYW Lb/EMUqWlxcPBHB5S5v3NABRUelY1daOBASEVeQ7XULrisifYzOM3ZH5tvSZALi4sIDb O/RL689qTvp+qySSeEgAcfhAEMP5iR+YFqw0i+bG+DSpjgTZS6dw7cLUdUnQdLxVURPt 4VgBLDn07yqqhsZM03zysT7KcexpSP1JU/pbyllb2TbuoGT3a58V2zqwlrnPj+Vr5I+4 BHx1TI+xhAE2ucBMI6/BizgCH0ZBfJZSDd54/gJACI5EpJpWtlj/j7vSKVt7WU8+voC6 qvcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691742775; x=1692347575; h=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=RRRTt6p2pi6raXPk1D3iPMwvaZhTCklLK5kXqf8DYtI=; b=FzC5acn0z8Ewm+NOJT5YndWDN5xog/8yvFShUBBhAFqFl4w8jfJj36UeNlGQVd80dg hO9GqFNsm8lVRUWSF8LQYFk1GYIuGR6v3c84f89Ka+V52ojzbGv3Q11BMuGT2e8tioS+ I2ZRKuKFCltXanFTWxPPq3kHHHpAHddslVxqgWcXgeNBnC48cXbN+CxGiz568x5cH5lZ AIQEwXPoH6jmRqkdjSFkShwA9FKBZMIYxwd6htdSPNN+Cx40rJW3Z59tzQGPiHqpI6cU WT97hJtYVssPhtaywPJ8M2B3/ZT3kveVbYLvwRFd8Bgtz5EosESYOb3XatlXFebrDZNu 0CBw== X-Gm-Message-State: AOJu0YwunQMTC+V0Z4tAb/yiUISIh8AchVU5YK9hwmjUjjBvJR4/qzjd NmS4+kdd6XJLqU+7dWRh8+eLTgwEMvw= X-Google-Smtp-Source: AGHT+IEzDeCSW8MUsCHnWncqqYqVNSAVcuv8jUv2GyfiU4HsM9BdHZugQakxu92BHJ+EBjU1cadFGg== X-Received: by 2002:a2e:b616:0:b0:2b6:ea3b:f082 with SMTP id r22-20020a2eb616000000b002b6ea3bf082mr1041416ljn.38.1691742774701; Fri, 11 Aug 2023 01:32:54 -0700 (PDT) Received: from caladan ([185.127.213.71]) by smtp.gmail.com with ESMTPSA id x16-20020a05600c2a5000b003fe13c3ece7sm7387488wme.10.2023.08.11.01.32.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Aug 2023 01:32:54 -0700 (PDT) From: Helmut Eller <eller.helmut@HIDDEN> In-Reply-To: <87sf8q6hzb.fsf@HIDDEN> (Robert Pluim's message of "Thu, 10 Aug 2023 17:21:28 +0200") References: <m21qgb2b1r.fsf@HIDDEN> <87sf8q6hzb.fsf@HIDDEN> Date: Fri, 11 Aug 2023 10:32:53 +0200 Message-ID: <m2il9mq8qy.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Thu, Aug 10 2023, Robert Pluim wrote: > Hmm. Maybe putting it in `deactivate_process' is better (not that I=CA=BC= ve > tested =F0=9F=98=BA) After a night of sleep, it occurred to me that this could also be considered a problem of incomplete initialization of the fd_callback_info[fd] struct. So I wondered who is supposed to initialize it. Unfortunately, there is half a dozen of add_<foo>_fd functions that set various bits, some call each other, some duplicate code. None of them sets the waiting_thread slot. And there is no single point that clears everything out (except init_process_emacs). I also discovered that recompute_max_desc considers an fd unused if the .flags field is zero. Luckily, recompute_max_desc is only called in three places: delete_write_fd, delete_keyboard_wait_descriptor and deactivate_process. The call in deactivate_process seems redundant as it calls the other two anyway. It seems easier to re-initialize the struct when it becomes unused than to initialize it when it is used the first time. So I'm proposing the patch below that moves the re-initialization to one single place, namely: recompute_max_desc. Helmut --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Re-initialize-fd_callback_data-fd-more-thoroughly.patch From 675a76b297e9f050f719489a1419f0278ad8e9ae Mon Sep 17 00:00:00 2001 From: Helmut Eller <eller.helmut@HIDDEN> Date: Fri, 11 Aug 2023 10:31:24 +0200 Subject: [PATCH] Re-initialize fd_callback_data[fd] more thoroughly The waiting_thread field was not re-initialized properly when a a closed file descriptor resued by another process. (bug#65211) As recompute_max_desc must be called when a file descriptor becomes unused, we can do some re-initialization there. * src/process.c (recompute_max_desc): Take the fd that was just deleted as argument fd. If the flags field is 0, reset the rest of the struct too. (delete_write_fd, delete_keyboard_wait_descriptor): Update callers accordingly. (delete_read_fd): This is now just an alias for delete_keyboard_wait_descriptor. (deactivate_process): Remove the call to recompute_max_desc, as delete_read_fd is called anyway. --- src/process.c | 46 ++++++++++++++++------------------------------ 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/src/process.c b/src/process.c index 08cb810ec13..cd5fd97e9d6 100644 --- a/src/process.c +++ b/src/process.c @@ -507,13 +507,6 @@ void delete_read_fd (int fd) { delete_keyboard_wait_descriptor (fd); - - eassert (0 <= fd && fd < FD_SETSIZE); - if (fd_callback_info[fd].flags == 0) - { - fd_callback_info[fd].func = 0; - fd_callback_info[fd].data = 0; - } } /* Add a file descriptor FD to be monitored for when write is possible. @@ -544,19 +537,22 @@ add_non_blocking_write_fd (int fd) } static void -recompute_max_desc (void) +recompute_max_desc (int fd) { - int fd; - + eassert (0 <= fd && fd < FD_SETSIZE); eassert (max_desc < FD_SETSIZE); - for (fd = max_desc; fd >= 0; --fd) - { + + if (fd_callback_info[fd].flags == 0) + fd_callback_info[fd] = (struct fd_callback_data){ 0 }; + + if (fd == max_desc) + for (; fd >= 0; --fd) if (fd_callback_info[fd].flags != 0) - { - max_desc = fd; - break; - } - } + { + max_desc = fd; + break; + } + eassert (max_desc < FD_SETSIZE); } @@ -569,17 +565,10 @@ delete_write_fd (int fd) if ((fd_callback_info[fd].flags & NON_BLOCKING_CONNECT_FD) != 0) { if (--num_pending_connects < 0) - emacs_abort (); + emacs_abort (); } fd_callback_info[fd].flags &= ~(FOR_WRITE | NON_BLOCKING_CONNECT_FD); - if (fd_callback_info[fd].flags == 0) - { - fd_callback_info[fd].func = 0; - fd_callback_info[fd].data = 0; - - if (fd == max_desc) - recompute_max_desc (); - } + recompute_max_desc (fd); } static void @@ -4809,8 +4798,6 @@ deactivate_process (Lisp_Object proc) delete_read_fd (inchannel); if ((fd_callback_info[inchannel].flags & NON_BLOCKING_CONNECT_FD) != 0) delete_write_fd (inchannel); - if (inchannel == max_desc) - recompute_max_desc (); } } @@ -8134,8 +8121,7 @@ delete_keyboard_wait_descriptor (int desc) fd_callback_info[desc].flags &= ~(FOR_READ | KEYBOARD_FD | PROCESS_FD); - if (desc == max_desc) - recompute_max_desc (); + recompute_max_desc (desc); #endif } -- 2.39.2 --=-=-=--
Received: (at control) by debbugs.gnu.org; 8 Sep 2023 17:25:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 08 13:25:00 2023 Received: from localhost ([127.0.0.1]:45492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qefE3-0005fx-Rt for submit <at> debbugs.gnu.org; Fri, 08 Sep 2023 13:25:00 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]:55625) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1qefE1-0005fh-Ks for control <at> debbugs.gnu.org; Fri, 08 Sep 2023 13:24:58 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2bcb89b4767so38674101fa.3 for <control <at> debbugs.gnu.org>; Fri, 08 Sep 2023 10:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694193889; x=1694798689; darn=debbugs.gnu.org; h=to:subject:message-id:date:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=/x2qg9bMyijf4abKKTg+PiTl0g/OC4gGoXmnHNTYSAU=; b=TGLinutMr2s4M0Dz2jXZk7S6TfMyG4jcCzLBm4gFQxlFPFF5xzyrT3hWjGKQFs/1f5 VV2Ae7nltkqFdWCkRZ09wPjoWLs39WYn04q/MOVbmEkgdanmEdz9cwLz06v7uZ97vCZS HwjnrXYrc5XktoRrscamm5OWQ9xcIZSalabJ79pVEv+Lvx7TuEg4GcX6uYoAJIR8I/ZT xbribP/w+6ewJuniO7mc8VanySU1B3agsUSTmQDmoRPqcAb8+NmlDz0QUGIudCeX7+Kn VW44SIT3nSc6W04jmP+IZ50jKWSvJ9XNtUzWl6qRZ5fxmzSfh8ODUcNHUPdhgP5x9gJg TCpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694193889; x=1694798689; h=to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=/x2qg9bMyijf4abKKTg+PiTl0g/OC4gGoXmnHNTYSAU=; b=BwavvpRmP8br+kHRujHgPEHu4bTId2ouynUP6LQAgk+lNdcf7iuM9/yPiXRwWOeBMN INwGUDBP7i9VP52iQVc27kND4k/LCSAEVY78z99podiO526GoC0Kg4h85PpIn32+dGAE v+iSN7h+C6tl1Z8n8BdwzNOwKBsPjXqXeCCutdP1sde6qHNha7VULDrF669Uq/ECiczF W1KBMmlDC7XmGariPizV2itgnRp6J6R1Qftlei8j79WNneBBSYI4NbEtffBT8SJtWQsl M2iZ7HTmGzMDkTWPzQmuD1eQaDWvhopIHrbjkVcH9uFSrV6YAWSdqOmS/hN0FfudUZcR 07tw== X-Gm-Message-State: AOJu0Yx0AwhxXRe3OX4tcZVPtZXXhLsr8GsOm2sgtJDxG/pUtwtqJKxY IjXfmoNs3SNuQYGlzsL+1oPM2QcotCJTGWkIcN22Xjtgcc8= X-Google-Smtp-Source: AGHT+IFDJBY05DZc7pPjXI2qwWHk2xSELIjhcZu/WltnGP26/0GIPFu5BTw0iDwxcoKSKb0p+VQNd2jI/N213cqyLz0= X-Received: by 2002:a2e:8ecc:0:b0:2bc:b0ae:a9e5 with SMTP id e12-20020a2e8ecc000000b002bcb0aea9e5mr2428124ljl.42.1694193889087; Fri, 08 Sep 2023 10:24:49 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 8 Sep 2023 10:24:48 -0700 From: Stefan Kangas <stefankangas@HIDDEN> MIME-Version: 1.0 Date: Fri, 8 Sep 2023 10:24:48 -0700 Message-ID: <CADwFkm=3OQU0+37t+1LM9_LBw19cY2fxkZH7pkWzva65LwPt2Q@HIDDEN> Subject: control message for bug #65211 To: control <at> debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) tags 65211 + patch quit
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.