Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #16704
| Path | csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail |
|---|---|
| From | "Jason A. Donenfeld" <Jason@zx2c4.com> |
| Newsgroups | gnu.bash.bug |
| Subject | Re: process substitution error handling |
| Date | Thu, 6 Aug 2020 14:14:07 +0200 |
| Lines | 55 |
| Approved | bug-bash@gnu.org |
| Message-ID | <mailman.982.1596716065.2739.bug-bash@gnu.org> (permalink) |
| References | <20200420051508.GA2359844@zx2c4.com> <7496b183-2db3-6c03-6074-928adcd08f45@case.edu> <CAHmME9pzOY_0EJ69y9wt6r-Jh3frZpV8XdFC6zG5EOkZ99h-1A@mail.gmail.com> <CAH7i3LorhQnvpd0YvTcHsuHM4=v6kTQ+Z8Yf+L43AT1V3zKOFg@mail.gmail.com> <CAHmME9pUd51YvaRWD6az8XgJ=EFw+v+t6xdkBOUx=jqKnH1kbw@mail.gmail.com> |
| NNTP-Posting-Host | lists.gnu.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | quoted-printable |
| X-Trace | usenet.stanford.edu 1596716065 29708 209.51.188.17 (6 Aug 2020 12:14:25 GMT) |
| X-Complaints-To | action@cs.stanford.edu |
| Cc | "bug-bash@gnu.org" <bug-bash@gnu.org> |
| To | Oğuz <oguzismailuysal@gmail.com> |
| Envelope-to | bug-bash@gnu.org |
| DKIM-Signature | v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=mime-version :references:in-reply-to:from:date:message-id:subject:to:cc :content-type:content-transfer-encoding; s=mail; bh=F+nOaWtf6VRo i6iR4CBAu3q3DTI=; b=DivPPvK9PPMWs9Yks/LzQ567r0p5LuXAye/x2No4RDsa SYScx+usl1do+ldaTTooh19RBL3ZZGN79oaoDPOVfF16HT7DBvwckZ0oKQkcwyc1 oWVzGHnSlNpQufRaiTBKU86YZwiuCiPTo4CH7/kKs5eIK2gLvw0GailLfaSZjyVO Fce1IeNUTDGn5QPCGMfFjHSbTA6KOY3iWns7IhS6k6RBVeXpHUjKAanBptsbcf4Z cAOSxoqsjAQh1ANWtaz4w5b2vWgfTcDqrk/qbybXknu+koyD9pOqew3+e1MDJo8h QDOdaLvqjj/ecGWMc1CeWJZkbPMf5QfkFvTBzcS63g== |
| X-Gm-Message-State | AOAM531N07NqLGJt2HEc1ysI/IctqoqkBFoMPWac17kARG5k50MjWcmq zRGSded9gCc/wB8YMoG/4JDEwUY1rDNQACFc9vo= |
| X-Google-Smtp-Source | ABdhPJyRM05ba9ALbJjU+1gj3b9zxPEjAWuoCbF7ILLTKAsuI2yP1Qn1LYpJvksGhGyVhWKsY4QFLm757bE02jJMKSs= |
| X-Received | by 2002:a92:d2c8:: with SMTP id w8mr10771970ilg.38.1596716060615; Thu, 06 Aug 2020 05:14:20 -0700 (PDT) |
| In-Reply-To | <CAH7i3LorhQnvpd0YvTcHsuHM4=v6kTQ+Z8Yf+L43AT1V3zKOFg@mail.gmail.com> |
| X-Gmail-Original-Message-ID | <CAHmME9pUd51YvaRWD6az8XgJ=EFw+v+t6xdkBOUx=jqKnH1kbw@mail.gmail.com> |
| Received-SPF | pass client-ip=192.95.5.64; envelope-from=Jason@zx2c4.com; helo=mail.zx2c4.com |
| X-detected-operating-system | by eggs.gnu.org: First seen = 2020/08/06 08:14:21 |
| X-ACL-Warn | Detected OS = Linux 3.11 and newer |
| 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no |
| X-Spam_action | no action |
| X-BeenThere | bug-bash@gnu.org |
| X-Mailman-Version | 2.1.23 |
| Precedence | list |
| List-Id | Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org> |
| List-Unsubscribe | <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe> |
| List-Archive | <https://lists.gnu.org/archive/html/bug-bash> |
| List-Post | <mailto:bug-bash@gnu.org> |
| List-Help | <mailto:bug-bash-request@gnu.org?subject=help> |
| List-Subscribe | <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <CAHmME9pUd51YvaRWD6az8XgJ=EFw+v+t6xdkBOUx=jqKnH1kbw@mail.gmail.com> |
| X-Mailman-Original-References | <20200420051508.GA2359844@zx2c4.com> <7496b183-2db3-6c03-6074-928adcd08f45@case.edu> <CAHmME9pzOY_0EJ69y9wt6r-Jh3frZpV8XdFC6zG5EOkZ99h-1A@mail.gmail.com> <CAH7i3LorhQnvpd0YvTcHsuHM4=v6kTQ+Z8Yf+L43AT1V3zKOFg@mail.gmail.com> |
| Xref | csiph.com gnu.bash.bug:16704 |
Show key headers only | View raw
On Thu, Aug 6, 2020 at 1:15 PM Oğuz <oguzismailuysal@gmail.com> wrote: > > > > 6 Ağustos 2020 Perşembe tarihinde Jason A. Donenfeld <Jason@zx2c4.com> yazdı: >> >> Hi, >> >> It may be a surprise to some that this code here winds up printing >> "done", always: >> >> $ cat a.bash >> set -e -o pipefail >> while read -r line; do >> echo "$line" >> done < <(echo 1; sleep 1; echo 2; sleep 1; false; exit 1) >> sleep 1 >> echo done >> >> $ bash a.bash >> 1 >> 2 >> done >> >> The reason for this is that process substitution right now does not >> propagate errors. It's sort of possible to almost make this better >> with `|| kill $$` or some variant, and trap handlers, but that's very >> clunky and fraught with its own problems. >> >> Therefore, I propose a `set -o substfail` option for the upcoming bash >> 5.1, which would cause process substitution to propagate its errors >> upwards, even if done asynchronously. >> > > set -e o substfail > : <(sleep 10; exit 1) > foo > > Say that `foo' is a command that takes longer than ten seconds to complete, how would you expect the shell to behave here? Should it interrupt `foo' or wait for its termination and exit then? Or do something else? It's likely simpler to check after foo, since bash can just ask "are any of the process substitution processes that I was wait(2)ing on in exited state with non zero return?", which just involves looking in a little list titled exited_with_error_process_subst for being non-null. A more sophisticated implementation could do that asynchronously with signals and SIGCHLD. In that model, if bash gets sigchld from a process that exits with failure, it then exits inside the signal handler there. This actually wouldn't be too hard to do either. Jason
Back to gnu.bash.bug | Previous | Next | Find similar
Re: process substitution error handling "Jason A. Donenfeld" <Jason@zx2c4.com> - 2020-08-06 14:14 +0200
csiph-web