Github messages for mblaze
 help / color / mirror / Atom feed
* [ISSUE] mpick: multi redir test hangs on Alpine
@ 2021-03-13 19:27 nmeum
  2021-03-13 21:07 ` Duncaen
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: nmeum @ 2021-03-13 19:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1733 bytes --]

New issue by nmeum on mblaze repository

https://github.com/leahneukirchen/mblaze/issues/203

Description:
While trying to get the mblaze test suite running on Alpine Linux, I noticed that the `multi redir` test from `2000-mpick.t` does not terminate, even with current git HEAD. To reproduce:

```
$ cat /tmp/input
inbox/cur/1:2,S
inbox/cur/2:2,ST
inbox/cur/3:2,SRT
inbox/cur/4:2,SRFT
inbox/cur/5:2,T
inbox/cur/6:2,SRF
inbox/cur/7:2,SR
inbox/cur/8:2,SF
inbox/cur/9:2,
$ cat expr
let foo = from.addr == "peter@example.org"
let bar = from.disp == "Peter Example"
in
  foo |"sed ""s/^/1:&/""" && bar |"sed ""s/^/2:&/""" && skip
$ mpick -F ./expr < /tmp/input
1:inbox/cur/1:2,S
1:inbox/cur/9:2,
2:inbox/cur/1:2,S
2:inbox/cur/9:2,
<process does not terminate>
```

I debugged this a bit with `strace(1)`. The output of the 3 processes (mpick, sed, and sed) is available here:

* [sed.25493.txt](https://github.com/leahneukirchen/mblaze/files/6135400/sed.25493.txt)
* [sed.25494.txt](https://github.com/leahneukirchen/mblaze/files/6135401/sed.25494.txt)
* [sed.25495.txt](https://github.com/leahneukirchen/mblaze/files/6135402/sed.25495.txt)

I am a bit confused as to what is happening here. The mpick process (PID 25493) blocks because it waits for the first sed process (PID 25494) to terminate (since mpick uses `pclose(3)`). The sed process on the other hand doesn't terminate because it is still reading from the reading end of the pipe. However, I would expect that read to return with an EOF because the mpick process already closed the writing end of the pipe. Yet for some reason, it is stuck in a read system call. Maybe I am missing something obvious here, any idea what might be causing this?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mpick: multi redir test hangs on Alpine
  2021-03-13 19:27 [ISSUE] mpick: multi redir test hangs on Alpine nmeum
@ 2021-03-13 21:07 ` Duncaen
  2021-03-13 21:08 ` Duncaen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2021-03-13 21:07 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 554 bytes --]

New comment by Duncaen on mblaze repository

https://github.com/leahneukirchen/mblaze/issues/203#issuecomment-798785916

Comment:
This looks like a bug in musl, the second popen'ed process ends up inheriting the writing end of the first popen.

> The popen() function shall ensure that any streams from previous popen() calls that remain open in the parent process are closed in the new child process.
https://pubs.opengroup.org/onlinepubs/9699919799/

```
echo "Hello\nWorld" | extrace busybox awk '{print $0 |"cat -n"; print $0 |"cat  -n"}'
```

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mpick: multi redir test hangs on Alpine
  2021-03-13 19:27 [ISSUE] mpick: multi redir test hangs on Alpine nmeum
  2021-03-13 21:07 ` Duncaen
@ 2021-03-13 21:08 ` Duncaen
  2021-03-13 21:40 ` nmeum
  2021-03-14 16:08 ` nmeum
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2021-03-13 21:08 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 546 bytes --]

New comment by Duncaen on mblaze repository

https://github.com/leahneukirchen/mblaze/issues/203#issuecomment-798785916

Comment:
This looks like a bug in musl, the second popen'ed process ends up inheriting the writing end of the first popen.

> The popen() function shall ensure that any streams from previous popen() calls that remain open in the parent process are closed in the new child process.
https://pubs.opengroup.org/onlinepubs/9699919799/

```
echo "Hello\nWorld" | busybox awk '{print $0 |"cat -n"; print $0 |"cat  -n"}'
```

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mpick: multi redir test hangs on Alpine
  2021-03-13 19:27 [ISSUE] mpick: multi redir test hangs on Alpine nmeum
  2021-03-13 21:07 ` Duncaen
  2021-03-13 21:08 ` Duncaen
@ 2021-03-13 21:40 ` nmeum
  2021-03-14 16:08 ` nmeum
  3 siblings, 0 replies; 5+ messages in thread
From: nmeum @ 2021-03-13 21:40 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 291 bytes --]

New comment by nmeum on mblaze repository

https://github.com/leahneukirchen/mblaze/issues/203#issuecomment-798790009

Comment:
Ah, indeed. That would also explain why closing the pipes in reverse order fixes it. And fd 4 does also show up in `/proc/259495/fd`. I will report this upstream.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mpick: multi redir test hangs on Alpine
  2021-03-13 19:27 [ISSUE] mpick: multi redir test hangs on Alpine nmeum
                   ` (2 preceding siblings ...)
  2021-03-13 21:40 ` nmeum
@ 2021-03-14 16:08 ` nmeum
  3 siblings, 0 replies; 5+ messages in thread
From: nmeum @ 2021-03-14 16:08 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 211 bytes --]

New comment by nmeum on mblaze repository

https://github.com/leahneukirchen/mblaze/issues/203#issuecomment-798933222

Comment:
> I will report this upstream.

https://www.openwall.com/lists/musl/2021/03/14/1

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-03-14 16:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-13 19:27 [ISSUE] mpick: multi redir test hangs on Alpine nmeum
2021-03-13 21:07 ` Duncaen
2021-03-13 21:08 ` Duncaen
2021-03-13 21:40 ` nmeum
2021-03-14 16:08 ` nmeum

Github messages for mblaze

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/mblaze-github

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 mblaze-github mblaze-github/ http://inbox.vuxu.org/mblaze-github \
		mblaze-github@inbox.vuxu.org
	public-inbox-index mblaze-github

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.github.mblaze


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git