qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Bug 1906193] [NEW] riscv32 user mode emulation: fork return values broken
@ 2020-11-30  0:12 Dilfridge
  2020-12-05  1:27 ` [Bug 1906193] " Andreas K. Hüttel
                   ` (12 more replies)
  0 siblings, 13 replies; 15+ messages in thread
From: Dilfridge @ 2020-11-30  0:12 UTC (permalink / raw)
  To: qemu-devel

Public bug reported:

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.

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
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


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-04-30  9:22 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-30  0:12 [Bug 1906193] [NEW] riscv32 user mode emulation: fork return values broken Dilfridge
2020-12-05  1:27 ` [Bug 1906193] " Andreas K. Hüttel
2020-12-15 22:06 ` Andreas K. Hüttel
2020-12-16 20:56 ` Andreas K. Hüttel
2020-12-16 21:05 ` Andreas K. Hüttel
2020-12-19 18:16 ` Alistair Francis
2020-12-19 23:21 ` Andreas K. Hüttel
2020-12-21 13:28 ` Andreas K. Hüttel
2020-12-21 21:44   ` Alistair Francis
2020-12-21 23:11 ` Richard Henderson
2020-12-26 17:53 ` Andreas K. Hüttel
2021-01-15 23:10 ` Alistair Francis
2021-01-16 18:58 ` Andreas K. Hüttel
2021-02-16 20:58 ` Alistair Francis
2021-04-30  8:57 ` Thomas Huth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).