lkml.org 
[lkml]   [2016]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.2.y-ckt 097/268] uml: flush stdout before forking
    Date
    4.2.8-ckt3 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Vegard Nossum <vegard.nossum@oracle.com>

    commit 0754fb298f2f2719f0393491d010d46cfb25d043 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: Kamal Mostafa <kamal@canonical.com>
    ---
    arch/um/os-Linux/start_up.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c
    index 47f1ff0..22a358e 100644
    --- a/arch/um/os-Linux/start_up.c
    +++ b/arch/um/os-Linux/start_up.c
    @@ -94,6 +94,8 @@ static int start_ptraced_child(void)
    {
    int pid, n, status;

    + fflush(stdout);
    +
    pid = fork();
    if (pid == 0)
    ptrace_child();
    --
    1.9.1
    \
     
     \ /
      Last update: 2016-01-27 23:01    [W:5.648 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site