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
(6) |
2
(7) |
3
(7) |
4
(5) |
5
|
|
6
|
7
|
8
|
9
(5) |
10
(4) |
11
(5) |
12
(1) |
|
13
(2) |
14
(1) |
15
(2) |
16
(5) |
17
|
18
|
19
|
|
20
|
21
(1) |
22
(8) |
23
(1) |
24
|
25
|
26
(1) |
|
27
(5) |
28
|
29
(15) |
30
(9) |
31
(12) |
|
|
|
From: Tom H. <th...@cy...> - 2009-12-22 03:36:05
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-12-22 03:10:06 GMT Ended at 2009-12-22 03:35:45 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 == 538 tests, 3 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (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 == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Dec 22 03:23:00 2009 --- new.short Tue Dec 22 03:35:45 2009 *************** *** 8,11 **** ! == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 8,12 ---- ! == 538 tests, 3 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) + helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2009-12-21 11:30:06
|
Author: tom
Date: 2009-12-21 11:29:54 +0000 (Mon, 21 Dec 2009)
New Revision: 10969
Log:
Handle adjtimex being called in adjtime mode correctly. Closes #219538.
Validate the constant field with ADJ_TAI is used in an adjtimex call.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2009-12-16 02:39:39 UTC (rev 10968)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2009-12-21 11:29:54 UTC (rev 10969)
@@ -623,18 +623,23 @@
PRE_REG_READ1(long, "adjtimex", struct timex *, buf);
PRE_MEM_READ( "adjtimex(timex->modes)", ARG1, sizeof(tx->modes));
-#define ADJX(bit,field) \
- if (tx->modes & bit) \
+#define ADJX(bits,field) \
+ if (tx->modes & (bits)) \
PRE_MEM_READ( "adjtimex(timex->"#field")", \
(Addr)&tx->field, sizeof(tx->field))
- ADJX(VKI_ADJ_OFFSET, offset);
- ADJX(VKI_ADJ_FREQUENCY, freq);
- ADJX(VKI_ADJ_MAXERROR, maxerror);
- ADJX(VKI_ADJ_ESTERROR, esterror);
- ADJX(VKI_ADJ_STATUS, status);
- ADJX(VKI_ADJ_TIMECONST, constant);
- ADJX(VKI_ADJ_TICK, tick);
+ if (tx->modes & VKI_ADJ_ADJTIME) {
+ if (!(tx->modes & VKI_ADJ_OFFSET_READONLY))
+ PRE_MEM_READ( "adjtimex(timex->offset)", (Addr)&tx->offset, sizeof(tx->offset));
+ } else {
+ ADJX(VKI_ADJ_OFFSET, offset);
+ ADJX(VKI_ADJ_FREQUENCY, freq);
+ ADJX(VKI_ADJ_MAXERROR, maxerror);
+ ADJX(VKI_ADJ_ESTERROR, esterror);
+ ADJX(VKI_ADJ_STATUS, status);
+ ADJX(VKI_ADJ_TIMECONST|VKI_ADJ_TAI, constant);
+ ADJX(VKI_ADJ_TICK, tick);
+ }
#undef ADJX
PRE_MEM_WRITE( "adjtimex(timex)", ARG1, sizeof(struct vki_timex));
Modified: trunk/include/vki/vki-linux.h
===================================================================
--- trunk/include/vki/vki-linux.h 2009-12-16 02:39:39 UTC (rev 10968)
+++ trunk/include/vki/vki-linux.h 2009-12-21 11:29:54 UTC (rev 10969)
@@ -283,8 +283,11 @@
#define VKI_ADJ_ESTERROR 0x0008 /* estimated time error */
#define VKI_ADJ_STATUS 0x0010 /* clock status */
#define VKI_ADJ_TIMECONST 0x0020 /* pll time constant */
+#define VKI_ADJ_TAI 0x0080 /* set TAI offset */
#define VKI_ADJ_TICK 0x4000 /* tick value */
+#define VKI_ADJ_ADJTIME 0x8000 /* switch between adjtime/adjtimex modes */
//#define VKI_ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
+#define VKI_ADJ_OFFSET_READONLY 0x2000 /* read-only adjtime */
//----------------------------------------------------------------------
// From linux-2.6.8.1/include/linux/times.h
|
|
From: Bart V. A. <bar...@gm...> - 2009-12-16 08:50:25
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-12-16 02:23:18 EST Ended at 2009-12-16 03:50:06 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Alexander P. <gl...@go...> - 2009-12-16 07:34:42
|
Nightly build on mcgrind ( Darwin 9.7.0 i386 ) Started at 2009-12-16 09:06:01 MSK Ended at 2009-12-16 09:24:41 MSK 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 == 433 tests, 22 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/null_socket (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) none/tests/async-sigs (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) -- Alexander Potapenko Software Engineer Google Moscow |
|
From: Tom H. <th...@cy...> - 2009-12-16 03:50:20
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-12-16 03:05:07 GMT Ended at 2009-12-16 03:49:56 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 == 531 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-12-16 03:36:25
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-12-16 03:10:05 GMT Ended at 2009-12-16 03:35:58 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 == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2009-12-16 02:39:50
|
Author: njn
Date: 2009-12-16 02:39:39 +0000 (Wed, 16 Dec 2009)
New Revision: 10968
Log:
Document the 'cc' parameter for OSet creation.
Modified:
trunk/include/pub_tool_oset.h
Modified: trunk/include/pub_tool_oset.h
===================================================================
--- trunk/include/pub_tool_oset.h 2009-12-15 10:25:13 UTC (rev 10967)
+++ trunk/include/pub_tool_oset.h 2009-12-16 02:39:39 UTC (rev 10968)
@@ -77,7 +77,7 @@
// - Free: frees a chunk of memory allocated with Alloc.
typedef Word (*OSetCmp_t) ( const void* key, const void* elem );
-typedef void* (*OSetAlloc_t) ( HChar* ec, SizeT szB );
+typedef void* (*OSetAlloc_t) ( HChar* cc, SizeT szB );
typedef void (*OSetFree_t) ( void* p );
/*--------------------------------------------------------------------*/
@@ -87,6 +87,7 @@
// * Create: allocates and initialises the OSet. Arguments:
// - alloc The allocation function used internally for allocating the
// OSet and all its nodes.
+// - cc Cost centre string used by 'alloc'.
// - free The deallocation function used internally for freeing nodes
// called by VG_(OSetWord_Destroy)().
//
@@ -98,7 +99,7 @@
// to allow the destruction of any attached resources; if NULL it is not
// called.
-extern OSet* VG_(OSetWord_Create) ( OSetAlloc_t alloc, HChar* ec,
+extern OSet* VG_(OSetWord_Create) ( OSetAlloc_t alloc, HChar* cc,
OSetFree_t _free );
extern void VG_(OSetWord_Destroy) ( OSet* os );
@@ -161,6 +162,7 @@
// - alloc The allocation function used for allocating the OSet itself;
// it's also called for each invocation of
// VG_(OSetGen_AllocNode)().
+// - cc Cost centre string used by 'alloc'.
// - free The deallocation function used by VG_(OSetGen_FreeNode)() and
// VG_(OSetGen_Destroy)().
//
@@ -184,7 +186,7 @@
// lead to assertions in Valgrind's allocator.
extern OSet* VG_(OSetGen_Create) ( PtrdiffT keyOff, OSetCmp_t cmp,
- OSetAlloc_t alloc, HChar* ec,
+ OSetAlloc_t alloc, HChar* cc,
OSetFree_t _free );
extern void VG_(OSetGen_Destroy) ( OSet* os );
extern void* VG_(OSetGen_AllocNode) ( OSet* os, SizeT elemSize );
|
|
From: <sv...@va...> - 2009-12-15 10:25:26
|
Author: sewardj
Date: 2009-12-15 10:25:13 +0000 (Tue, 15 Dec 2009)
New Revision: 10967
Log:
Track vex r1939 (rename CC_DEP3 to CC_NDEP in the ARM guest state)
Modified:
branches/ARM/memcheck/mc_machine.c
Modified: branches/ARM/memcheck/mc_machine.c
===================================================================
--- branches/ARM/memcheck/mc_machine.c 2009-12-10 19:26:32 UTC (rev 10966)
+++ branches/ARM/memcheck/mc_machine.c 2009-12-15 10:25:13 UTC (rev 10967)
@@ -716,7 +716,7 @@
if (o == GOF(CC_DEP1) && sz == 4) return o;
if (o == GOF(CC_DEP2) && sz == 4) return o;
- if (o == GOF(CC_DEP3) && sz == 4) return -1; /* slot unused */
+ if (o == GOF(CC_NDEP) && sz == 4) return -1; /* slot unused */
//if (o == GOF(SYSCALLNO) && sz == 4) return -1; /* slot unused */
//if (o == GOF(CC) && sz == 4) return -1; /* slot unused */
|
|
From: <sv...@va...> - 2009-12-15 10:23:58
|
Author: sewardj
Date: 2009-12-15 10:23:44 +0000 (Tue, 15 Dec 2009)
New Revision: 1939
Log:
In the ARM guest state, rename CC_DEP3 (which it isn't) to CC_NDEP
(which it is). Also set some mcx_mask values correctly for helper
calls.
Modified:
branches/ARM/priv/guest_arm_helpers.c
branches/ARM/priv/guest_arm_toIR.c
branches/ARM/pub/libvex_guest_arm.h
Modified: branches/ARM/priv/guest_arm_helpers.c
===================================================================
--- branches/ARM/priv/guest_arm_helpers.c 2009-12-03 09:50:38 UTC (rev 1938)
+++ branches/ARM/priv/guest_arm_helpers.c 2009-12-15 10:23:44 UTC (rev 1939)
@@ -418,7 +418,7 @@
vex_state->guest_CC_OP = ARMG_CC_OP_COPY;
vex_state->guest_CC_DEP1 = flags_native;
vex_state->guest_CC_DEP2 = 0;
- vex_state->guest_CC_DEP3 = 0;
+ vex_state->guest_CC_NDEP = 0;
}
#endif
@@ -430,7 +430,7 @@
vex_state->guest_CC_OP,
vex_state->guest_CC_DEP1,
vex_state->guest_CC_DEP2,
- vex_state->guest_CC_DEP3
+ vex_state->guest_CC_NDEP
);
return nzcv;
}
@@ -458,7 +458,7 @@
vex_state->guest_CC_OP = ARMG_CC_OP_COPY;
vex_state->guest_CC_DEP1 = 0;
vex_state->guest_CC_DEP2 = 0;
- vex_state->guest_CC_DEP3 = 0;
+ vex_state->guest_CC_NDEP = 0;
vex_state->guest_EMWARN = 0;
vex_state->guest_TISTART = 0;
@@ -560,19 +560,20 @@
/* Describe any sections to be regarded by Memcheck as
'always-defined'. */
- .n_alwaysDefd = 7,
+ .n_alwaysDefd = 8,
/* flags thunk: OP is always defd, whereas DEP1 and DEP2
have to be tracked. See detailed comment in gdefs.h on
meaning of thunk fields. */
.alwaysDefd
- = { /* */ ALWAYSDEFD(guest_R15),
- /* */ ALWAYSDEFD(guest_CC_OP),
- /* */ ALWAYSDEFD(guest_EMWARN),
- /* */ ALWAYSDEFD(guest_TISTART),
- /* */ ALWAYSDEFD(guest_TILEN),
- /* */ ALWAYSDEFD(guest_NRADDR),
- /* */ ALWAYSDEFD(guest_IP_AT_SYSCALL)
+ = { /* 0 */ ALWAYSDEFD(guest_R15),
+ /* 1 */ ALWAYSDEFD(guest_CC_OP),
+ /* 2 */ ALWAYSDEFD(guest_CC_NDEP),
+ /* 3 */ ALWAYSDEFD(guest_EMWARN),
+ /* 4 */ ALWAYSDEFD(guest_TISTART),
+ /* 5 */ ALWAYSDEFD(guest_TILEN),
+ /* 6 */ ALWAYSDEFD(guest_NRADDR),
+ /* 7 */ ALWAYSDEFD(guest_IP_AT_SYSCALL)
}
};
Modified: branches/ARM/priv/guest_arm_toIR.c
===================================================================
--- branches/ARM/priv/guest_arm_toIR.c 2009-12-03 09:50:38 UTC (rev 1938)
+++ branches/ARM/priv/guest_arm_toIR.c 2009-12-15 10:23:44 UTC (rev 1939)
@@ -299,7 +299,7 @@
#define OFFB_CC_OP offsetof(VexGuestARMState,guest_CC_OP)
#define OFFB_CC_DEP1 offsetof(VexGuestARMState,guest_CC_DEP1)
#define OFFB_CC_DEP2 offsetof(VexGuestARMState,guest_CC_DEP2)
-#define OFFB_CC_DEP3 offsetof(VexGuestARMState,guest_CC_DEP3)
+#define OFFB_CC_NDEP offsetof(VexGuestARMState,guest_CC_NDEP)
#define OFFB_NRADDR offsetof(VexGuestARMState,guest_NRADDR)
#define OFFB_D0 offsetof(VexGuestARMState,guest_D0)
@@ -653,7 +653,7 @@
/* Build IR to calculate some particular condition from stored
- CC_OP/CC_DEP1/CC_DEP2/CC_DEP3. Returns an expression of type
+ CC_OP/CC_DEP1/CC_DEP2/CC_NDEP. Returns an expression of type
Ity_I32, suitable for narrowing. Although the return type is
Ity_I32, the returned value is either 0 or 1.
*/
@@ -665,10 +665,11 @@
vassert(cond >= 0 && cond <= 15);
IRExpr** args
= mkIRExprVec_4(
- binop(Iop_Or32, IRExpr_Get(OFFB_CC_OP, Ity_I32), mkU32(cond << 4)),
+ binop(Iop_Or32, IRExpr_Get(OFFB_CC_OP, Ity_I32),
+ mkU32(cond << 4)),
IRExpr_Get(OFFB_CC_DEP1, Ity_I32),
IRExpr_Get(OFFB_CC_DEP2, Ity_I32),
- IRExpr_Get(OFFB_CC_DEP3, Ity_I32)
+ IRExpr_Get(OFFB_CC_NDEP, Ity_I32)
);
IRExpr* call
= mkIRExprCCall(
@@ -678,15 +679,15 @@
args
);
- /* Exclude the requested condition and OP from definedness
+ /* Exclude the requested condition, OP and NDEP from definedness
checking. We're only interested in DEP1 and DEP2. */
- call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<1);
+ call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<3);
return call;
}
/* Build IR to calculate just the carry flag from stored
- CC_OP/CC_DEP1/CC_DEP2/CC_DEP3. Returns an expression ::
+ CC_OP/CC_DEP1/CC_DEP2/CC_NDEP. Returns an expression ::
Ity_I32. */
static IRExpr* mk_armg_calculate_flag_c ( void )
{
@@ -694,7 +695,7 @@
= mkIRExprVec_4( IRExpr_Get(OFFB_CC_OP, Ity_I32),
IRExpr_Get(OFFB_CC_DEP1, Ity_I32),
IRExpr_Get(OFFB_CC_DEP2, Ity_I32),
- IRExpr_Get(OFFB_CC_DEP3, Ity_I32) );
+ IRExpr_Get(OFFB_CC_NDEP, Ity_I32) );
IRExpr* call
= mkIRExprCCall(
Ity_I32,
@@ -702,15 +703,15 @@
"armg_calculate_flag_c", &armg_calculate_flag_c,
args
);
- /* Exclude OP from definedness checking. We're only
- interested in DEP1/2/3. */
- call->Iex.CCall.cee->mcx_mask = 1;
+ /* Exclude OP and NDEP from definedness checking. We're only
+ interested in DEP1 and DEP2. */
+ call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<3);
return call;
}
/* Build IR to calculate just the overflow flag from stored
- CC_OP/CC_DEP1/CC_DEP2/CC_DEP3. Returns an expression ::
+ CC_OP/CC_DEP1/CC_DEP2/CC_NDEP. Returns an expression ::
Ity_I32. */
static IRExpr* mk_armg_calculate_flag_v ( void )
{
@@ -718,7 +719,7 @@
= mkIRExprVec_4( IRExpr_Get(OFFB_CC_OP, Ity_I32),
IRExpr_Get(OFFB_CC_DEP1, Ity_I32),
IRExpr_Get(OFFB_CC_DEP2, Ity_I32),
- IRExpr_Get(OFFB_CC_DEP3, Ity_I32) );
+ IRExpr_Get(OFFB_CC_NDEP, Ity_I32) );
IRExpr* call
= mkIRExprCCall(
Ity_I32,
@@ -726,9 +727,9 @@
"armg_calculate_flag_v", &armg_calculate_flag_v,
args
);
- /* Exclude OP from definedness checking. We're only
- interested in DEP1/2/3. */
- call->Iex.CCall.cee->mcx_mask = 1;
+ /* Exclude OP and NDEP from definedness checking. We're only
+ interested in DEP1 and DEP2. */
+ call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<3);
return call;
}
@@ -741,7 +742,7 @@
= mkIRExprVec_4( IRExpr_Get(OFFB_CC_OP, Ity_I32),
IRExpr_Get(OFFB_CC_DEP1, Ity_I32),
IRExpr_Get(OFFB_CC_DEP2, Ity_I32),
- IRExpr_Get(OFFB_CC_DEP3, Ity_I32) );
+ IRExpr_Get(OFFB_CC_NDEP, Ity_I32) );
IRExpr* call
= mkIRExprCCall(
Ity_I32,
@@ -749,9 +750,9 @@
"armg_calculate_flags_nzcv", &armg_calculate_flags_nzcv,
args
);
- /* Exclude OP from definedness checking. We're only
- interested in DEP1/2/3. */
- call->Iex.CCall.cee->mcx_mask = 1;
+ /* Exclude OP and NDEP from definedness checking. We're only
+ interested in DEP1 and DEP2. */
+ call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<3);
return call;
}
@@ -760,21 +761,21 @@
guard is IRTemp_INVALID then it's unconditional, else it holds a
condition :: Ity_I32. */
static
-void setFlags_D1_D2_D3 ( UInt cc_op, IRTemp t_dep1,
- IRTemp t_dep2, IRTemp t_dep3,
+void setFlags_D1_D2_ND ( UInt cc_op, IRTemp t_dep1,
+ IRTemp t_dep2, IRTemp t_ndep,
IRTemp guardT /* :: Ity_I32, 0 or 1 */ )
{
IRTemp c8;
vassert(typeOfIRTemp(irsb->tyenv, t_dep1 == Ity_I32));
vassert(typeOfIRTemp(irsb->tyenv, t_dep2 == Ity_I32));
- vassert(typeOfIRTemp(irsb->tyenv, t_dep3 == Ity_I32));
+ vassert(typeOfIRTemp(irsb->tyenv, t_ndep == Ity_I32));
vassert(cc_op >= ARMG_CC_OP_COPY && cc_op < ARMG_CC_OP_NUMBER);
if (guardT == IRTemp_INVALID) {
/* unconditional */
stmt( IRStmt_Put( OFFB_CC_OP, mkU32(cc_op) ));
stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(t_dep1) ));
stmt( IRStmt_Put( OFFB_CC_DEP2, mkexpr(t_dep2) ));
- stmt( IRStmt_Put( OFFB_CC_DEP3, mkexpr(t_dep3) ));
+ stmt( IRStmt_Put( OFFB_CC_NDEP, mkexpr(t_ndep) ));
} else {
/* conditional */
c8 = newTemp(Ity_I8);
@@ -795,15 +796,15 @@
IRExpr_Get(OFFB_CC_DEP2, Ity_I32),
mkexpr(t_dep2) )));
stmt( IRStmt_Put(
- OFFB_CC_DEP3,
+ OFFB_CC_NDEP,
IRExpr_Mux0X( mkexpr(c8),
- IRExpr_Get(OFFB_CC_DEP3, Ity_I32),
- mkexpr(t_dep3) )));
+ IRExpr_Get(OFFB_CC_NDEP, Ity_I32),
+ mkexpr(t_ndep) )));
}
}
-/* Minor variant of the above that sets DEP3 to zero (if it
+/* Minor variant of the above that sets NDEP to zero (if it
sets it at all) */
static void setFlags_D1_D2 ( UInt cc_op, IRTemp t_dep1,
IRTemp t_dep2,
@@ -811,30 +812,30 @@
{
IRTemp z32 = newTemp(Ity_I32);
assign( z32, mkU32(0) );
- setFlags_D1_D2_D3( cc_op, t_dep1, t_dep2, z32, guardT );
+ setFlags_D1_D2_ND( cc_op, t_dep1, t_dep2, z32, guardT );
}
/* Minor variant of the above that sets DEP2 to zero (if it
sets it at all) */
-static void setFlags_D1_D3 ( UInt cc_op, IRTemp t_dep1,
- IRTemp t_dep3,
+static void setFlags_D1_ND ( UInt cc_op, IRTemp t_dep1,
+ IRTemp t_ndep,
IRTemp guardT /* :: Ity_I32, 0 or 1 */ )
{
IRTemp z32 = newTemp(Ity_I32);
assign( z32, mkU32(0) );
- setFlags_D1_D2_D3( cc_op, t_dep1, z32, t_dep3, guardT );
+ setFlags_D1_D2_ND( cc_op, t_dep1, z32, t_ndep, guardT );
}
-/* Minor variant of the above that sets DEP2 and DEP3 to zero (if it
+/* Minor variant of the above that sets DEP2 and NDEP to zero (if it
sets them at all) */
static void setFlags_D1 ( UInt cc_op, IRTemp t_dep1,
IRTemp guardT /* :: Ity_I32, 0 or 1 */ )
{
IRTemp z32 = newTemp(Ity_I32);
assign( z32, mkU32(0) );
- setFlags_D1_D2_D3( cc_op, t_dep1, z32, z32, guardT );
+ setFlags_D1_D2_ND( cc_op, t_dep1, z32, z32, guardT );
}
@@ -1309,7 +1310,7 @@
unop(Iop_32to8,
binop(Iop_Sub32, mkU32(32), mkexpr(amt5T))
)
- )
+ )
)
)
);
@@ -1787,7 +1788,7 @@
case Iop_Or32:
case Iop_Xor32:
// oldV has been read just above
- setFlags_D1_D2_D3( ARMG_CC_OP_LOGIC,
+ setFlags_D1_D2_ND( ARMG_CC_OP_LOGIC,
res, shco, oldV, condT );
break;
default:
@@ -1825,7 +1826,7 @@
putIReg( rD, mkexpr(res), condT, Ijk_Boring );
/* Update the flags thunk if necessary */
if (bitS) {
- setFlags_D1_D2_D3( ARMG_CC_OP_LOGIC,
+ setFlags_D1_D2_ND( ARMG_CC_OP_LOGIC,
res, shco, oldV, condT );
}
DIP("%s%s%s r%u, %s\n",
@@ -1881,7 +1882,7 @@
mkexpr(rNt), mkexpr(shop)) );
oldV = newTemp(Ity_I32);
assign( oldV, mk_armg_calculate_flag_v() );
- setFlags_D1_D2_D3( ARMG_CC_OP_LOGIC,
+ setFlags_D1_D2_ND( ARMG_CC_OP_LOGIC,
res, shco, oldV, condT );
DIP("%s%s r%u, %s\n",
isTEQ ? "teq" : "tst",
@@ -1944,15 +1945,15 @@
vassert(shco != IRTemp_INVALID);
switch (insn_24_21) {
case BITS4(0,1,0,1): /* ADC */
- setFlags_D1_D2_D3( ARMG_CC_OP_ADC,
+ setFlags_D1_D2_ND( ARMG_CC_OP_ADC,
rNt, shop, oldC, condT );
break;
case BITS4(0,1,1,0): /* SBC */
- setFlags_D1_D2_D3( ARMG_CC_OP_SBB,
+ setFlags_D1_D2_ND( ARMG_CC_OP_SBB,
rNt, shop, oldC, condT );
break;
case BITS4(0,1,1,1): /* RSC */
- setFlags_D1_D2_D3( ARMG_CC_OP_SBB,
+ setFlags_D1_D2_ND( ARMG_CC_OP_SBB,
shop, rNt, oldC, condT );
break;
default:
@@ -2703,7 +2704,7 @@
assign( pair, binop(Iop_Or32,
binop(Iop_Shl32, mkexpr(oldC), mkU8(1)),
mkexpr(oldV)) );
- setFlags_D1_D3( ARMG_CC_OP_MUL, res, pair, condT );
+ setFlags_D1_ND( ARMG_CC_OP_MUL, res, pair, condT );
}
DIP("mul%c%s r%u, r%u, r%u\n",
bitS ? 's' : ' ', nCC(insn_cond), rD, rM, rS);
@@ -2755,7 +2756,7 @@
assign( pair, binop(Iop_Or32,
binop(Iop_Shl32, mkexpr(oldC), mkU8(1)),
mkexpr(oldV)) );
- setFlags_D1_D3( ARMG_CC_OP_MUL, res, pair, condT );
+ setFlags_D1_ND( ARMG_CC_OP_MUL, res, pair, condT );
}
DIP("ml%c%c%s r%u, r%u, r%u, r%u\n",
isMLS ? 's' : 'a', bitS ? 's' : ' ', nCC(insn_cond), rD, rM, rS, rN);
@@ -2803,7 +2804,7 @@
assign( pair, binop(Iop_Or32,
binop(Iop_Shl32, mkexpr(oldC), mkU8(1)),
mkexpr(oldV)) );
- setFlags_D1_D2_D3( ARMG_CC_OP_MULL, resLo, resHi, pair, condT );
+ setFlags_D1_D2_ND( ARMG_CC_OP_MULL, resLo, resHi, pair, condT );
}
DIP("%cmull%c%s r%u, r%u, r%u, r%u\n",
isS ? 's' : 'u', bitS ? 's' : ' ',
@@ -2856,7 +2857,7 @@
assign( pair, binop(Iop_Or32,
binop(Iop_Shl32, mkexpr(oldC), mkU8(1)),
mkexpr(oldV)) );
- setFlags_D1_D2_D3( ARMG_CC_OP_MULL, resLo, resHi, pair, condT );
+ setFlags_D1_D2_ND( ARMG_CC_OP_MULL, resLo, resHi, pair, condT );
}
DIP("%cmlal%c%s r%u, r%u, r%u, r%u\n",
isS ? 's' : 'u', bitS ? 's' : ' ', nCC(insn_cond),
Modified: branches/ARM/pub/libvex_guest_arm.h
===================================================================
--- branches/ARM/pub/libvex_guest_arm.h 2009-12-03 09:50:38 UTC (rev 1938)
+++ branches/ARM/pub/libvex_guest_arm.h 2009-12-15 10:23:44 UTC (rev 1939)
@@ -50,10 +50,9 @@
/*--- Vex's representation of the ARM CPU state. ---*/
/*---------------------------------------------------------------*/
-/* R13 traditionally used as the stack pointer ? */
-
typedef
struct {
+ /* 0 */
UInt guest_R0;
UInt guest_R1;
UInt guest_R2;
@@ -73,16 +72,14 @@
/* 4-word thunk used to calculate N(sign) Z(zero) C(carry,
unsigned overflow) and V(signed overflow) flags. */
-
/* 64 */
UInt guest_CC_OP;
UInt guest_CC_DEP1;
UInt guest_CC_DEP2;
- UInt guest_CC_DEP3;
+ UInt guest_CC_NDEP;
/* Various pseudo-regs mandated by Vex or Valgrind. */
/* Emulation warnings */
- /* 80 */
UInt guest_EMWARN;
/* For clflush: record start and length of area to invalidate */
@@ -99,12 +96,13 @@
/* Needed for Darwin (but mandated for all guest architectures):
program counter at the last syscall insn (int 0x80/81/82,
- sysenter, syscall). Used when backing up to restart a
+ sysenter, syscall, svc). Used when backing up to restart a
syscall that has been interrupted by a signal. */
/* 96 */
UInt guest_IP_AT_SYSCALL;
/* VFP state. D0 .. D15 must be 8-aligned. */
+ /* 104 -- I guess there's 4 bytes of padding just prior to this? */
ULong guest_D0;
ULong guest_D1;
ULong guest_D2;
|
|
From: Cerion <ce...@va...> - 2009-12-14 02:25:17
|
Did an svnadmin recover, seems fine again. Cerion Filipe Cabecinhas wrote: > Hi. > > I'm having the same problem since yesterday evening. > > Regards, > > Filipe > > On 12/13/09 18:38, Dodji Seketeli wrote: > >> Hello, >> >> I am wondering if I am alone seeing this: >> >> [dodji@adjoa foo]$ svn co svn://svn.valgrind.org/valgrind valgrind >> svn: Berkeley DB error for filesystem '/home/svn/repos/valgrind/db' while >> opening environment: >> >> svn: DB_RUNRECOVERY: Fatal error, run database recovery >> svn: bdb: PANIC: fatal region error detected; run recovery >> >> >> Dodji >> >> ------------------------------------------------------------------------------ >> Return on Information: >> Google Enterprise Search pays you back >> Get the facts. >> http://p.sf.net/sfu/google-dev2dev >> _______________________________________________ >> Valgrind-developers mailing list >> Val...@li... >> https://lists.sourceforge.net/lists/listinfo/valgrind-developers >> > > ------------------------------------------------------------------------------ > Return on Information: > Google Enterprise Search pays you back > Get the facts. > http://p.sf.net/sfu/google-dev2dev > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > > |
|
From: Filipe C. <fi...@gm...> - 2009-12-13 19:49:38
|
Hi. I'm having the same problem since yesterday evening. Regards, Filipe On 12/13/09 18:38, Dodji Seketeli wrote: > Hello, > > I am wondering if I am alone seeing this: > > [dodji@adjoa foo]$ svn co svn://svn.valgrind.org/valgrind valgrind > svn: Berkeley DB error for filesystem '/home/svn/repos/valgrind/db' while > opening environment: > > svn: DB_RUNRECOVERY: Fatal error, run database recovery > svn: bdb: PANIC: fatal region error detected; run recovery > > > Dodji > > ------------------------------------------------------------------------------ > Return on Information: > Google Enterprise Search pays you back > Get the facts. > http://p.sf.net/sfu/google-dev2dev > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers |
|
From: Dodji S. <do...@re...> - 2009-12-13 18:38:38
|
Hello, I am wondering if I am alone seeing this: [dodji@adjoa foo]$ svn co svn://svn.valgrind.org/valgrind valgrind svn: Berkeley DB error for filesystem '/home/svn/repos/valgrind/db' while opening environment: svn: DB_RUNRECOVERY: Fatal error, run database recovery svn: bdb: PANIC: fatal region error detected; run recovery Dodji |
|
From: João C. <joa...@is...> - 2009-12-12 19:26:46
|
Hi, my dump of VEX code didn't show any libc's code. I figured out I was messing up valgrind's instrumentation. Now it works fine. Thanks, JC |
|
From: Zoltan H. <zhe...@in...> - 2009-12-11 14:00:05
|
Hi, My name is Zoltan Herczeg from Hungary, and I have created a new memory analyzer tool for valgirnd, called freya. Freya has a different purpose compared to massif: organizing the results by custom rules. A description of freya can be found here: http://webkit.sed.hu/node/29 I used it for analyizng WebKit's memory consumption: http://webkit.sed.hu/node/31 I hope you find it interesting. Zoltan PS: I really like valgrind. The code (and API) is well organized, everything can be found in no-time, and everything works in way as you expect it. |
|
From: Alexander P. <gl...@go...> - 2009-12-11 10:31:32
|
Nightly build on mcgrind ( Darwin 9.7.0 i386 ) Started at 2009-12-11 09:06:00 MSK Ended at 2009-12-11 09:25:14 MSK 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 == 433 tests, 22 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/null_socket (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) none/tests/async-sigs (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) -- Alexander Potapenko Software Engineer Google Moscow |
|
From: Bart V. A. <bar...@gm...> - 2009-12-11 08:44:10
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-12-11 02:00:08 EST Ended at 2009-12-11 03:43:44 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <th...@cy...> - 2009-12-11 03:49:35
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-12-11 03:05:05 GMT Ended at 2009-12-11 03:49:18 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 == 531 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-12-11 03:36:15
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-12-11 03:10:05 GMT Ended at 2009-12-11 03:35:57 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 == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (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 == 538 tests, 3 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Dec 11 03:23:09 2009 --- new.short Fri Dec 11 03:35:57 2009 *************** *** 8,12 **** ! == 538 tests, 3 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) - helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 8,11 ---- ! == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Filipe C. <fi...@gm...> - 2009-12-10 22:15:56
|
Hi. Why do you say valgrind doesn't instrument libc? What lead you to think that? Regards, F On 12/10/09 12:12, João Carreira wrote: > Hi, > > I'm creating a tool for valgrind. > Currently, I'm doing some taintedness propagation using code > instrumentation, > I want to instrument code from libc (ex: gets, scanf) , but it seems > that valgrind doesn't instrument code from this library. > What can I do to make my tool instrument libc's code? Or am I > overlooking something? > > Thanks, > João Carreira > > > > ------------------------------------------------------------------------------ > Return on Information: > Google Enterprise Search pays you back > Get the facts. > http://p.sf.net/sfu/google-dev2dev > > > > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers |
|
From: <sv...@va...> - 2009-12-10 19:26:45
|
Author: weidendo
Date: 2009-12-10 19:26:32 +0000 (Thu, 10 Dec 2009)
New Revision: 10966
Log:
Callgrind: fix bug 217849: Switch to running thread in CLG_(post_signal)
If instrumentation is switched off on multithreaded code,
multiple signals in a row handled by different threads could
confuse callgrind.
Callgrind assumed that in post_signal, it has the correct understanding
of the currently running thread. This is not always correct.
Really switch to running thread.
Modified:
trunk/callgrind/threads.c
Modified: trunk/callgrind/threads.c
===================================================================
--- trunk/callgrind/threads.c 2009-12-10 17:58:46 UTC (rev 10965)
+++ trunk/callgrind/threads.c 2009-12-10 19:26:32 UTC (rev 10966)
@@ -203,7 +203,7 @@
tid, sigNum, alt_stack ? "yes":"no");
/* switch to the thread the handler runs in */
- CLG_(run_thread)(tid);
+ CLG_(switch_thread)(tid);
/* save current execution state */
exec_state_save();
@@ -243,7 +243,8 @@
CLG_DEBUG(0, ">> post_signal(TID %d, sig %d)\n",
tid, sigNum);
- CLG_ASSERT(tid == CLG_(current_tid));
+ /* thread switching potentially needed, eg. with instrumentation off */
+ CLG_(switch_thread)(tid);
CLG_ASSERT(sigNum == CLG_(current_state).sig);
/* Unwind call stack of this signal handler.
|
|
From: <sv...@va...> - 2009-12-10 17:59:02
|
Author: bart
Date: 2009-12-10 17:58:46 +0000 (Thu, 10 Dec 2009)
New Revision: 10965
Log:
Made the description of DRD_TRACE_VAR(), ANNOTATE_TRACE_MEMORY() and
VG_USERREQ__DRD_START_TRACE_ADDR more clear.
Modified:
trunk/drd/docs/drd-manual.xml
Modified: trunk/drd/docs/drd-manual.xml
===================================================================
--- trunk/drd/docs/drd-manual.xml 2009-12-03 14:35:15 UTC (rev 10964)
+++ trunk/drd/docs/drd-manual.xml 2009-12-10 17:58:46 UTC (rev 10965)
@@ -923,18 +923,30 @@
</listitem>
<listitem>
<para>
- The macros <literal>DRD_TRACE_VAR(x)</literal>,
- <literal>ANNOTATE_TRACE_MEMORY(&x)</literal>
- and the corresponding client request
- <varname>VG_USERREQ__DRD_START_TRACE_ADDR</varname>. Trace all
- load and store activity on the specified address range. When DRD reports
- a data race on a specified variable, and it's not immediately clear
- which source code statements triggered the conflicting accesses, it can
- be very helpful to trace all activity on the offending memory location.
+ The macro <literal>DRD_TRACE_VAR(x)</literal>. Trace all load and store
+ activity for the address range starting at <literal>&x</literal> and
+ occupying <literal>sizeof(x)</literal> bytes. When DRD reports a data
+ race on a specified variable, and it's not immediately clear which
+ source code statements triggered the conflicting accesses, it can be
+ very helpful to trace all activity on the offending memory location.
</para>
</listitem>
<listitem>
<para>
+ The macro <literal>ANNOTATE_TRACE_MEMORY(&x)</literal>. Trace all
+ load and store activity that touches at least the single byte at the
+ address <literal>&x</literal>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The client request <varname>VG_USERREQ__DRD_START_TRACE_ADDR</varname>,
+ which allows to trace all load and store activity for the specified
+ address range.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
The client
request <varname>VG_USERREQ__DRD_STOP_TRACE_ADDR</varname>. Do no longer
trace load and store activity for the specified address range.
|
|
From: João C. <joa...@is...> - 2009-12-10 12:23:51
|
Hi, I'm creating a tool for valgrind. Currently, I'm doing some taintedness propagation using code instrumentation, I want to instrument code from libc (ex: gets, scanf) , but it seems that valgrind doesn't instrument code from this library. What can I do to make my tool instrument libc's code? Or am I overlooking something? Thanks, João Carreira |
|
From: Konstantin S. <kon...@gm...> - 2009-12-09 23:09:07
|
Thanks a lot, Greg. I think your explanation is enough to fix the problem in Helgrind/DRD/TSan --kcc On Thu, Dec 10, 2009 at 1:36 AM, Greg Parker <gp...@ap...> wrote: > On Dec 9, 2009, at 1:50 PM, Konstantin Serebryany wrote: > > On Wed, Dec 9, 2009 at 11:42 PM, Greg Parker <gp...@ap...> wrote: > >> On Dec 9, 2009, at 9:13 AM, Alexander Potapenko wrote: > >>> > >>> drd: drd_thread.c:584 (vgDrd_thread_set_vg_running_tid): Assertion > >>> vg_tid != VG_INVALID_THREADID' failed. > >>> ==68403== at 0xF009DCBD: ??? > >>> ==68403== by 0xF009DF71: ??? > >> > >> First guess: either Valgrind or those tools aren't correctly handling > the thread-creation mechanisms used by NSOperationQueue. Work queues don't > go through the normal thread entry points. > > > > You mean that NSOperationQueue can create a thread w/o calling > pthread_create()? > > That's right. (There's also pthread_create_suspended_np(), but I don't know > of anyone who uses that.) > > > > Than yes, the tools don't know anything about that. > > Could you point to any piece of documentation and/or source code which > explains how threads are created by NSOperationQueue? > > Valgrind works at the kernel interface. At this level, pthreads mostly > don't exist; the kernel deals in Mach threads, and pthreads are built on top > by Libc. In particular, there is no pthread_create() system call. > > Workqueue threads are another kernel construct used to support > NSOperationQueue and Grand Central Dispatch. Most of the time a workqueue > thread does get a pthread built atop it, just like most Mach threads are > wrapped in a pthread. But the construction process is different, and does > not call Libc's pthread_create(). > > Workqueue threads are created at the kernel's whim. They simply appear in > the process without an explicit user-space request. Each workqueue thread > starts its execution de novo in a function provided by Libc, which builds > the pthread if necessary and executes a work item. > > During process startup, Libc calls the bsdthread_register() syscall, which > among other things tells the kernel the entry point for new workqueue > threads (_pthread_wqthread()). Valgrind traps bsdthread_register() and > substitutes its own function wqthread_hijack_asm(). When the kernel starts a > workqueue thread in a Valgrind process, it starts in wqthread_hijack_asm() > on the real CPU, which in turn bootstraps the thread into Valgrind's > simulator and calls Libc's entry point. > > Valgrind's pthread-tracing system would need to do its work inside > wqthread_hijack(). I think workqueue threads call the ordinary > pthread_exit() on their way out, so you might not need extra handling there. > > I don't know of any documentation for any of this; like the rest of the > kernel-libc interface, it's private and subject to change at any time. > Everything I know I learned from reading xnu and Libc source. > > > -- > Greg Parker gp...@ap... Runtime Wrangler > > > |
|
From: Greg P. <gp...@ap...> - 2009-12-09 22:36:44
|
On Dec 9, 2009, at 1:50 PM, Konstantin Serebryany wrote: > On Wed, Dec 9, 2009 at 11:42 PM, Greg Parker <gp...@ap...> wrote: >> On Dec 9, 2009, at 9:13 AM, Alexander Potapenko wrote: >>> >>> drd: drd_thread.c:584 (vgDrd_thread_set_vg_running_tid): Assertion >>> vg_tid != VG_INVALID_THREADID' failed. >>> ==68403== at 0xF009DCBD: ??? >>> ==68403== by 0xF009DF71: ??? >> >> First guess: either Valgrind or those tools aren't correctly handling the thread-creation mechanisms used by NSOperationQueue. Work queues don't go through the normal thread entry points. > > You mean that NSOperationQueue can create a thread w/o calling pthread_create()? That's right. (There's also pthread_create_suspended_np(), but I don't know of anyone who uses that.) > Than yes, the tools don't know anything about that. > Could you point to any piece of documentation and/or source code which explains how threads are created by NSOperationQueue? Valgrind works at the kernel interface. At this level, pthreads mostly don't exist; the kernel deals in Mach threads, and pthreads are built on top by Libc. In particular, there is no pthread_create() system call. Workqueue threads are another kernel construct used to support NSOperationQueue and Grand Central Dispatch. Most of the time a workqueue thread does get a pthread built atop it, just like most Mach threads are wrapped in a pthread. But the construction process is different, and does not call Libc's pthread_create(). Workqueue threads are created at the kernel's whim. They simply appear in the process without an explicit user-space request. Each workqueue thread starts its execution de novo in a function provided by Libc, which builds the pthread if necessary and executes a work item. During process startup, Libc calls the bsdthread_register() syscall, which among other things tells the kernel the entry point for new workqueue threads (_pthread_wqthread()). Valgrind traps bsdthread_register() and substitutes its own function wqthread_hijack_asm(). When the kernel starts a workqueue thread in a Valgrind process, it starts in wqthread_hijack_asm() on the real CPU, which in turn bootstraps the thread into Valgrind's simulator and calls Libc's entry point. Valgrind's pthread-tracing system would need to do its work inside wqthread_hijack(). I think workqueue threads call the ordinary pthread_exit() on their way out, so you might not need extra handling there. I don't know of any documentation for any of this; like the rest of the kernel-libc interface, it's private and subject to change at any time. Everything I know I learned from reading xnu and Libc source. -- Greg Parker gp...@ap... Runtime Wrangler |
|
From: Konstantin S. <kon...@gm...> - 2009-12-09 21:50:44
|
On Wed, Dec 9, 2009 at 11:42 PM, Greg Parker <gp...@ap...> wrote: > > On Dec 9, 2009, at 9:13 AM, Alexander Potapenko wrote: > > > Hi everyone, > > > > Debugging ThreadSanitizer for Mac OS > > (http://code.google.com/p/data-race-test) I've came up with a small > > piece of code that makes Valgrind-based threading tools act in a weird > > manner. > > > > The attached code exploits NSOperationQueue from the Foundation > > library. > > > > But neither DRD nor Helgrind cannot cope with this binary: > > > > drd: drd_thread.c:584 (vgDrd_thread_set_vg_running_tid): Assertion > > 'vg_tid != VG_INVALID_THREADID' failed. > > ==68403== at 0xF009DCBD: ??? > > ==68403== by 0xF009DF71: ??? > > ... > > > > sched status: > > running_tid=0 > > > > Thread 1: status = VgTs_WaitSys > > ==68403== at 0x7DDC62: ioctl (in /usr/lib/libSystem.B.dylib) > > ==68403== by 0x7EB00A: __smakebuf (in /usr/lib/libSystem.B.dylib) > > ==68403== by 0x7EAF0C: __swsetup (in /usr/lib/libSystem.B.dylib) > > ==68403== by 0x7BAF8D: __sfvwrite (in /usr/lib/libSystem.B.dylib) > > ==68403== by 0x82618F: puts (in /usr/lib/libSystem.B.dylib) > > ==68403== by 0x1D0E: Printer::Print() (in > > /Users/glider/src/worker_vex_test/nsop) > > ==68403== by 0x1BAD: main (in /Users/glider/src/worker_vex_test/nsop) > > > > Thread 2: status = VgTs_Init > > ==68403== at 0x81E2A4: start_wqthread (in /usr/lib/libSystem.B.dylib) > > > > > > Looks like Valgrind tries to execute code in a previously unknown > > thread without calling the pre_thread_ll_create method for this > > thread. > > > > Does anyone know whether this is a real bug in VEX or just a > > NSOperationQueue misuse? > > First guess: either Valgrind or those tools aren't correctly handling the > thread-creation mechanisms used by NSOperationQueue. Work queues don't go > through the normal thread entry points. > You mean that NSOperationQueue can create a thread w/o calling pthread_create()? Than yes, the tools don't know anything about that. Could you point to any piece of documentation and/or source code which explains how threads are created by NSOperationQueue? Thanks, --kcc > > > -- > Greg Parker gp...@ap... Runtime Wrangler > > > > > ------------------------------------------------------------------------------ > Return on Information: > Google Enterprise Search pays you back > Get the facts. > http://p.sf.net/sfu/google-dev2dev > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |