linux/arch/um/os-Linux
Vegard Nossum 1056375992 uml: flush stdout before forking
commit 0754fb298f upstream.

I was seeing some really weird behaviour where piping UML's output
somewhere would cause output to get duplicated:

  $ ./vmlinux | head -n 40
  Checking that ptrace can change system call numbers...Core dump limits :
          soft - 0
          hard - NONE
  OK
  Checking syscall emulation patch for ptrace...Core dump limits :
          soft - 0
          hard - NONE
  OK
  Checking advanced syscall emulation patch for ptrace...Core dump limits :
          soft - 0
          hard - NONE
  OK
  Core dump limits :
          soft - 0
          hard - NONE

This is because these tests do a fork() which duplicates the non-empty
stdout buffer, then glibc flushes the duplicated buffer as each child
exits.

A simple workaround is to flush before forking.

Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2016-02-02 19:09:23 +00:00
..
drivers um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
skas Revert "um: Fix wait_stub_done() error handling" 2014-07-20 12:56:34 +02:00
aio.c um: Cleanup SIGTERM handling 2013-09-07 10:56:58 +02:00
elf_aux.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
execvp.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
file.c um: Memory corruption on startup 2014-04-20 23:57:21 +02:00
helper.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
internal.h um: pass siginfo to guest process 2012-08-02 00:49:17 +02:00
irq.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
main.c um: Missing pipe handling 2014-04-20 23:13:30 +02:00
Makefile um: use the right ifdef around exports in user_syms.c 2012-03-25 00:29:55 +01:00
mem.c uml: Simplify tempdir logic. 2014-04-20 23:10:44 +02:00
process.c um: Cleanup SIGTERM handling 2013-09-07 10:56:58 +02:00
registers.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
sigio.c um: Cleanup SIGTERM handling 2013-09-07 10:56:58 +02:00
signal.c um: Make stack trace reliable against kernel mode faults 2013-11-17 11:27:30 +01:00
start_up.c uml: flush stdout before forking 2016-02-02 19:09:23 +00:00
time.c nohz: Rename CONFIG_NO_HZ to CONFIG_NO_HZ_COMMON 2013-04-03 13:56:03 +02:00
tty.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
umid.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
user_syms.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
util.c um: Cleanup SIGTERM handling 2013-09-07 10:56:58 +02:00