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

            Bug ID: 367942
           Summary: Segfault vgPlain_do_sys_sigaction (m_signals.c:1138)
           Product: valgrind
           Version: 3.10.0
          Platform: Debian stable
                OS: Linux
            Status: UNCONFIRMED
          Severity: crash
          Priority: NOR
         Component: general
          Assignee: jsew...@acm.org
          Reporter: brian.carpen...@gmail.com

Valgrind 3.10.0-4 on Debian 8.5 x64. This Perl script crashed the Perl
interpreter which crashed Valgrind. The Perl script is 100% expected to crash
Perl, but I wouldn't expect that to crash Valgrind and after talking to a Perl
developer, syscalls from Perl shouldn't crash Valgrind unless the syscall is
something like kill(valgrind_pid, SIGSEGV). In this case it's performing a read
(syscall 0) with garbage arguments. 

valgrind perl -e '{0!~0}map{$_=syscall$0++}Y..$:'

It'll hang here:

==20465== Syscall param read(buf) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==

Tap Enter on your keyboard:

==20465== Syscall param write(buf) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param open(filename) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param stat(file_name) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param stat(buf) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param fstat(buf) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param lstat(file_name) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param lstat(buf) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param poll(ufds.fd) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param poll(ufds.events) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param poll(ufds.revents) points to unaddressable byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x6 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param rt_sigaction(act->sa_handler) points to unaddressable
byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4000 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param rt_sigaction(act->sa_mask) points to unaddressable
byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4018 is not stack'd, malloc'd or (recently) free'd
==20465==
==20465== Syscall param rt_sigaction(act->sa_flags) points to unaddressable
byte(s)
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)
==20465==  Address 0x4008 is not stack'd, malloc'd or (recently) free'd
==20465==
--20465-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) -
exiting
--20465-- si_code=1;  Faulting address: 0x400B;  sp: 0x802f2ccb0

valgrind: the 'impossible' happened:
   Killed by fatal signal

host stacktrace:
==20465==    at 0x38114E5C: vgSysWrap_linux_sys_rt_sigaction_before
(syswrap-linux.c:3242)
==20465==    by 0x380F82D5: vgPlain_client_syscall (syswrap-main.c:1586)
==20465==    by 0x380F4B5A: handle_syscall (scheduler.c:1103)
==20465==    by 0x380F6226: vgPlain_scheduler (scheduler.c:1416)
==20465==    by 0x38105B60: thread_wrapper (syswrap-linux.c:103)
==20465==    by 0x38105B60: run_a_thread_NORETURN (syswrap-linux.c:156)

sched status:
  running_tid=1

Thread 1: status = VgTs_Runnable
==20465==    at 0x5C8D809: syscall (syscall.S:38)
==20465==    by 0x59A94D: Perl_pp_syscall (pp_sys.c:5711)
==20465==    by 0x4D6261: Perl_runops_debug (dump.c:2234)
==20465==    by 0x452E96: S_run_body (perl.c:2525)
==20465==    by 0x452E96: perl_run (perl.c:2448)
==20465==    by 0x421834: main (perlmain.c:123)

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

Reply via email to