From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Po Lu Newsgroups: gmane.emacs.devel Subject: Re: call-process should not block process filters from running Date: Tue, 04 Jul 2023 12:09:14 +0800 Message-ID: <87ttukqpw5.fsf@yahoo.com> References: <83cz1fvjef.fsf@gnu.org> <83h6qnpieb.fsf@gnu.org> <837criq321.fsf@gnu.org> <87r0pprhfd.fsf@catern.com> <87o7kts4ba.fsf@yahoo.com> <87lefwrif5.fsf@catern.com> <834jmkn7zt.fsf@gnu.org> <87sfa4pjuu.fsf@catern.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19367"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-devel@gnu.org To: sbaugh@catern.com Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jul 04 06:10:12 2023 Return-path: Envelope-to: ged-emacs-devel@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 1qGXMi-0004s6-3L for ged-emacs-devel@m.gmane-mx.org; Tue, 04 Jul 2023 06:10:12 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qGXM3-0007kE-Gr; Tue, 04 Jul 2023 00:09:31 -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 1qGXLz-0007jp-MF for emacs-devel@gnu.org; Tue, 04 Jul 2023 00:09:28 -0400 Original-Received: from sonic311-25.consmr.mail.ne1.yahoo.com ([66.163.188.206]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qGXLx-0001jk-Oq for emacs-devel@gnu.org; Tue, 04 Jul 2023 00:09:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1688443762; bh=Qlr+WmqopXLL8SY6MGZGE20Uo01ukxGz/fEwh7nxKBc=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=cI1HbKXXFhOTcFTmiF3p3X6WoME1LlOe2PCnIGdfwPGfgRfesQ2R9wtqh+Do6Sg/aBGvNEPq6tYmNCP0cm4krV+3FlcsxVMSJlFZgyfBa8OeVoPcMv3OhkMXssKvXjt1kaZZff2/UbqHQEiCzKkaWu9NByKkI1RbFfIHbIP/VKAgqiFUa0WSnMvQCfWCltx26cPHtWlh7iRBRLD0u8LZJKLBmmw/VEK5+/bb1xsmu/LxXF+7HcbB63fjPYetA7y8hj8Zxw2yr/33F6ayIVS6XJyePQ+fQXr+E8MCAEoebOUh9xhiZwY4/+6o3ypjoMRoAZ6HrVgdw62SYo0F6s2ang== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1688443762; bh=buhh3aLwjRBj5m/EhQpIcg2bvgNKtbVwyqRD6YiFjXr=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=Mbv0tdOZ8Rtxc6Xv1r+NR1zKjOB5dwGSQJ1zXxkp+t7yLSynyPGyW8ikv7v/M73aRxD3jWZpl8bQobjnOHYem+TyaS1k1B9auFyJNIc2fDLjQL6DeEo03zR/SNs58tKSu3aGVzJEp61La0JIYfj2yYqF/zcjwWefBi6NKdK7/y85wSfjuRRrQ3XztsHsn/lgLy6j/6sJ84xCJJJQX3cCO5AarcnO17RmotUyV6F/UEjrbwIyO1zOiHNBfQSeI/l3sUwG4/mHJC3N3hihjg0d6s9t5O0sXu+N3zpePKLEoXP/M6pyfJ0UhqydY2ZHgu7c+C1DV+4JNQY9P06x2NcWSg== X-YMail-OSG: UwgOzhsVM1liYjbYltio2waZnm4niLdmvUZSWzxenPouoe6HbV97.a1oh0laK2s .UIWU8X5H5A5hMydPZeJLJKgWQjwLCyg3mLs7Frf6sCLeV1A2j1U7lNtHRqZhxxh10wawXVeXLyT mFQSLlC2FhaXX3pKIlWsd0WkWz6U4Di8VADOkn1XBwmSUI0sBUzT4BmvrxWP08noSDGC3z7ZZ3Xo QMq.Gy3ZC7P985.5NvSs_bUWDnySS3rrRBKRuO_yt2hXOlm8LMl5vfISPhG7XWQzMjUxMRX1vGWA 9CBj3u3oEed_x3kZqHrFupQ6WjU7_NTAizWm5s5I8RRw2hEp0ufQ86Nbit8v8Ngf4A83K80IxbKn OdmMlzXhMKtiX79eIawQLJE6PeMZWS1Ik.0RtE7OiyXkNh87jEX2cpDcCBAtFs1m5FoV1x820.ip VIdSSP0zZ3cE.NCI56eGQqW.JF_4lYp8FFfaPlKHXvom44qb00nj_GLORRbBqlNAWe6K.YejcWzu WcHD9sbgS9JkQzHZd0Cbf1EyRd6VSFn9WYVYI1ghYLlqgNy3i.54K4AkmFgWS5uRNdbJOuQij4fB Z3nOEPyzRFBmOlvWXufg3fIAAc3RUGBRQCivjPzK_5BzQaRGJULgfwgnZyvAnGjVOJEVRqy8IVEF lxYTMbUmpZfZ91yPvT_gghJwAx.XohuiRarJQhSjY0fb7cpjlfvx9NyxlaYBux7tVVr3_d9XAPPI e8RKC8zIo_AW3oCwb1SoAts6ZX7CNzsHA6WYVScR57ywqNkBSd71cPf.b3tCYRIjDFrrTmHwh6lL GEPF_OaXuWLvIK52s5Zi9wIz.WQUV5Uh5G5kMPw61M X-Sonic-MF: X-Sonic-ID: a1092ab8-cc9f-4623-b8c1-80cfa1aaec53 Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.ne1.yahoo.com with HTTP; Tue, 4 Jul 2023 04:09:22 +0000 Original-Received: by hermes--production-sg3-67fd64777-bps25 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID ffe85d694b658cbfb4d0a0369caaeed8; Tue, 04 Jul 2023 04:09:18 +0000 (UTC) In-Reply-To: <87sfa4pjuu.fsf@catern.com> (sbaugh@catern.com's message of "Mon, 03 Jul 2023 21:04:57 -0400") X-Mailer: WebService/1.1.21612 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Received-SPF: pass client-ip=66.163.188.206; envelope-from=luangruo@yahoo.com; helo=sonic311-25.consmr.mail.ne1.yahoo.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, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:307400 Archived-At: sbaugh@catern.com writes: > /* Clean up files, file descriptors and processes created by Fcall_process. */ This is a stray comment. > +struct synch_process { > + /* If nonzero, a process-ID that has not been reaped. */ > + pid_t pid; > + /* If a string, the name of a temp file that has not been removed. */ > + Lisp_Object tempfile; > + int* callproc_fd; > + Lisp_Object buffer; > +}; Please place the opening brace of this structure definition on a new line, fill the comments above each field, and write: int *callproc_fd; instead of int* callproc_fd; ISTM that this field could be named `fd' instead. > + struct synch_process synch_process = { > + .pid = 0, > + .tempfile = make_fixnum (0), > + .callproc_fd = callproc_fd, > + .buffer = Fcurrent_buffer (), > + }; Why not declare `sync_process' earlier? The code looks better that way. > + wait_reading_process_output(-1, -1, 0, display_on_the_fly, > + NULL, NULL, 0); > + swallow_events(display_on_the_fly); Please place a space between the function identifier and its parameter list. > if (display_on_the_fly) > break; > } > @@ -904,7 +897,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, > > /* Don't kill any children that the subprocess may have left behind > when exiting. */ > - synch_process_pid = 0; > + synch_process.pid = 0; > > SAFE_FREE_UNBIND_TO (count, Qnil); > > @@ -2035,11 +2028,6 @@ syms_of_callproc (void) > #endif > staticpro (&Vtemp_file_name_pattern); > > -#ifdef MSDOS > - synch_process_tempfile = make_fixnum (0); > - staticpro (&synch_process_tempfile); > -#endif Please make your modifications conditional on _not_ building the MS-DOS port: as it is a single process ``operating system'', Emacs does not run while a subprocess is running, so these changes are unnecessary. I've also pointed out a general issue with this change: when a timer or selection converter calls `call-process', it does not expect more timers to run from within. Assume that a timer periodically calls `rm /var/run/foo', and it takes a few seconds for `/bin/rm' to page in, enough for that timer to run again. Now, one of the calls to `rm' will fail and signal an error.