[FFmpeg-devel] [PATCHv2] ffmpeg: modify tty state when stderr is redirected

Nicolas George george at nsup.org
Fri Jul 31 13:48:18 CEST 2015

Le tridi 13 thermidor, an CCXXIII, Ganesh Ajjanagadde a écrit :
> Nevertheless, echo $? invoked right after this yields 2 for both.
> The reason this happens is the md5sum wrapper sees that the output
> file has not been written,
> and errors out there (see the .err files for precisely what I mean).
> This is why I did not notice it.


> Seeing the above, I think just the change in ffmpeg.c along with
> telling people of the workarounds for both bashrc and zshrc
> should be enough, with no modification to run-tests.sh.

Indeed, but the change to add -nostdin to FATE is also right: FATE is not an
interactive process, it should not listen for interactive commands. If the
cat paws the q key while FATE is running, it will cause a failure, it should

There are three issues, and one right fix for each of them:

1. ffmpeg reads command on stdin and needs stdin to be a tty in cbreak mode:
   the test must be on stdin, not any other file descriptor. Actually, no
   test at all should work too, since tcgetattr() would fail anyway.

   -> The patch that has just been reverted was right.

2. ffmpeg can crash, ffmpeg can not catch all signals (example: memory-leak,
   OOM killer, SIGKILL, uncatchable): the shell should be configured to
   restore the tty in a sane state.

   -> "ttyctl -f" in ~/.zshrc, "bash_tty_mode=$(stty -g);
   PROMPT_COMMAND='stty $bash_tty_mode'" in ~/.bashrc; that can be added in
   the FAQ or the wiki.

3. FATE is non-interactive: it should not listen to interactive commands.

   -> run FATE with -nostdin.


  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150731/3c58cdfa/attachment.sig>

More information about the ffmpeg-devel mailing list