[erlang-questions] os:cmd hang on OTP 18

Dániel Szoboszlay dszoboszlay@REDACTED
Wed Jul 26 21:27:48 CEST 2017


I've encountered a strange problem with os:cmd when running tar and lbzip2.
Steps to reproduce:

# create some lbzip2 compressed data

dd if=/dev/urandom of=/tmp/testfile count=10
tar -cf - -C /tmp testfile | lbzip2 -6 -n 4 | dd of=/tmp/tartest status=none

# try to extract the archive from Erlang with os:cmd

erl -noinput -eval 'os:cmd("tar -C /tmp/ -xf /tmp/tartest
--use-compress-program=lbzip2"), init:stop().'

This worked fine with OTP, but with OTP the command
hangs: lbzip2 just sits in a rt_sigsuspend syscall waiting for a USR2, PIPE
or XFSZ signal. And its parent, the tar process waits in a wait4 syscall
for lbzip2 to terminate.

I don't have at the moment any newer OTP version installed, I'm not sure
how OTP 19 or 20 would behave.

I tried to strace the processes, but there's too much noise, I couldn't yet
figure out anything interesting there.

I also tried to diff OTP 17 & 18, but os:cmd/1 and friends didn't change.
I'm not sure about the port code, but at least the release notes didn't
mention anything major. Or did I miss something? Does anyone have an idea
what may have changed between these OTP versions?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170726/5f1bfc54/attachment.htm>

More information about the erlang-questions mailing list