]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
FreeBSD regtest: get pdfork_pdkill to pass on arm64
authorPaul Floyd <pjfloyd@wanadoo.fr>
Sat, 23 Aug 2025 19:31:13 +0000 (21:31 +0200)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Sat, 23 Aug 2025 19:31:13 +0000 (21:31 +0200)
arm64 was giving a few conditional jump errors (suppressed)
and a pdfork was succeeding with uninit flags whilst it was
failing on amd64. Made sure that it has bad flags (-1) but
still uninit.

memcheck/tests/freebsd/Makefile.am
memcheck/tests/freebsd/pdfork_pdkill.c
memcheck/tests/freebsd/pdfork_pdkill.stderr.exp
memcheck/tests/freebsd/pdfork_pdkill.vgtest

index 0f00d67a4aa8a3c4d529ca4518195609503dd61b..bb5de145c0b31e2c110ac88de763e8919e49a1d1 100644 (file)
@@ -91,6 +91,7 @@ EXTRA_DIST = \
        openpty.stderr.exp \
        pdfork_pdkill.vgtest \
        pdfork_pdkill.stderr.exp \
+       pdfork_pdkill.supp \
        realpathat.vgtest \
        realpathat.stderr.exp \
        revoke.vgtest \
index 8d83642bace1cc8a3f71c7c83aaf3a4ab7743c12..8347a1153c5c1addb8855c4a8ba36f433d136074 100644 (file)
@@ -94,6 +94,9 @@ int main(int argc, char *argv[]) {
        fprintf(stderr, "parent after 1st bad pdfork\n");
        int anotherfd;
        int badflag;
+       // without this the last pdfork succeeds on arm64
+       badflag = -1 + anotherfd;
+       badflag -=anotherfd;
        pid_t* pbadpid = malloc(sizeof(pid_t));
        free(pbadpid);
        pdgetpid(anotherfd, pbadpid);
index 2105d362ba48c83a923a22d80dff893f2edb59d2..f5c911ae45241365790fbdf4725e6b094373e441 100644 (file)
@@ -12,21 +12,25 @@ Syscall param pdfork(fdp) points to unaddressable byte(s)
 parent after 1st bad pdfork
 Syscall param pdgetpid(fd) contains uninitialised byte(s)
    ...
-   by 0x........: main (pdfork_pdkill.c:99)
+   by 0x........: main (pdfork_pdkill.c:101)
 
 Syscall param pdgetpid(pidp)) points to unaddressable byte(s)
    ...
-   by 0x........: main (pdfork_pdkill.c:99)
+   by 0x........: main (pdfork_pdkill.c:101)
  Address 0x........ is 0 bytes inside a block of size 4 free'd
    at 0x........: free (vg_replace_malloc.c:...)
-   by 0x........: main (pdfork_pdkill.c:98)
+   by 0x........: main (pdfork_pdkill.c:100)
  Block was alloc'd at
    at 0x........: malloc (vg_replace_malloc.c:...)
-   by 0x........: main (pdfork_pdkill.c:97)
+   by 0x........: main (pdfork_pdkill.c:99)
+
+Conditional jump or move depends on uninitialised value(s)
+   ...
+   by 0x........: main (pdfork_pdkill.c:101)
 
 Syscall param pdfork(flags) contains uninitialised byte(s)
    ...
-   by 0x........: main (pdfork_pdkill.c:100)
+   by 0x........: main (pdfork_pdkill.c:102)
 
 FILE DESCRIPTORS: 3 open (3 inherited) at exit.
 Open file descriptor ...
index 066c16716af270366a9720b65752318603fdcc2e..a109ef6e1335933d4b3471c070fe7bfaab88e811 100644 (file)
@@ -1,4 +1,4 @@
 prog: pdfork_pdkill
 args: 10 2
-vgopts: -q --track-fds=all  --child-silent-after-fork=yes
+vgopts: -q --track-fds=all  --child-silent-after-fork=yes --suppressions=pdfork_pdkill.supp
 stderr_filter: filter_pts