From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#54062: 29.0.50; [PATCH] Eshell should inform processes when a pipe is broken Date: Sun, 20 Feb 2022 12:17:08 -0800 Message-ID: <272c6d13-6d35-a896-1468-2c9bc3befe87@gmail.com> References: <7da3e8b2-7400-dca6-6d92-0a60e3d9c215@gmail.com> <83mtinz222.fsf@gnu.org> <83ley6y5gx.fsf@gnu.org> <83a6emxak3.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------649AAEDE1541CE14DAD2A0A3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11706"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 54062@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Feb 20 21:18:25 2022 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 1nLsf2-0002w1-TQ for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 20 Feb 2022 21:18:25 +0100 Original-Received: from localhost ([::1]:58356 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nLsf1-0000oF-FP for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 20 Feb 2022 15:18:23 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:41132) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nLsei-0000kF-BW for bug-gnu-emacs@gnu.org; Sun, 20 Feb 2022 15:18:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40055) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nLsef-0006CY-Qk for bug-gnu-emacs@gnu.org; Sun, 20 Feb 2022 15:18:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nLsef-0007Jc-N8 for bug-gnu-emacs@gnu.org; Sun, 20 Feb 2022 15:18:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 20 Feb 2022 20:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54062 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 54062-submit@debbugs.gnu.org id=B54062.164538823926460 (code B ref 54062); Sun, 20 Feb 2022 20:18:01 +0000 Original-Received: (at 54062) by debbugs.gnu.org; 20 Feb 2022 20:17:19 +0000 Original-Received: from localhost ([127.0.0.1]:33951 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nLsdy-0006sF-8U for submit@debbugs.gnu.org; Sun, 20 Feb 2022 15:17:18 -0500 Original-Received: from mail-pl1-f173.google.com ([209.85.214.173]:42606) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nLsdw-0006nj-3e for 54062@debbugs.gnu.org; Sun, 20 Feb 2022 15:17:16 -0500 Original-Received: by mail-pl1-f173.google.com with SMTP id c3so1630311plh.9 for <54062@debbugs.gnu.org>; Sun, 20 Feb 2022 12:17:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=TxytXu5hDJi/2crwqEL2HkXnft7bPmfYFDmlgBIkNcQ=; b=Iju284BCpbC8vox/AmO7irJA/bc9tFVxj/hdlML1IzKX0wx2C7cQA1IfirgrVqv6cc awVeVmfJVwrzRG9XAXC4czIfG4ZuFiYpxYlo0VKvcrJNxItdlNBjqJP3ZkJz93Tllqrh 3Z9U1ev+z953idnj8YGiDGC3CeR57/u9EQDAD83gDybZJ7/faQwEJWr4FhOmBFkTV+wV VqZlPmraHiXf1gmQiIuemCQNrluqfHsZ33mv+8VBlviToy4VIJThwYUKiuUOXtnP/orz PUh0WNfJGeKMpyYXLeMxM5X93JZqm9G2j85b0PpwgV1Xp2Zsa1mjJYERVKtUiOpA4unM 5JrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=TxytXu5hDJi/2crwqEL2HkXnft7bPmfYFDmlgBIkNcQ=; b=wN7UtT5KxFnP3ZHQLOe5O7mOUXfV2rhHzh/Ttsk8aeAkQwJJWRa7ze0p40allghFuB XACbusil4y4TXwwO1mQ0QS3aMdibHcPMiiMcttEMJwtl05hA6M4DIYFlruUdGxrthb2u OHBqr9kLhYhEC3GNCOWhLCm7ucI9L+jEKuVzqowGmXbz014KJkUVj3C3LJ+q0inwDhj9 Ki+VnbFDVcHWQmSnaQRrkPvjJoziuXHhSf0dnQqgc2zozI26VhlbAvlyxkHHGvi9LI0b +V3fbkRlShIiAk2+/yNL+FCi6mU6MEPE6qRDUvkRqc/4XZ2wAMT2OabzRcAEMo0Rf+ZB DAdw== X-Gm-Message-State: AOAM532PiEdTKFcX64ug1HIFm536Q3ndCU1hPjO97q9MoUIPl8apEb+Y j6XmHB3G9LaxirKCdK3KP2R7ZBIDIdw= X-Google-Smtp-Source: ABdhPJyp/F1PCjArxYIRg0F5M/x00nb/WJ8PlTNdzrSk79SUvbIGA64f+Js8Xjh+VmKpCqcCIArLVA== X-Received: by 2002:a17:902:f20c:b0:14f:b0a4:726a with SMTP id m12-20020a170902f20c00b0014fb0a4726amr3171309plc.47.1645388230120; Sun, 20 Feb 2022 12:17:10 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id a15sm15785508pgd.11.2022.02.20.12.17.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 20 Feb 2022 12:17:09 -0800 (PST) In-Reply-To: <83a6emxak3.fsf@gnu.org> Content-Language: en-US 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" Xref: news.gmane.io gmane.emacs.bugs:227274 Archived-At: This is a multi-part message in MIME format. --------------649AAEDE1541CE14DAD2A0A3 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2/19/2022 11:27 PM, Eli Zaretskii wrote: >> Cc: 54062@debbugs.gnu.org >> From: Jim Porter >> Date: Sat, 19 Feb 2022 13:18:16 -0800 >> >>> Many console programs catch SIGINT, though. >>> >>> Can't we terminate ("kill") the process instead? Or maybe deleting >>> the process object is enough? >> >> That might work; it would definitely be better than `interrupt-process'. >> On the other hand, I think it would be nice to handle this case by >> breaking the pipe if possible, since that would be closer to how it >> works in regular shells, as I understand it. > > I meant killing the process as fallback for when SIGPIPE is not > supported. Ok, I've updated the patch to do this, with a note about how the behavior isn't quite correct. The current patch should work in most real-world cases, but if someone runs into a bug with this, hopefully the comment will point them in the right direction. Note: I've only attached the updated patch here; parts 1-3 didn't change, so they're the same as in my original message[1]. >> Do you mean using `delete-process'? That works differently from how I'm >> imagining things. From reading the code, `delete-process' sends SIGKILL >> to the process group, but that means that a process that wants to do >> something special in response to SIGPIPE (or EPIPE, or ERROR_BROKEN_PIPE >> on Win32) wouldn't be able to, since that's not the signal/error it >> receives. > > How else can you close the pipe without deleting the process? How can > Emacs have a process whose I/O channels aren't ready to be used? > > I thought you were talking about a pipe process (make-pipe-process), > in which case deleting it closes the pipe. But you seem to mean > something else, so now I'm not sure I understand. By "pipe", I meant the pair of file descriptors created by the pipe function (technically, `emacs_pipe') inside `create_process'. In this case, the subprocess being created will get the write end of that pipe, while Emacs gets the read end. If Emacs closes the read end of the pipe, then the next time the subprocess tries to write to its end of the pipe, it will get an error (SIGPIPE, EPIPE, or ERROR_BROKEN_PIPE, depending on the situation). That's the behavior that the subprocess would expect: if the pipe for its stdout fd is broken, the error should refer to that problem (e.g. via signalling SIGPIPE). Raising the error in a different way (e.g. via SIGKILL) isn't quite correct. However, as you correctly state, this is a niche feature, and messing around with Emacs's process management shouldn't be done lightly. It would take a lot of testing to be sure my previous patch is right, especially since my understanding of Emacs's process.c is pretty rudimentary. As you suggested, I think this new implementation should be a reasonable fallback. [1] https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-02/msg01431.html --------------649AAEDE1541CE14DAD2A0A3 Content-Type: text/plain; charset=UTF-8; name="0004-Send-SIGPIPE-to-external-Eshell-processes-if-their-o.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0004-Send-SIGPIPE-to-external-Eshell-processes-if-their-o.pa"; filename*1="tch" RnJvbSA5OWU3MzczM2QxN2YxMDNiYWYwMzljZmFmMDU5ZmMwYzU0MDY0MTkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFR1ZSwgMSBGZWIgMjAyMiAxOToxNjowMCAtMDgwMApTdWJqZWN0OiBbUEFU Q0ggNC80XSBTZW5kIFNJR1BJUEUgdG8gZXh0ZXJuYWwgRXNoZWxsIHByb2Nlc3NlcyBpZiB0 aGVpciBvdXRwdXQKIHRhcmdldCBjbG9zZXMKCiogbGlzcC9lc2hlbGwvZXNoLWlvLmVsIChl c2hlbGwtcGlwZS1icm9rZW4pOiBOZXcgZXJyb3IuCihlc2hlbGwtb3V0cHV0LW9iamVjdC10 by10YXJnZXQpOiBTaWduYWwgJ2VzaGVsbC1waXBlLWJyb2tlbicgaWYgdGhlCnRhcmdldCBp cyBhbiBleGl0ZWQvc2lnbmFsZWQgcHJvY2Vzcy4KCiogbGlzcC9lc2hlbGwvZXNoLXByb2Mu ZWwgKGVzaGVsbC1pbnNlcnRpb24tZmlsdGVyKTogSGFuZGxlCidlc2hlbGwtcGlwZS1icm9r ZW4nLgoKKiB0ZXN0L2xpc3AvZXNoZWxsL2VzaC1wcm9jLXRlc3RzLmVsOiBOZXcgdGVzdC4K LS0tCiBsaXNwL2VzaGVsbC9lc2gtaW8uZWwgICAgICAgICAgICAgICAgICAgIHwgMTIgKysr Ky0tLQogbGlzcC9lc2hlbGwvZXNoLXByb2MuZWwgICAgICAgICAgICAgICAgICB8IDMxICsr KysrKysrKysrKystLS0KIHRlc3QvbGlzcC9lc2hlbGwvZXNoLXByb2MtdGVzdHMuZWwgICAg ICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3QvbGlzcC9lc2hlbGwvZXNo ZWxsLXRlc3RzLWhlbHBlcnMuZWwgfCAgOSArKystLQogNCBmaWxlcyBjaGFuZ2VkLCA4NiBp bnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 L2xpc3AvZXNoZWxsL2VzaC1wcm9jLXRlc3RzLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hl bGwvZXNoLWlvLmVsIGIvbGlzcC9lc2hlbGwvZXNoLWlvLmVsCmluZGV4IGZjMTEyNDU2MWEu LjM2NDRjMWExOGIgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VzaC1pby5lbAorKysgYi9s aXNwL2VzaGVsbC9lc2gtaW8uZWwKQEAgLTE1MCw2ICsxNTAsOCBAQCBlc2hlbGwtdmlydHVh bC10YXJnZXRzCiAgIDpyaXNreSB0CiAgIDpncm91cCAnZXNoZWxsLWlvKQogCisoZGVmaW5l LWVycm9yICdlc2hlbGwtcGlwZS1icm9rZW4gIlBpcGUgYnJva2VuIikKKwogOzs7IEludGVy bmFsIFZhcmlhYmxlczoKIAogKGRlZnZhciBlc2hlbGwtY3VycmVudC1oYW5kbGVzIG5pbCkK QEAgLTQ4MSwxMCArNDgzLDEyIEBAIGVzaGVsbC1vdXRwdXQtb2JqZWN0LXRvLXRhcmdldAog CQkoZ290by1jaGFyIHRhcmdldCkpKSkpKQogCiAgICAoKGVzaGVsbC1wcm9jZXNzcCB0YXJn ZXQpCi0gICAgKHdoZW4gKGVxIChwcm9jZXNzLXN0YXR1cyB0YXJnZXQpICdydW4pCi0gICAg ICAodW5sZXNzIChzdHJpbmdwIG9iamVjdCkKLSAgICAgICAoc2V0cSBvYmplY3QgKGVzaGVs bC1zdHJpbmdpZnkgb2JqZWN0KSkpCi0gICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyB0YXJn ZXQgb2JqZWN0KSkpCisgICAgKHVubGVzcyAoc3RyaW5ncCBvYmplY3QpCisgICAgICAoc2V0 cSBvYmplY3QgKGVzaGVsbC1zdHJpbmdpZnkgb2JqZWN0KSkpCisgICAgKGNvbmRpdGlvbi1j YXNlIG5pbAorICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyB0YXJnZXQgb2JqZWN0KQor ICAgICAgOzsgSWYgYHByb2Nlc3Mtc2VuZC1zdHJpbmcnIHJhaXNlcyBhbiBlcnJvciwgdHJl YXQgaXQgYXMgYSBicm9rZW4gcGlwZS4KKyAgICAgIChlcnJvciAoc2lnbmFsICdlc2hlbGwt cGlwZS1icm9rZW4gdGFyZ2V0KSkpKQogCiAgICAoKGNvbnNwIHRhcmdldCkKICAgICAoYXBw bHkgKGNhciB0YXJnZXQpIG9iamVjdCAoY2RyIHRhcmdldCkpKSkKZGlmZiAtLWdpdCBhL2xp c3AvZXNoZWxsL2VzaC1wcm9jLmVsIGIvbGlzcC9lc2hlbGwvZXNoLXByb2MuZWwKaW5kZXgg YmIyMTM2YzA2Yy4uZWQzN2RlODVmNyAxMDA2NDQKLS0tIGEvbGlzcC9lc2hlbGwvZXNoLXBy b2MuZWwKKysrIGIvbGlzcC9lc2hlbGwvZXNoLXByb2MuZWwKQEAgLTM4Niw4ICszODYsMjcg QEAgZXNoZWxsLWluc2VydGlvbi1maWx0ZXIKIAkgICAgICAobGV0ICgoZGF0YSAobnRoIDMg ZW50cnkpKSkKIAkJKHNldGNhciAobnRoY2RyIDMgZW50cnkpIG5pbCkKIAkJKHNldGNhciAo bnRoY2RyIDQgZW50cnkpIHQpCi0JCShlc2hlbGwtb3V0cHV0LW9iamVjdCBkYXRhIG5pbCAo Y2FkciBlbnRyeSkpCi0JCShzZXRjYXIgKG50aGNkciA0IGVudHJ5KSBuaWwpKSkpKSkpKSkK KyAgICAgICAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgICAgICAg KGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1v dXRwdXQtb2JqZWN0IGRhdGEgbmlsIChjYWRyIGVudHJ5KSkKKyAgICAgICAgICAgICAgICAg ICAgICA7OyBGSVhNRTogV2Ugd2FudCB0byBzZW5kIFNJR1BJUEUgdG8gdGhlIHByb2Nlc3MK KyAgICAgICAgICAgICAgICAgICAgICA7OyBoZXJlLiAgSG93ZXZlciwgcmVtb3RlIHByb2Nl c3NlcyBkb24ndAorICAgICAgICAgICAgICAgICAgICAgIDs7IGN1cnJlbnRseSBzdXBwb3J0 IHRoYXQsIGFuZCBub3QgYWxsIHN5c3RlbXMKKyAgICAgICAgICAgICAgICAgICAgICA7OyBo YXZlIFNJR1BJUEUgaW4gdGhlIGZpcnN0IHBsYWNlIChlLmcuIE1TCisgICAgICAgICAgICAg ICAgICAgICAgOzsgV2luZG93cykuICBJbiB0aGVzZSBjYXNlcywganVzdCBkZWxldGUgdGhl CisgICAgICAgICAgICAgICAgICAgICAgOzsgcHJvY2VzczsgdGhpcyBpcyByZWFzb25hYmx5 IGNsb3NlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgIDs7IHJpZ2h0IGJlaGF2aW9y LCBzaW5jZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgICAg OzsgU0lHUElQRSBpcyB0byB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MuICBGb3IgdXNlCisgICAg ICAgICAgICAgICAgICAgICAgOzsgY2FzZXMgd2hlcmUgU0lHUElQRSBpcyB0cnVseSBuZWVk ZWQsIHVzaW5nIGFuCisgICAgICAgICAgICAgICAgICAgICAgOzsgZXh0ZXJuYWwgcGlwZSBv cGVyYXRvciAoYCp8JykgbWF5IHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICA7OyBpbnN0 ZWFkIChlLmcuIHdoZW4gd29ya2luZyB3aXRoIHJlbW90ZQorICAgICAgICAgICAgICAgICAg ICAgIDs7IHByb2Nlc3NlcykuCisgICAgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1waXBl LWJyb2tlbgorICAgICAgICAgICAgICAgICAgICAgICAoaWYgKG9yIChwcm9jZXNzLWdldCBw cm9jICdyZW1vdGUtcGlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSBz eXN0ZW0tdHlwZSAnd2luZG93cy1udCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVsZXRlLXByb2Nlc3MgcHJvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2lnbmFs LXByb2Nlc3MgcHJvYyAnU0lHUElQRSkpKSkKKyAgICAgICAgICAgICAgICAgIChzZXRjYXIg KG50aGNkciA0IGVudHJ5KSBuaWwpKSkpKSkpKSkpCiAKIChkZWZ1biBlc2hlbGwtc2VudGlu ZWwgKHByb2Mgc3RyaW5nKQogICAiR2VuZXJpYyBzZW50aW5lbCBmb3IgY29tbWFuZCBwcm9j ZXNzZXMuICBSZXBvcnRzIG9ubHkgc2lnbmFscy4KQEAgLTQxNiw4ICs0MzUsMTIgQEAgZXNo ZWxsLXNlbnRpbmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk YSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChudGggNCBl bnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLWF0 LXRpbWUgMCBuaWwgZmluaXNoLWlvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiBzdHIgKGVzaGVsbC1vdXRwdXQtb2JqZWN0IHN0ciBuaWwgaGFuZGxl cykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlc2hlbGwtY2xv c2UtaGFuZGxlcyBzdGF0dXMgJ25pbCBoYW5kbGVzKSkpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBzdHIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1vdXRwdXQtb2JqZWN0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgbmlsIGhhbmRs ZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlc2hlbGwt Y2xvc2UtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXMgJ25pbCBoYW5kbGVzKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIGZpbmlzaC1pbykpKSkpCiAJCShlc2hlbGwtcmVtb3ZlLXByb2Nlc3MtZW50 cnkgZW50cnkpKSkpCiAJKGVzaGVsbC1raWxsLXByb2Nlc3MtZnVuY3Rpb24gcHJvYyBzdHJp bmcpKSkpKQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2VzaGVsbC9lc2gtcHJvYy10ZXN0cy5l bCBiL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLXByb2MtdGVzdHMuZWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTdlYTZjMDBkNgotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3QvbGlzcC9lc2hlbGwvZXNoLXByb2MtdGVzdHMuZWwKQEAgLTAsMCArMSw0NSBAQAor Ozs7IGVzaC1wcm9jLXRlc3RzLmVsIC0tLSBlc2gtcHJvYyB0ZXN0IHN1aXRlICAtKi0gbGV4 aWNhbC1iaW5kaW5nOnQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVt YWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUg RW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0 aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2VydCkKKyhyZXF1aXJlICdlc2gtbW9k ZSkKKyhyZXF1aXJlICdlc2hlbGwpCisKKyhyZXF1aXJlICdlc2hlbGwtdGVzdHMtaGVscGVy cworICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgImVzaGVsbC10ZXN0cy1oZWxwZXJzIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgKG9yIGxv YWQtZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVmYXVsdC1kaXJlY3RvcnkpKSkpCisKKyhlcnQtZGVmdGVzdCBlc2gt cHJvYy10ZXN0L3NpZ3BpcGUtZXhpdHMtcHJvY2VzcyAoKQorICAiVGVzdCB0aGF0IGEgU0lH UElQRSBpcyBwcm9wZXJseSBzZW50IHRvIGEgcHJvY2VzcyBpZiBhIHBpcGUgY2xvc2VzIgor ICAoc2tpcC11bmxlc3MgKGFuZCAoZXhlY3V0YWJsZS1maW5kICJzaCIpCisgICAgICAgICAg ICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgImVjaG8iKQorICAgICAgICAgICAgICAgICAg ICAoZXhlY3V0YWJsZS1maW5kICJzbGVlcCIpKSkKKyAgKHdpdGgtdGVtcC1lc2hlbGwKKyAg IChlc2hlbGwtY29tbWFuZC1yZXN1bHQtcAorICAgIDs7IFRoZSBmaXJzdCBjb21tYW5kIGlz IGxpa2UgYHllcycgYnV0IHNsb3dlci4gIFRoaXMgaXMgdG8gcHJldmVudAorICAgIDs7IGl0 IGZyb20gdGF4aW5nIEVtYWNzJ3MgcHJvY2VzcyBmaWx0ZXIgdG9vIG11Y2ggYW5kIGNhdXNp bmcgYQorICAgIDs7IGhhbmcuCisgICAgKGNvbmNhdCAic2ggLWMgJ3doaWxlIHRydWU7IGRv IGVjaG8geTsgc2xlZXAgMTsgZG9uZScgfCAiCisgICAgICAgICAgICAic2ggLWMgJ3JlYWQg TkFNRTsgZWNobyAke05BTUV9JyIpCisgICAgInlcbiIpCisgICAoZXNoZWxsLXdhaXQtZm9y LXN1YnByb2Nlc3MgdCkKKyAgIChzaG91bGQgKGVxIChwcm9jZXNzLWxpc3QpIG5pbCkpKSkK ZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNoZWxsLXRlc3RzLWhlbHBlcnMuZWwg Yi90ZXN0L2xpc3AvZXNoZWxsL2VzaGVsbC10ZXN0cy1oZWxwZXJzLmVsCmluZGV4IDMzY2Rk NjAxMTMuLmY5NDQxOTRhMmIgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNoZWxs LXRlc3RzLWhlbHBlcnMuZWwKKysrIGIvdGVzdC9saXNwL2VzaGVsbC9lc2hlbGwtdGVzdHMt aGVscGVycy5lbApAQCAtNTAsMTUgKzUwLDE4IEBAIHdpdGgtdGVtcC1lc2hlbGwKICAgICAg ICAgIChsZXQgKGtpbGwtYnVmZmVyLXF1ZXJ5LWZ1bmN0aW9ucykKICAgICAgICAgICAgKGtp bGwtYnVmZmVyIGVzaGVsbC1idWZmZXIpKSkpKSkKIAotKGRlZnVuIGVzaGVsbC13YWl0LWZv ci1zdWJwcm9jZXNzICgpCisoZGVmdW4gZXNoZWxsLXdhaXQtZm9yLXN1YnByb2Nlc3MgKCZv cHRpb25hbCBhbGwpCiAgICJXYWl0IHVudGlsIHRoZXJlIGlzIG5vIGludGVyYWN0aXZlIHN1 YnByb2Nlc3MgcnVubmluZyBpbiBFc2hlbGwuCitJZiBBTEwgaXMgbm9uLW5pbCwgd2FpdCB1 bnRpbCB0aGVyZSBhcmUgbm8gRXNoZWxsIHN1YnByb2Nlc3NlcyBhdAorYWxsIHJ1bm5pbmcu CisKIElmIHRoaXMgdGFrZXMgbG9uZ2VyIHRoYW4gYGVzaGVsbC10ZXN0LS1tYXgtc3VicHJv Y2Vzcy10aW1lJywKIHJhaXNlIGFuIGVycm9yLiIKICAgKGxldCAoKHN0YXJ0IChjdXJyZW50 LXRpbWUpKSkKLSAgICAod2hpbGUgKGVzaGVsbC1pbnRlcmFjdGl2ZS1wcm9jZXNzLXApCisg ICAgKHdoaWxlIChpZiBhbGwgZXNoZWxsLXByb2Nlc3MtbGlzdCAoZXNoZWxsLWludGVyYWN0 aXZlLXByb2Nlc3MtcCkpCiAgICAgICAod2hlbiAoPiAoZmxvYXQtdGltZSAodGltZS1zaW5j ZSBzdGFydCkpCiAgICAgICAgICAgICAgICBlc2hlbGwtdGVzdC0tbWF4LXN1YnByb2Nlc3Mt dGltZSkKLSAgICAgICAgKGVycm9yICJ0aW1lZCBvdXQgd2FpdGluZyBmb3Igc3VicHJvY2Vz cyIpKQorICAgICAgICAoZXJyb3IgInRpbWVkIG91dCB3YWl0aW5nIGZvciBzdWJwcm9jZXNz KGVzKSIpKQogICAgICAgKHNpdC1mb3IgMC4xKSkpKQogCiAoZGVmdW4gZXNoZWxsLWluc2Vy dC1jb21tYW5kICh0ZXh0ICZvcHRpb25hbCBmdW5jKQotLSAKMi4yNS4xCgo= --------------649AAEDE1541CE14DAD2A0A3--