https://bugs.kde.org/show_bug.cgi?id=453087

            Bug ID: 453087
           Summary: [ppc64le] nlgone_abrt and nlpasssigalrm test failures
                    in glibc-2.28
           Product: valgrind
           Version: 3.19.0
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: jsew...@acm.org
          Reporter: jch...@redhat.com
  Target Milestone: ---

Created attachment 148413
  --> https://bugs.kde.org/attachment.cgi?id=148413&action=edit
Patch for filter_gdb.in

SUMMARY
nlgone_abrt and nlpasssigalrm gdbserver tests fail in ppc64le, due to an output
mismatch in the gdb end. Both tests has the exact same difference, I'm pasting
only nlgone_abrt diff to keep it shorter:

--- nlgone_abrt.stdoutB.exp     2022-04-11 10:27:12.000000000 -0400
+++ nlgone_abrt.stdoutB.out     2022-04-26 04:05:08.015213804 -0400
@@ -1,6 +1,7 @@
 Continuing.
 Program received signal SIGABRT, Aborted.
-0x........ in syscall ...
+kill () at ../sysdeps/unix/syscall-template.S:79
+79             ret
 Continuing.
 Program terminated with signal SIGABRT, Aborted.
 The program no longer exists.

I've found this in a RHEL-8.6 environment, with glibc2.28
(glibc-2.28-189.1.el8.ppc64le) and valgrind 3.18.1. Also checked with valgrind
3.19 and 3.20 compiled from source, and the issue persists.

Apparently this is caused because when glibc debug info is available the
address won't be printed. That causes that filter_gdb cannot replace the line
with the expected anonymized syscall. This gdb's raw output with glibc
debuginfo:
Program received signal SIGABRT, Aborted.
kill () at ../sysdeps/unix/syscall-template.S:79
79              ret
(gdb) (gdb) Continuing.

vs without debuginfo:
Program received signal SIGABRT, Aborted.
0x0000000004939a28 in kill () from /lib64/glibc-hwcaps/power9/libc-2.28.so
(gdb) (gdb) Continuing.

The other mismatch is that filter_gdb expects a T_PSEUDO macro line, but it's
seeing a "ret" instead. It just happens to be the previous line. This is the
code:

 78 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
 79         ret
 80 T_PSEUDO_END (SYSCALL_SYMBOL)

The attached patch for filter_gdb should format the output properly. After
applying it both tests passed.

Still, I'm not sure what the implications of the kill() syscall not showing up
any address, or if it's symptom of an underlying bug.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to