From: Simon Horman <horms@kernel.org>
To: Bobby Eshleman <bobbyeshleman@gmail.com>
Cc: Stefano Garzarella <sgarzare@redhat.com>,
Shuah Khan <shuah@kernel.org>, Jakub Kicinski <kuba@kernel.org>,
virtualization@lists.linux.dev, netdev@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
Bobby Eshleman <bobbyeshleman@meta.com>
Subject: Re: [PATCH net-next 02/12] selftests/vsock: make wait_for_listener() work even if pipefail is on
Date: Wed, 29 Oct 2025 16:56:24 +0000 [thread overview]
Message-ID: <aQJHOIGW_bIzBpYc@horms.kernel.org> (raw)
In-Reply-To: <aP+yKDYZR6+/kzI2@devvm11784.nha0.facebook.com>
On Mon, Oct 27, 2025 at 10:55:52AM -0700, Bobby Eshleman wrote:
> On Mon, Oct 27, 2025 at 04:48:28PM +0000, Simon Horman wrote:
> > On Wed, Oct 22, 2025 at 06:00:06PM -0700, Bobby Eshleman wrote:
> > > From: Bobby Eshleman <bobbyeshleman@meta.com>
> > >
> > > Save/restore pipefail to not mistakenly trip the if-condition
> > > in wait_for_listener().
> > >
> > > awk doesn't gracefully handle SIGPIPE with a non-zero exit code, so grep
> > > exiting upon finding a match causes false-positives when the pipefail
> > > option is used. This will enable pipefail usage, so that we can losing
> > > failures when piping test output into log() functions.
> > >
> > > Fixes: a4a65c6fe08b ("selftests/vsock: add initial vmtest.sh for vsock")
> > > Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
> > > ---
> > > tools/testing/selftests/vsock/vmtest.sh | 12 ++++++++++++
> > > 1 file changed, 12 insertions(+)
> > >
> > > diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selftests/vsock/vmtest.sh
> > > index 561600814bef..ec3ff443f49a 100755
> > > --- a/tools/testing/selftests/vsock/vmtest.sh
> > > +++ b/tools/testing/selftests/vsock/vmtest.sh
> > > @@ -243,6 +243,7 @@ wait_for_listener()
> > > local port=$1
> > > local interval=$2
> > > local max_intervals=$3
> > > + local old_pipefail
> > > local protocol=tcp
> > > local pattern
> > > local i
> > > @@ -251,6 +252,13 @@ wait_for_listener()
> > >
> > > # for tcp protocol additionally check the socket state
> > > [ "${protocol}" = "tcp" ] && pattern="${pattern}0A"
> > > +
> > > + # 'grep -q' exits on match, sending SIGPIPE to 'awk', which exits with
> > > + # an error, causing the if-condition to fail when pipefail is set.
> > > + # Instead, temporarily disable pipefail and restore it later.
> > > + old_pipefail=$(set -o | awk '/^pipefail[[:space:]]+(on|off)$/{print $2}')
> > > + set +o pipefail
> > > +
> > > for i in $(seq "${max_intervals}"); do
> > > if awk '{print $2" "$4}' /proc/net/"${protocol}"* | \
> > > grep -q "${pattern}"; then
> >
> > Hi Bobby,
> >
> > I agree this is a problem. But I'm wondering if you considered
> > moving the pattern matching into the awk script. I'm no awk expert.
> > But suspect that would lead to a more elegant solution.
> >
>
> I bet you are right.
>
> Playing around with awk, I find that this seems to work:
>
> $ pattern=":$(printf '%04X' ${port}) 0A"
> $ awk -v pattern="${pattern}" 'BEGIN {rc=1} $2" "$4 ~ pattern {rc=0}
> END {exit rc}' /proc/net/tcp && echo FOUND
>
> I think it beats doing the save/restore on pipefail?
Yes, I think so.
next prev parent reply other threads:[~2025-10-29 16:56 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-23 1:00 [PATCH net-next 00/12] selftests/vsock: refactor and improve vmtest infrastructure Bobby Eshleman
2025-10-23 1:00 ` [PATCH net-next 01/12] selftests/vsock: improve logging in vmtest.sh Bobby Eshleman
2025-10-27 16:45 ` Simon Horman
2025-10-27 17:28 ` Bobby Eshleman
2025-10-23 1:00 ` [PATCH net-next 02/12] selftests/vsock: make wait_for_listener() work even if pipefail is on Bobby Eshleman
2025-10-27 16:48 ` Simon Horman
2025-10-27 17:55 ` Bobby Eshleman
2025-10-29 16:56 ` Simon Horman [this message]
2025-10-23 1:00 ` [PATCH net-next 03/12] selftests/vsock: reuse logic for vsock_test through wrapper functions Bobby Eshleman
2025-10-27 16:58 ` Simon Horman
2025-10-27 18:01 ` Bobby Eshleman
2025-10-27 19:08 ` Bobby Eshleman
2025-10-27 23:22 ` Jakub Kicinski
2025-10-28 18:20 ` Bobby Eshleman
2025-10-29 16:58 ` Simon Horman
2025-10-29 17:00 ` Bobby Eshleman
2025-10-23 1:00 ` [PATCH net-next 04/12] selftests/vsock: avoid multi-VM pidfile collisions with QEMU Bobby Eshleman
2025-10-27 16:57 ` Simon Horman
2025-10-27 18:01 ` Bobby Eshleman
2025-10-23 1:00 ` [PATCH net-next 05/12] selftests/vsock: do not unconditionally die if qemu fails Bobby Eshleman
2025-10-29 16:58 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 06/12] selftests/vsock: speed up tests by reducing the QEMU pidfile timeout Bobby Eshleman
2025-10-29 16:59 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 07/12] selftests/vsock: add check_result() for pass/fail counting Bobby Eshleman
2025-10-29 16:59 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 08/12] selftests/vsock: identify and execute tests that can re-use VM Bobby Eshleman
2025-10-29 16:59 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 09/12] selftests/vsock: add BUILD=0 definition Bobby Eshleman
2025-10-27 17:45 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 10/12] selftests/vsock: avoid false-positives when checking dmesg Bobby Eshleman
2025-10-29 17:00 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 11/12] selftests/vsock: add 1.37 to tested virtme-ng versions Bobby Eshleman
2025-10-29 17:01 ` Simon Horman
2025-10-23 1:00 ` [PATCH net-next 12/12] selftests/vsock: add vsock_loopback module loading Bobby Eshleman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aQJHOIGW_bIzBpYc@horms.kernel.org \
--to=horms@kernel.org \
--cc=bobbyeshleman@gmail.com \
--cc=bobbyeshleman@meta.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=sgarzare@redhat.com \
--cc=shuah@kernel.org \
--cc=virtualization@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.