qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug 1906193] Re: riscv32 user mode emulation: fork return values br


From: Alistair Francis
Subject: Re: [Bug 1906193] Re: riscv32 user mode emulation: fork return values broken
Date: Mon, 21 Dec 2020 13:44:11 -0800

Great! Thanks for testing that.

Do you mind supplying a Tested-by tag that I can apply to the patch?

Alistair

On Mon, Dec 21, 2020 at 5:36 AM Andreas K. Hüttel
<1906193@bugs.launchpad.net> wrote:
>
> After applying this patch on top of qemu-5.2.0, I can confirm that it
> fixes the problem.
>
> Thank you!!
>
> --
> You received this bug notification because you are a member of qemu-
> devel-ml, which is subscribed to QEMU.
> https://bugs.launchpad.net/bugs/1906193
>
> Title:
>   riscv32 user mode emulation: fork return values broken
>
> Status in QEMU:
>   New
>
> Bug description:
>   When running in a chroot with riscv32 (on x86_64; qemu git master as
>   of today):
>
>   The following short program forks; the child immediately returns with
>   exit(42). The parent checks for the return value - and obtains 40!
>
>   gcc-10.2
>
>   ===============================================
>   #include <stdlib.h>
>   #include <unistd.h>
>   #include <stdio.h>
>   #include <sys/wait.h>
>
>   main(c, v)
>        int c;
>        char **v;
>   {
>     pid_t pid, p;
>     int s, i, n;
>
>     s = 0;
>     pid = fork();
>     if (pid == 0)
>       exit(42);
>
>     /* wait for the process */
>     p = wait(&s);
>     if (p != pid)
>       exit (255);
>
>     if (WIFEXITED(s))
>     {
>        int r=WEXITSTATUS(s);
>        if (r!=42) {
>         printf("child wants to return %i (0x%X), parent received %i (0x%X), 
> difference %i\n",42,42,r,r,r-42);
>        }
>     }
>   }
>   ===============================================
>
>   (riscv-ilp32 chroot) farino /tmp # ./wait-test-short
>   child wants to return 42 (0x2A), parent received 40 (0x28), difference -2
>
>   ===============================================
>   (riscv-ilp32 chroot) farino /tmp # gcc --version
>   gcc (Gentoo 10.2.0-r1 p2) 10.2.0
>   Copyright (C) 2020 Free Software Foundation, Inc.
>   Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
>   gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE 
> ZWECKE.
>
>   (riscv-ilp32 chroot) farino /tmp # ld --version
>   GNU ld (Gentoo 2.34 p6) 2.34.0
>   Copyright (C) 2020 Free Software Foundation, Inc.
>   This program is free software; you may redistribute it under the terms of
>   the GNU General Public License version 3 or (at your option) a later 
> version.
>   This program has absolutely no warranty.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/qemu/+bug/1906193/+subscriptions
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]