Skip to content
  • Vegard Nossum's avatar
    uml: flush stdout before forking · 0754fb29
    Vegard Nossum authored
    
    
    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.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    0754fb29