You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(20) |
2
(19) |
3
(7) |
|
4
(13) |
5
(24) |
6
(9) |
7
(12) |
8
(8) |
9
(34) |
10
(28) |
|
11
(20) |
12
(23) |
13
(12) |
14
(10) |
15
(15) |
16
(24) |
17
(26) |
|
18
(17) |
19
(14) |
20
(14) |
21
(8) |
22
(12) |
23
(22) |
24
(10) |
|
25
(21) |
26
(21) |
27
(18) |
28
(8) |
29
(13) |
30
(15) |
|
|
From: <sv...@va...> - 2007-11-19 14:54:10
|
Author: sewardj
Date: 2007-11-19 14:54:09 +0000 (Mon, 19 Nov 2007)
New Revision: 7187
Log:
Zero out the vki_user_regs_struct before using it. Otherwise, we end
up passing uninitialised garbage on the stack to ptrace(SETREGS, ...)
for any fields in the struct which are not filled in. This does not
fix any known bugs, but seems like a good precautionary measure.
Modified:
trunk/coregrind/m_debugger.c
Modified: trunk/coregrind/m_debugger.c
===================================================================
--- trunk/coregrind/m_debugger.c 2007-11-19 02:47:16 UTC (rev 7186)
+++ trunk/coregrind/m_debugger.c 2007-11-19 14:54:09 UTC (rev 7187)
@@ -49,6 +49,7 @@
{
#if defined(VGP_x86_linux)
struct vki_user_regs_struct regs;
+ VG_(memset)(®s, 0, sizeof(regs));
regs.cs = vex->guest_CS;
regs.ss = vex->guest_SS;
regs.ds = vex->guest_DS;
@@ -69,6 +70,7 @@
#elif defined(VGP_amd64_linux)
struct vki_user_regs_struct regs;
+ VG_(memset)(®s, 0, sizeof(regs));
regs.rax = vex->guest_RAX;
regs.rbx = vex->guest_RBX;
regs.rcx = vex->guest_RCX;
|
|
From: Julian S. <js...@ac...> - 2007-11-19 11:53:19
|
> It's certainly possible that we broke something along the way. Do you
> have anything more specific about which ptrace call is failing or
> misbehaving, and in what way?
Some times the ptrace'd process seems to get whacked with SIGSEGV
around the time it is being ptrace-POKE_USR'd.
But there's something else I don't understand. On x86 and amd64,
the child's registers are set by filling in a "struct vki_user_regs_struct
regs" and doing ptrace(SETREGS) on it. On ppc32/64, there are a whole
sequence of PTRACE_POKEUSRs, one for each register. I don't know
why it is done differently. Is it you that wrote this code originally
(in your 2.2.0/2.4.0-ppc variants)?
I changed the code to use SETREGS, as shown below, and now that ptrace fails
thusly:
ptrace(PTRACE_SETREGS, 32331, 0, 0x46c1a2c) = -1 EFAULT (Bad address)
I checked for an obvious snafu, that "struct vki_user_regs_struct"
(defined in Valgrind's include/vki/vki-ppc32-linux.h) is identical to
"struct pt_regs" (in linux-2.6.23/include/asm-powerpc/ptrace.h) and
it does seem identical.
So, I dunno. The code below seems reasonable. Why would the kernel
EFAULT it? Do some of the not-filled-in fields (which are memset-0'd)
need to be filled in? I think these are: msr mq trap dar dsisr result.
J
#elif defined(VGP_ppc32_linux)
Int rc;
struct vki_user_regs_struct regs;
VG_(memset)(®s, 0, sizeof(regs));
regs.gpr[0 ] = vex->guest_GPR0;
regs.gpr[1 ] = vex->guest_GPR1;
regs.gpr[2 ] = vex->guest_GPR2;
regs.gpr[3 ] = vex->guest_GPR3;
regs.orig_gpr3 = vex->guest_GPR3;
regs.gpr[4 ] = vex->guest_GPR4;
regs.gpr[5 ] = vex->guest_GPR5;
regs.gpr[6 ] = vex->guest_GPR6;
regs.gpr[7 ] = vex->guest_GPR7;
regs.gpr[8 ] = vex->guest_GPR8;
regs.gpr[9 ] = vex->guest_GPR9;
regs.gpr[10] = vex->guest_GPR10;
regs.gpr[11] = vex->guest_GPR11;
regs.gpr[12] = vex->guest_GPR12;
regs.gpr[13] = vex->guest_GPR13;
regs.gpr[14] = vex->guest_GPR14;
regs.gpr[15] = vex->guest_GPR15;
regs.gpr[16] = vex->guest_GPR16;
regs.gpr[17] = vex->guest_GPR17;
regs.gpr[18] = vex->guest_GPR18;
regs.gpr[19] = vex->guest_GPR19;
regs.gpr[20] = vex->guest_GPR20;
regs.gpr[21] = vex->guest_GPR21;
regs.gpr[22] = vex->guest_GPR22;
regs.gpr[23] = vex->guest_GPR23;
regs.gpr[24] = vex->guest_GPR24;
regs.gpr[25] = vex->guest_GPR25;
regs.gpr[26] = vex->guest_GPR26;
regs.gpr[27] = vex->guest_GPR27;
regs.gpr[28] = vex->guest_GPR28;
regs.gpr[29] = vex->guest_GPR29;
regs.gpr[30] = vex->guest_GPR30;
regs.gpr[31] = vex->guest_GPR31;
regs.nip = vex->guest_CIA;
regs.ccr = LibVEX_GuestPPC32_get_CR(vex);
regs.link = vex->guest_LR;
regs.ctr = vex->guest_CTR;
regs.xer = LibVEX_GuestPPC32_get_XER(vex);
rc = VG_(ptrace)(13 /*VKI_PTRACE_SETREGS*/, pid, NULL, ®s);
VG_(printf)("SETREGS got %d\n", rc);
return rc;
|
|
From: Tom H. <th...@cy...> - 2007-11-19 03:52:10
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-11-19 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 318 tests, 60 stderr failures, 3 stdout failures, 27 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Paul M. <pa...@sa...> - 2007-11-19 03:28:47
|
Julian Seward writes: > After some futzing around it appears that > the mechanism works for ppc32-linux and ppc64-linux for kernel 2.6.20 > but fails in some bizarre way on 2.6.23. > > So now I'm wondering if ptrace handling on ppc platforms has also > been made more paranoid, or otherwise changed, lately? Do you know? There were a bunch of ptrace changes for ppc/ppc64 that went in to 2.6.23, in part to allow gdb to restart system calls properly after executing a function in the child. There was also some consolidation of the code for PEEKDATA and POKEDATA into generic code. The only thing that I know of where we made things more paranoid is that ptrace used to be able to change FE0/1 in the MSR on 64-bit platforms (but not 32-bit), which is is now not allowed (if you set them this way, the change wouldn't stick anyway). It's certainly possible that we broke something along the way. Do you have anything more specific about which ptrace call is failing or misbehaving, and in what way? Paul. |
|
From: Tom H. <th...@cy...> - 2007-11-19 03:28:27
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-11-19 03:05:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 352 tests, 6 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-19 03:21:54
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-11-19 03:00:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 354 tests, 24 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-19 03:18:35
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-11-19 03:10:03 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 352 tests, 9 stderr failures, 5 stdout failures, 0 post failures ==
memcheck/tests/pointer-trace (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/x86/scalar (stderr)
memcheck/tests/xml1 (stderr)
none/tests/cmdline1 (stdout)
none/tests/cmdline2 (stdout)
none/tests/mremap (stderr)
none/tests/mremap2 (stdout)
none/tests/pth_detached (stdout)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc20_verifywrap (stderr)
helgrind/tests/tc22_exit_w_lock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... failed
Last 20 lines of verbose log follow echo
checking dependency style of g++... gcc3
checking for ranlib... ranlib
checking for perl... /usr/bin/perl
checking for gdb... /usr/bin/gdb
checking dependency style of gcc... gcc3
checking for a supported version of gcc... ok (gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33))
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a supported CPU... ok (x86_64)
checking for use as an inner Valgrind... no
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (linux-gnu)
checking for the kernel version... 2.6 family (2.6.23.1-49.fc8)
checking for 32 bit build support... yes
checking for a supported CPU/OS combination... ok (x86_64-linux-gnu)
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking the libc version... unsupported version
configure: error: Valgrind requires glibc version 2.2 - 2.6
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Mon Nov 19 03:10:42 2007
--- new.short Mon Nov 19 03:18:33 2007
***************
*** 2,25 ****
Checking out valgrind source tree ... done
! Configuring valgrind ... failed
- Last 20 lines of verbose log follow echo
- checking dependency style of g++... gcc3
- checking for ranlib... ranlib
- checking for perl... /usr/bin/perl
- checking for gdb... /usr/bin/gdb
- checking dependency style of gcc... gcc3
- checking for a supported version of gcc... ok (gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33))
- checking build system type... x86_64-unknown-linux-gnu
- checking host system type... x86_64-unknown-linux-gnu
- checking for a supported CPU... ok (x86_64)
- checking for use as an inner Valgrind... no
- checking for a 64-bit only build... no
- checking for a 32-bit only build... no
- checking for a supported OS... ok (linux-gnu)
- checking for the kernel version... 2.6 family (2.6.23.1-49.fc8)
- checking for 32 bit build support... yes
- checking for a supported CPU/OS combination... ok (x86_64-linux-gnu)
- checking for grep that handles long lines and -e... /bin/grep
- checking for egrep... /bin/grep -E
- checking the libc version... unsupported version
- configure: error: Valgrind requires glibc version 2.2 - 2.6
--- 2,24 ----
Checking out valgrind source tree ... done
! Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 352 tests, 9 stderr failures, 5 stdout failures, 0 post failures ==
! memcheck/tests/pointer-trace (stderr)
! memcheck/tests/vcpu_fnfns (stdout)
! memcheck/tests/x86/scalar (stderr)
! memcheck/tests/xml1 (stderr)
! none/tests/cmdline1 (stdout)
! none/tests/cmdline2 (stdout)
! none/tests/mremap (stderr)
! none/tests/mremap2 (stdout)
! none/tests/pth_detached (stdout)
! helgrind/tests/tc17_sembar (stderr)
! helgrind/tests/tc18_semabuse (stderr)
! helgrind/tests/tc20_verifywrap (stderr)
! helgrind/tests/tc22_exit_w_lock (stderr)
! helgrind/tests/tc23_bogus_condwait (stderr)
|
|
From: <sv...@va...> - 2007-11-19 02:47:13
|
Author: sewardj
Date: 2007-11-19 02:47:16 +0000 (Mon, 19 Nov 2007)
New Revision: 7186
Log:
Update.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
===================================================================
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2007-11-19 02:29:07 UTC (rev 7185)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2007-11-19 02:47:16 UTC (rev 7186)
@@ -12,7 +12,6 @@
Add regtest for #149519.
-n-i-bz ppc32-linux getitimer w/ patch, devs@, 3 Sept.
n-i-bz r6783/6784 x86_linux_REDIR_FOR_index() broken (Fri Jul 27)
@@ -26,6 +25,8 @@
79844 fixed Helgrind complains about race condition which does not exist
+119404 r7175 problems running setuid executables (partial fix)
+
124478 glibc-fix memcheck reports uninitialized bytes on
timer_create() while it should not
@@ -46,13 +47,12 @@
145559 r7168 valgrind aborts when malloc_stats is called
145609 queried valgrind aborts all runs with 'repeated section!'
-145622 --db-attach broken again on x86-64
+145622 r7183 --db-attach broken again on x86-64
145837 ==149519
145887 PPC32: getitimer() system call is not supported (patch)
-146252 queried amd64->IR: handle Group 5 extended CALL and JMP insns
- with non-reg operands of sz==8
-146701 ==134990
+146252 fixed ==150678
+146701 fixed ==134990
146781 r7169 Adding support for private futexes
147325 r7170 valgrind internal error on syscall (SYS_io_destroy, 0)
@@ -73,27 +73,28 @@
149838 marginal x86->IR: 0xF 0xAE 0xD 0xE0 (FXRSTOR ?)
149519 r6813/4 ppc32: V aborts with SIGSEGV on execution of a signal handler
149878 marginal add (proper) check for calloc integer overflow
-149892 ==137714
+149892 fixed ==137714
150044 r7171 SEGV during stack deregister
150045 fixable?? Valgrind doesn't recognize pthread stack as a stack
when context switching
-150380 dwarf/gcc interoperation (dwarf3 read problems)
+150380 PRIO dwarf/gcc interoperation (dwarf3 read problems)
(related to 129937 ?)
150408 ==148447
-150678 queried priv/guest-amd64/toIR.c:3741 (dis_Grp5): Assertion
+150678 vx1798d priv/guest-amd64/toIR.c:3741 (dis_Grp5): Assertion
`sz == 4' failed when running Mono on x86_64
- (== 146252 ?)
150681 Check definedness of client request arguments
151209 r7028 V unable to execute programs for users with UID > 2^16
151570 cantrepro Bogus "Conditional jump ..." error with bit field (3.1.1)
-151886 Suppression entry Memcheck:Param ignored
-151908 --db-attach unimplemented on ppc64
+151886 PRIO Suppression entry Memcheck:Param ignored
+151908 inprogress --db-attach unimplemented on ppc64
151935 --db-command= not parsed properly in .valgrindrc
151938 help on --db-command= misleading
152022 r7147 subw $0x28, %%sp causes assertion failure in memcheck
+152357 inb and outb not recognized in 64-bit mode
+152501 vex x86->IR: 0x27 0x66 0x89 0x45 (daa)
---------- Bugs reported after (in) 3.2.3 --------------------------
|
|
From: Julian S. <js...@ac...> - 2007-11-19 02:43:39
|
Paul Valgrind has an mechanism whereby it can attach GDB to the client process, so users can poke around when an error occurs to see what's going on. It works using fork/ptrace. See coregrind/m_debugger.c. Recently said mechanism stopped working on amd64-linux. Turned out to be that the kernel's sanity checking for ptrace(PTRACE_SETREGS, ...) was tightened up around 2.6.20/21, causing the failure. Easily fixed. See http://bugs.kde.org/show_bug.cgi?id=145622 Now I've been trying to get same functionality implemented for ppc64-linux (it never has been so far). See http://bugs.kde.org/show_bug.cgi?id=151908 After some futzing around it appears that the mechanism works for ppc32-linux and ppc64-linux for kernel 2.6.20 but fails in some bizarre way on 2.6.23. So now I'm wondering if ptrace handling on ppc platforms has also been made more paranoid, or otherwise changed, lately? Do you know? Thanks, J |
|
From: <sv...@va...> - 2007-11-19 02:29:05
|
Author: sewardj
Date: 2007-11-19 02:29:07 +0000 (Mon, 19 Nov 2007)
New Revision: 7185
Log:
Add initial code to support debugger attaching on ppc64-linux (Ryan John).
Works on 2.6.20. Does not work on 2.6.23 for unknown reasons.
Modified:
trunk/coregrind/m_debugger.c
Modified: trunk/coregrind/m_debugger.c
===================================================================
--- trunk/coregrind/m_debugger.c 2007-11-19 02:01:01 UTC (rev 7184)
+++ trunk/coregrind/m_debugger.c 2007-11-19 02:29:07 UTC (rev 7185)
@@ -149,7 +149,59 @@
return rc;
#elif defined(VGP_ppc64_linux)
- I_die_here;
+ Int rc = 0;
+ /* FRJ: copied nearly verbatim from the ppc32 case. I compared the
+ vki-ppc64-linux.h with its ppc32 counterpart and saw no
+ appreciable differences, other than the registers being 8 bytes
+ instead of 4. No idea why we don't set all of the entries
+ declared in vki_pt_regs, but ppc32 doesn't so there must be a
+ reason.
+
+ Finally, note that CR and XER are 32 bits even for ppc64 (see
+ libvex_guest_ppc64.h), but the vki_pt_regs struct still gives
+ them 64 bits.
+ */
+ /* apparently the casting to void* is the Right Thing To Do */
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R0 * 8), (void*)vex->guest_GPR0);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R1 * 8), (void*)vex->guest_GPR1);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R2 * 8), (void*)vex->guest_GPR2);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R3 * 8), (void*)vex->guest_GPR3);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R4 * 8), (void*)vex->guest_GPR4);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R5 * 8), (void*)vex->guest_GPR5);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R6 * 8), (void*)vex->guest_GPR6);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R7 * 8), (void*)vex->guest_GPR7);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R8 * 8), (void*)vex->guest_GPR8);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R9 * 8), (void*)vex->guest_GPR9);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R10 * 8), (void*)vex->guest_GPR10);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R11 * 8), (void*)vex->guest_GPR11);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R12 * 8), (void*)vex->guest_GPR12);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R13 * 8), (void*)vex->guest_GPR13);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R14 * 8), (void*)vex->guest_GPR14);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R15 * 8), (void*)vex->guest_GPR15);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R16 * 8), (void*)vex->guest_GPR16);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R17 * 8), (void*)vex->guest_GPR17);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R18 * 8), (void*)vex->guest_GPR18);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R19 * 8), (void*)vex->guest_GPR19);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R20 * 8), (void*)vex->guest_GPR20);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R21 * 8), (void*)vex->guest_GPR21);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R22 * 8), (void*)vex->guest_GPR22);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R23 * 8), (void*)vex->guest_GPR23);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R24 * 8), (void*)vex->guest_GPR24);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R25 * 8), (void*)vex->guest_GPR25);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R26 * 8), (void*)vex->guest_GPR26);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R27 * 8), (void*)vex->guest_GPR27);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R28 * 8), (void*)vex->guest_GPR28);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R29 * 8), (void*)vex->guest_GPR29);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R30 * 8), (void*)vex->guest_GPR30);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R31 * 8), (void*)vex->guest_GPR31);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_NIP * 8), (void*)vex->guest_CIA);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CCR * 8),
+ (void*)(long)LibVEX_GuestPPC64_get_CR(vex));
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_LNK * 8), (void*)vex->guest_LR);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CTR * 8), (void*)vex->guest_CTR);
+ rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_XER * 8),
+ (void*)(long)LibVEX_GuestPPC64_get_XER(vex));
+ return rc;
#elif defined(VGP_ppc32_aix5)
I_die_here;
@@ -175,7 +227,6 @@
pid = VG_(fork)();
if (pid == 0) {
- vki_sigset_t set;
/* child */
rc = VG_(ptrace)(VKI_PTRACE_TRACEME, 0, NULL, NULL);
vg_assert(rc == 0);
|
|
From: <sv...@va...> - 2007-11-19 02:01:03
|
Author: sewardj
Date: 2007-11-19 02:01:01 +0000 (Mon, 19 Nov 2007)
New Revision: 7184
Log:
Minor tidyings to the debugger-attach code, as part of a failed
attempt to fix debugger attach on ppc32-linux and ppc64-linux (see
#151908). The fork/ptrace-based mechanism works fine for x86-linux
and amd64-linux but not on ppc. I have no idea what is going on.
It seems like the forked child process (to which we will attach GDB)
does not stop when it does PTRACE_TRACE_ME and so things go downhill
very rapidly after that.
Modified:
trunk/coregrind/m_debugger.c
trunk/coregrind/m_errormgr.c
Modified: trunk/coregrind/m_debugger.c
===================================================================
--- trunk/coregrind/m_debugger.c 2007-11-19 00:58:18 UTC (rev 7183)
+++ trunk/coregrind/m_debugger.c 2007-11-19 02:01:01 UTC (rev 7184)
@@ -170,13 +170,20 @@
void VG_(start_debugger) ( ThreadId tid )
{
# define N_BUF 4096
- Int pid;
+ Int pid, rc;
- if ((pid = VG_(fork)()) == 0) {
- VG_(ptrace)(VKI_PTRACE_TRACEME, 0, NULL, NULL);
- VG_(kill)(VG_(getpid)(), VKI_SIGSTOP);
+ pid = VG_(fork)();
+ if (pid == 0) {
+ vki_sigset_t set;
+ /* child */
+ rc = VG_(ptrace)(VKI_PTRACE_TRACEME, 0, NULL, NULL);
+ vg_assert(rc == 0);
+ rc = VG_(kill)(VG_(getpid)(), VKI_SIGSTOP);
+ vg_assert(rc == 0);
+
} else if (pid > 0) {
+ /* parent */
Int status;
Int res;
Modified: trunk/coregrind/m_errormgr.c
===================================================================
--- trunk/coregrind/m_errormgr.c 2007-11-19 00:58:18 UTC (rev 7183)
+++ trunk/coregrind/m_errormgr.c 2007-11-19 02:01:01 UTC (rev 7184)
@@ -455,7 +455,7 @@
if (allow_db_attach &&
VG_(is_action_requested)( "Attach to debugger", & VG_(clo_db_attach) ))
{
- VG_(printf)("starting debugger\n");
+ if (0) VG_(printf)("starting debugger\n");
VG_(start_debugger)( err->tid );
}
/* Or maybe we want to generate the error's suppression? */
|
|
From: <js...@ac...> - 2007-11-19 01:52:53
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-11-19 02:00:01 CET Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 285 tests, 25 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 285 tests, 25 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Nov 19 02:11:17 2007 --- new.short Mon Nov 19 02:21:52 2007 *************** *** 8,10 **** ! == 285 tests, 25 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) --- 8,10 ---- ! == 285 tests, 25 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) *************** *** 27,28 **** --- 27,29 ---- helgrind/tests/tc07_hbl1 (stderr) + helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc08_hbl2 (stderr) |
|
From: <sv...@va...> - 2007-11-19 00:58:16
|
Author: sewardj
Date: 2007-11-19 00:58:18 +0000 (Mon, 19 Nov 2007)
New Revision: 7183
Log:
When doing ptrace on amd64-linux, provide values which don't fail the
kernel's sanity checks for kernel >= 2.6.21. Fixes #145622.
Modified:
trunk/coregrind/m_debugger.c
Modified: trunk/coregrind/m_debugger.c
===================================================================
--- trunk/coregrind/m_debugger.c 2007-11-18 18:22:50 UTC (rev 7182)
+++ trunk/coregrind/m_debugger.c 2007-11-19 00:58:18 UTC (rev 7183)
@@ -87,6 +87,21 @@
regs.r15 = vex->guest_R15;
regs.eflags = LibVEX_GuestAMD64_get_rflags(vex);
regs.rip = vex->guest_RIP;
+ /* Set %{c,d,e,f,s,g}s and %{fs,gs}_base (whatever those are) to
+ values which don't fail the kernel's sanity checks. I have no
+ idea what these should really be set to. Anyway, mostly it
+ seems that zero is an allowable value, except for %cs and %ss
+ which have to have their lowest 2 bits be 11. See putreg() in
+ linux-2.6.23/arch/x86_64/kernel/ptrace.c for the apparently
+ relevant sanity checks. This fixes #145622. */
+ regs.cs = 3;
+ regs.ds = 0;
+ regs.es = 0;
+ regs.fs = 0;
+ regs.ss = 3;
+ regs.gs = 0;
+ regs.fs_base = 0;
+ regs.gs_base = 0;
return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, ®s);
#elif defined(VGP_ppc32_linux)
|
|
From: <sv...@va...> - 2007-11-19 00:39:21
|
Author: sewardj
Date: 2007-11-19 00:39:23 +0000 (Mon, 19 Nov 2007)
New Revision: 1798
Log:
Fix this:
vex: priv/guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed.
(CALL Ev with sz==8) as reported in #150678 and #146252. Also change a
bunch of assertions on undecoded instructions into proper decoding failures.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
===================================================================
--- trunk/priv/guest-amd64/toIR.c 2007-11-16 12:43:32 UTC (rev 1797)
+++ trunk/priv/guest-amd64/toIR.c 2007-11-19 00:39:23 UTC (rev 1798)
@@ -3694,7 +3694,7 @@
break;
case 2: /* call Ev */
/* Ignore any sz value and operate as if sz==8. */
- vassert(sz == 4 || sz == 8);
+ if (!(sz == 4 || sz == 8)) goto unhandled;
sz = 8;
t3 = newTemp(Ity_I64);
assign(t3, getIRegE(sz,pfx,modrm));
@@ -3709,7 +3709,7 @@
break;
case 4: /* jmp Ev */
/* Ignore any sz value and operate as if sz==8. */
- vassert(sz == 4 || sz == 8);
+ if (!(sz == 4 || sz == 8)) goto unhandled;
sz = 8;
t3 = newTemp(Ity_I64);
assign(t3, getIRegE(sz,pfx,modrm));
@@ -3748,7 +3748,7 @@
break;
case 2: /* call Ev */
/* Ignore any sz value and operate as if sz==8. */
- vassert(sz == 4);
+ if (!(sz == 4 || sz == 8)) goto unhandled;
sz = 8;
t3 = newTemp(Ity_I64);
assign(t3, loadLE(Ity_I64,mkexpr(addr)));
@@ -3763,7 +3763,7 @@
break;
case 4: /* JMP Ev */
/* Ignore any sz value and operate as if sz==8. */
- vassert(sz == 4);
+ if (!(sz == 4 || sz == 8)) goto unhandled;
sz = 8;
t3 = newTemp(Ity_I64);
assign(t3, loadLE(Ity_I64,mkexpr(addr)));
@@ -3774,7 +3774,7 @@
case 6: /* PUSH Ev */
/* There is no encoding for 32-bit operand size; hence ... */
if (sz == 4) sz = 8;
- vassert(sz == 8 || sz == 2);
+ if (!(sz == 8 || sz == 2)) goto unhandled;
if (sz == 8) {
t3 = newTemp(Ity_I64);
assign(t3, loadLE(Ity_I64,mkexpr(addr)));
|