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

            Bug ID: 417427
           Summary: commit to fix vki_siginfo_t definition  created
                    numerous regression errors on PPC64
           Product: valgrind
           Version: unspecified
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: vex
          Assignee: jsew...@acm.org
          Reporter: c...@us.ibm.com
  Target Milestone: ---

The regression testing for ppc64 reports a significant number of failed tests
with commit:

commit 3bac39a10abf292d332bb20ab58c6dd5c28f9108
Author: Eugene Syromyatnikov <evg...@gmail.com>
Date:   Fri Mar 8 04:07:00 2019 +0100

    include/vki: fix vki_siginfo_t definition on amd64, arm64, and ppc64

    As it turned out, the size of vki_siginfo_t is incorrect on these 64-bit
    architectures:

        (gdb) p sizeof(vki_siginfo_t)
        $1 = 136
        (gdb) ptype struct vki_siginfo
        type = struct vki_siginfo {
            int si_signo;
            int si_errno;
            int si_code;
            union {
                int _pad[29];
                struct {...} _kill;
                struct {...} _timer;
                struct {...} _rt;
                struct {...} _sigchld;
                struct {...} _sigfault;
                struct {...} _sigpoll;
            } _sifields;
        }

    It looks like that for this architecture, __VKI_ARCH_SI_PREAMBLE_SIZE
    hasn't been defined properly, which resulted in incorrect
    VKI_SI_PAD_SIZE calculation (29 instead of 28).

        <6a9e4>   DW_AT_name        : (indirect string, offset: 0xcf59):
_sifields
        <6a9ef>   DW_AT_data_member_location: 16

    This issue has been discovered with strace's "make
check-valgrind-memcheck",
    which produced false out-of-bounds writes on ptrace(PTRACE_GETSIGINFO)
calls:

        SYSCALL[24264,1](101) sys_ptrace ( 16898, 24283, 0x0, 0x606bd40 )
        ==24264== Syscall param ptrace(getsiginfo) points to unaddressable
byte(s)
        ==24264==    at 0x575C06E: ptrace (ptrace.c:45)
        ==24264==    by 0x443244: next_event (strace.c:2431)
        ==24264==    by 0x443D30: main (strace.c:2845)
        ==24264==  Address 0x606bdc0 is 0 bytes after a block of size 144
alloc'd

    (Note that the address passed is 0x606bd40 and the address reported is
    0x606bdc0).

    After the patch, no such errors observed.

    * include/vki/vki-amd64-linux.h [__x86_64__ && __ILP32__]
    (__vki_kernel_si_clock_t): New typedef.
    [__x86_64__ && __ILP32__] (__VKI_ARCH_SI_CLOCK_T,
    __VKI_ARCH_SI_ATTRIBUTES): New macros.
    [__x86_64__ && !__ILP32__] (__VKI_ARCH_SI_PREAMBLE_SIZE): New macro,
    define to 4 ints.
    * include/vki/vki-arm64-linux.h (__VKI_ARCH_SI_PREAMBLE_SIZE): Likewise.
    * include/vki/vki-ppc64-linux.h [__powerpc64__]
(__VKI_ARCH_SI_PREAMBLE_SIZE):
    Likewise.
    * include/vki/vki-linux.h [!__VKI_ARCH_SI_CLOCK_T]
    (__VKI_ARCH_SI_CLOCK_T): New macro, define to vki_clock_t.
    [!__VKI_ARCH_SI_ATTRIBUTES] (__VKI_ARCH_SI_ATTRIBUTES): New macro,
    define to nil.
    (struct vki_siginfo): Use __VKI_ARCH_SI_CLOCK_T type for _utime and
    _stime fields.  Add __VKI_ARCH_SI_ATTRIBUTES.

    Resolves: https://bugs.kde.org/show_bug.cgi?id=405201
    Reported-by: Dmitry V. Levin <l...@altlinux.org>
    Signed-off-by: Eugene Syromyatnikov <evg...@gmail.com>


Prior to the patch the number of failed tests was:
== 647 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 1
stdou\
tB failure, 2 post failures ==                                                  
gdbserver_tests/nlcontrolc               (stdoutB)                              
memcheck/tests/bug340392                 (stderr)                               
memcheck/tests/leak_cpp_interior         (stderr)                               
memcheck/tests/linux/rfcomm              (stderr)                               
massif/tests/new-cpp                     (post)                                 
massif/tests/overloaded-new              (post) 

Currently we have 
== 649 tests, 38 stderr failures, 13 stdout failures, 1 stderrB failure, 5
stdo\
utB failures, 2 post failures ==                                                
gdbserver_tests/mcinfcallRU              (stderr)                               
gdbserver_tests/mcsignopass              (stderr)                               
gdbserver_tests/mcsignopass              (stdoutB)                              
gdbserver_tests/mcsigpass                (stderr)                               
gdbserver_tests/mcsigpass                (stdoutB)                              
gdbserver_tests/nlcontrolc               (stdoutB)                              
gdbserver_tests/nlpasssigalrm            (stderr)                               
gdbserver_tests/nlpasssigalrm            (stdoutB)                              
gdbserver_tests/nlpasssigalrm            (stderrB)                              
gdbserver_tests/nlvgdbsigqueue           (stderr)                               
gdbserver_tests/nlvgdbsigqueue           (stdoutB)                              
memcheck/tests/badjump2                  (stderr)                               
memcheck/tests/bug340392                 (stderr)                               
memcheck/tests/descr_belowsp             (stderr)                               
memcheck/tests/leak_cpp_interior         (stderr)                               
memcheck/tests/linux/rfcomm              (stderr)                               
memcheck/tests/post-syscall              (stderr)                               
memcheck/tests/sigaltstack               (stderr)                               
memcheck/tests/signal2                   (stdout)                               
memcheck/tests/signal2                   (stderr)                               
memcheck/tests/vcpu_fnfns                (stdout)                               
memcheck/tests/vcpu_fnfns                (stderr)                               
helgrind/tests/tc18_semabuse             (stderr)                               
helgrind/tests/tc20_verifywrap           (stderr)                               
drd/tests/pth_cancel_locked              (stderr)                               
drd/tests/sigalrm                        (stderr)                               
drd/tests/sigaltstack                    (stderr)                               
drd/tests/tc18_semabuse                  (stderr)                               
massif/tests/new-cpp                     (post)                                 
massif/tests/overloaded-new              (post)                                 
none/tests/async-sigs                    (stderr)                               
none/tests/bug234814                     (stdout)                               
none/tests/bug234814                     (stderr)                               
none/tests/coolo_sigaction               (stdout)                               
none/tests/coolo_sigaction               (stderr)
none/tests/faultstatus                   (stderr)                               
none/tests/linux/pthread-stack           (stderr)                               
none/tests/pending                       (stdout)                               
none/tests/pending                       (stderr)                               
none/tests/ppc64/test_isa_2_06_part3     (stdout)                               
none/tests/ppc64/test_isa_2_06_part3     (stderr)                               
none/tests/ppc64/test_isa_2_07_part2     (stdout)                               
none/tests/ppc64/test_isa_2_07_part2     (stderr)                               
none/tests/ppc64/tw_td                   (stdout)                               
none/tests/ppc64/tw_td                   (stderr)                               
none/tests/ppc64/twi_tdi                 (stdout)                               
none/tests/ppc64/twi_tdi                 (stderr)                               
none/tests/pth_cancel1                   (stdout)                               
none/tests/pth_cancel1                   (stderr)                               
none/tests/pth_cancel2                   (stderr)                               
none/tests/scripts/shell                 (stdout)                               
none/tests/scripts/shell                 (stderr)                               
none/tests/scripts/shell_valid4          (stderr)                               
none/tests/sigstackgrowth                (stdout)                               
none/tests/sigstackgrowth                (stderr)                               
none/tests/syscall-restart1              (stderr)                               
none/tests/syscall-restart2              (stderr)                               
none/tests/thread-exits                  (stdout)                               
none/tests/thread-exits                  (stderr)

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

Reply via email to