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
(9) |
|
2
(12) |
3
(19) |
4
(18) |
5
(22) |
6
(25) |
7
(18) |
8
(24) |
|
9
(16) |
10
(15) |
11
(22) |
12
(7) |
13
(19) |
14
(5) |
15
(8) |
|
16
(7) |
17
(8) |
18
(9) |
19
(7) |
20
(13) |
21
(16) |
22
(7) |
|
23
(10) |
24
(8) |
25
(4) |
26
(4) |
27
(9) |
28
(4) |
29
(5) |
|
30
(8) |
31
(4) |
|
|
|
|
|
|
From: Bart V. A. <bar...@gm...> - 2007-12-23 17:29:56
|
Since a few days exp-drd now crashes on every program that I try to
analyze. This crash did not yet occur with Valgrind version 3.3.0 but
does occur with revision 7307. The relevant call stack is shown below.
Is this due to exp-drd or due to the post-3.3.0 changes ?
$ ./debug-in-place --tool=exp-drd exp-drd/tests/fp_race
(gdb) run --tool=exp-drd exp-drd/tests/fp_race
Starting program:
/home/bart/software/valgrind-svn/.in_place/amd64-linux/exp-drd
--tool=exp-drd exp-drd/tests/fp_race
==17491== exp-drd, a data race detector.
==17491== NOTE: This is an Experimental-Class Valgrind Tool.
==17491== Copyright (C) 2006-2007, and GNU GPL'd, by Bart Van Assche.
==17491== Using LibVEX rev 1803, a library for dynamic binary translation.
==17491== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==17491== Using valgrind-3.4.0.SVN, a dynamic binary instrumentation framework.
==17491== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==17491== For more details, rerun with: -v
==17491==
Program received signal SIGSEGV, Segmentation fault.
vgPlain_get_StackTrace2 (tid_if_known=<value optimized out>, ips=0x389113f0,
n_ips=12, ip=0, sp=0, fp=0, lr=0, fp_min=0, fp_max_orig=0)
at m_stacktrace.c:230
230 ip = (((UWord*)fp)[1]);
(gdb) where
#0 vgPlain_get_StackTrace2 (tid_if_known=<value optimized out>,
ips=0x389113f0, n_ips=12, ip=0, sp=0, fp=0, lr=0, fp_min=0, fp_max_orig=0)
at m_stacktrace.c:230
#1 0x000000003801aada in vgPlain_get_StackTrace (tid=1, ips=0x389113f0,
n_ips=12, first_ip_delta=<value optimized out>) at m_stacktrace.c:437
#2 0x00000000380099d6 in record_ExeContext_wrk (tid=1, first_ip_delta=0,
first_ip_only=0 '\0') at m_execontext.c:309
#3 0x0000000038004ef9 in sg_init (sg=0x402001380, creator=0, created=1)
at drd_segment.c:68
#4 0x0000000038004fd7 in sg_new (creator=0, created=1) at drd_segment.c:110
#5 0x0000000038006ce7 in thread_pre_create (creator=0, vg_created=1)
at drd_thread.c:222
#6 0x0000000038002a0c in drd_pre_thread_create (creator=0, created=1)
at drd_main.c:323
#7 0x00000000380106cd in valgrind_main (argc=<value optimized out>,
argv=<value optimized out>, envp=0x7fffa1083d68) at m_main.c:1756
#8 0x00000000380122de in _start_in_C_linux (pArgc=0x7fffa1083d40)
at m_main.c:2369
#9 0x000000003800f1a1 in _start ()
--
Regards,
Bart Van Assche.
|
|
From: Eric P. <eri...@or...> - 2007-12-23 13:36:27
|
Tom Hughes a écrit : > In message <d82...@ma...> > Tom Hughes <to...@co...> wrote: > > >> I have recently been working on trying to get valgrind and wine to >> work together and have run into a rather nasty problem. >> > > Unprelinking libwine has temporarily got me past the other problem, and > sorting out the trapno issue in signal handlers that the patch on the > wine wiki addresses then gets me to this failure: > > --13050-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting > --13050-- si_code=2; Faulting address: 0xBEEF0007; sp: 0x469CC4C > > valgrind: the 'impossible' happened: > Killed by fatal signal > ==13050== at 0x380293B3: vgPlain_get_StackTrace2 (m_stacktrace.c:153) > ==13050== by 0x380294DB: vgPlain_get_StackTrace (m_stacktrace.c:437) > ==13050== by 0x380164E2: vgPlain_record_ExeContext (m_execontext.c:300) > ==13050== by 0x380025AE: create_MC_Chunk (mc_malloc_wrappers.c:141) > ==13050== by 0x38002C17: vgMemCheck_new_block (mc_malloc_wrappers.c:211) > ==13050== by 0x3800305C: vgMemCheck_malloc (mc_malloc_wrappers.c:226) > ==13050== by 0x38034E47: do_client_request (scheduler.c:1277) > ==13050== by 0x38036387: vgPlain_scheduler (scheduler.c:987) > ==13050== by 0x38049C28: run_a_thread_NORETURN (syswrap-linux.c:89) > > Now the fault address is obviously a little "suspicious" to say the > least... Should we not be a bit more careful when doing frame pointer > based unwinds on x86 though and just give up if we get a segv? > > Tom > > that's why there's another patch on the Wine wiki to ask valgrind to explicit check the stack frames against the stacks that a given program dares to give (which valgrind doesn't do at the moment) this is likely the same kind of behavior that J Reiser tries to fix in his fixes for UML support under valgrind IIRC, in WIne's case, this is needed for two reasons : 1/ the stack unwind (in generic cases) cannot be terminated properly (likely Wine misses a watchdog at stack's top) 2/ but also nasty 16/32 bits stack switches for some emulations even if 1/ could be worked around in wine, 2/ is anyway a showstopper I'd really like to see better stack unwinding protection in valgrind A+ -- Eric Pouech "The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams) |
|
From: Tom H. <th...@cy...> - 2007-12-23 04:01:04
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-12-23 03:15: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 == 323 tests, 66 stderr failures, 1 stdout failure, 28 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/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (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/supp_unknown (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/basic2 (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/blockfault (stderr) 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) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-23 03:37:39
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-12-23 03:05:06 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 == 357 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) 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-12-23 03:27:49
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-12-23 03:10:04 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 == 357 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-23 03:15:48
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-12-23 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 == 359 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) 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/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/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: <sv...@va...> - 2007-12-22 14:14:09
|
Author: sewardj
Date: 2007-12-22 14:14:04 +0000 (Sat, 22 Dec 2007)
New Revision: 7307
Log:
Comment-only change.
Modified:
trunk/coregrind/m_main.c
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2007-12-22 14:12:42 UTC (rev 7306)
+++ trunk/coregrind/m_main.c 2007-12-22 14:14:04 UTC (rev 7307)
@@ -1470,14 +1470,14 @@
# error "Uknown platform"
# endif
- /* NOTE: this call reads VG_(clo_max_stackframe). */
+ /* NOTE: this call reads VG_(clo_main_stacksize). */
the_iifii = VG_(ii_create_image)( the_iicii );
# if defined(VGO_aix5)
/* Tell aspacem where the initial client stack is, so that it
can later produce a faked-up NSegment in response to
VG_(am_find_nsegment) for that address range, if asked. */
- /* NOTE: this call reads VG_(clo_max_stackframe). */
+ /* NOTE: this call reads VG_(clo_main_stacksize). */
VG_(am_aix5_set_initial_client_sp)( the_iifii.initial_client_SP );
/* Now have a look at said fake segment, so we can find out
the size of it. */
|
|
From: <sv...@va...> - 2007-12-22 14:12:56
|
Author: sewardj
Date: 2007-12-22 14:12:42 +0000 (Sat, 22 Dec 2007)
New Revision: 7306
Log:
AIX5 counterpart to r7302: Improve handling of programs which require
very large main thread stacks.
Modified:
trunk/auxprogs/aix5_VKI_info.c
trunk/coregrind/m_aspacemgr/aspacemgr-aix5.c
trunk/coregrind/m_main.c
trunk/include/vki/vki-ppc32-aix5.h
trunk/include/vki/vki-ppc64-aix5.h
Modified: trunk/auxprogs/aix5_VKI_info.c
===================================================================
--- trunk/auxprogs/aix5_VKI_info.c 2007-12-21 10:24:24 UTC (rev 7305)
+++ trunk/auxprogs/aix5_VKI_info.c 2007-12-22 14:12:42 UTC (rev 7306)
@@ -268,6 +268,7 @@
printf("#define VKI_SEGV_MAPERR %d\n", SEGV_MAPERR);
printf("\n");
printf("#define VKI_TRAP_TRACE %d\n", TRAP_TRACE);
+ printf("#define VKI_TRAP_BRKPT %d\n", TRAP_BRKPT);
printf("#define VKI_BUS_OBJERR %d\n", BUS_OBJERR);
printf("#define VKI_BUS_ADRERR %d\n", BUS_ADRERR);
printf("#define VKI_BUS_ADRALN %d\n", BUS_ADRALN);
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-aix5.c
===================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-aix5.c 2007-12-21 10:24:24 UTC (rev 7305)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-aix5.c 2007-12-22 14:12:42 UTC (rev 7306)
@@ -201,8 +201,10 @@
/* The assumed size of the main thread's stack, so that we can add a
segment for it at startup. */
-#define N_FAKE_STACK_PAGES 4096 /* 16M fake stack */
+#define N_FAKE_STACK_PAGES_MIN 4096 /* 16M fake stack */ /* default size */
+#define N_FAKE_STACK_PAGES_MAX 32768 /* 128M fake stack */ /* max size? */
+
/* Hacks which are probably for AIX 'millicode'. Note: ensure
these stay page aligned. */
@@ -1162,6 +1164,8 @@
{
static Bool done = False;
AixSegment seg;
+ Word n_fake_stack_pages;
+ Word m1 = 1048576;
aspacem_assert(!done);
done = True;
@@ -1180,7 +1184,6 @@
0xFFF'FFFF'FFFF'E920, and the accessible area extends to
0xFFF'FFFF'FFFF'FFFF. So in both cases, (64k roundup of sp) - 1
gives the end of the accessible area. */
-
VG_(debugLog)(1,"aspacem", "aix5_set_initial_client_sp( %p )\n",
(void*)sp);
@@ -1197,8 +1200,30 @@
seg.end = AM_64K_ROUNDUP(sp) - 1;
}
- seg.start = seg.end+1 - N_FAKE_STACK_PAGES * VKI_PAGE_SIZE;
+ n_fake_stack_pages = N_FAKE_STACK_PAGES_MIN;
+ if (VG_(clo_main_stacksize) > 0
+ && ((m1+VG_(clo_main_stacksize)) / VKI_PAGE_SIZE) > n_fake_stack_pages) {
+ n_fake_stack_pages = (m1+VG_(clo_main_stacksize)) / VKI_PAGE_SIZE;
+ }
+ if (n_fake_stack_pages > N_FAKE_STACK_PAGES_MAX) {
+ /* Allocation of the stack failed. We have to stop. */
+ VG_(debugLog)(
+ 0, "aspacem",
+ "valgrind: "
+ "I failed to allocate space for the application's stack.\n");
+ VG_(debugLog)(
+ 0, "aspacem",
+ "valgrind: "
+ "This may be the result of a very large --max-stackframe=\n");
+ VG_(debugLog)(
+ 0, "aspacem",
+ "valgrind: "
+ "setting. Cannot continue. Sorry.\n\n");
+ ML_(am_exit)(0);
+ }
+ seg.start = seg.end+1 - n_fake_stack_pages * VKI_PAGE_SIZE;
+
VG_(debugLog)(1,"aspacem", "aix5_set_initial_client_sp: stack seg:\n");
show_AixSegment(1,0, &seg);
add_asegment( &asegs_pri, &seg );
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2007-12-21 10:24:24 UTC (rev 7305)
+++ trunk/coregrind/m_main.c 2007-12-22 14:12:42 UTC (rev 7306)
@@ -1470,12 +1470,14 @@
# error "Uknown platform"
# endif
+ /* NOTE: this call reads VG_(clo_max_stackframe). */
the_iifii = VG_(ii_create_image)( the_iicii );
# if defined(VGO_aix5)
/* Tell aspacem where the initial client stack is, so that it
can later produce a faked-up NSegment in response to
VG_(am_find_nsegment) for that address range, if asked. */
+ /* NOTE: this call reads VG_(clo_max_stackframe). */
VG_(am_aix5_set_initial_client_sp)( the_iifii.initial_client_SP );
/* Now have a look at said fake segment, so we can find out
the size of it. */
@@ -1484,7 +1486,7 @@
= VG_(am_find_nsegment)( the_iifii.initial_client_SP );
vg_assert(seg);
sz = seg->end - seg->start + 1;
- vg_assert(sz >= 0 && sz <= 64*1024*1024); /* stay sane */
+ vg_assert(sz >= 0 && sz <= (256+1)*1024*1024); /* stay sane */
the_iifii.clstack_max_size = sz;
}
# endif
Modified: trunk/include/vki/vki-ppc32-aix5.h
===================================================================
--- trunk/include/vki/vki-ppc32-aix5.h 2007-12-21 10:24:24 UTC (rev 7305)
+++ trunk/include/vki/vki-ppc32-aix5.h 2007-12-22 14:12:42 UTC (rev 7306)
@@ -290,6 +290,7 @@
#define VKI_SEGV_MAPERR 50
#define VKI_TRAP_TRACE 61
+#define VKI_TRAP_BRKPT 60
#define VKI_BUS_OBJERR 3
#define VKI_BUS_ADRERR 2
#define VKI_BUS_ADRALN 1
Modified: trunk/include/vki/vki-ppc64-aix5.h
===================================================================
--- trunk/include/vki/vki-ppc64-aix5.h 2007-12-21 10:24:24 UTC (rev 7305)
+++ trunk/include/vki/vki-ppc64-aix5.h 2007-12-22 14:12:42 UTC (rev 7306)
@@ -292,6 +292,7 @@
#define VKI_SEGV_MAPERR 50
#define VKI_TRAP_TRACE 61
+#define VKI_TRAP_BRKPT 60
#define VKI_BUS_OBJERR 3
#define VKI_BUS_ADRERR 2
#define VKI_BUS_ADRALN 1
|
|
From: Tom H. <th...@cy...> - 2007-12-22 04:00:55
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-12-22 03:15: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 == 323 tests, 66 stderr failures, 1 stdout failure, 28 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/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (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/supp_unknown (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/basic2 (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/blockfault (stderr) 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) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-22 03:36:56
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-12-22 03:05:10 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 == 357 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) 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-12-22 03:27:32
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-12-22 03:10:04 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 == 357 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (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 == 357 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Dec 22 03:19:22 2007 --- new.short Sat Dec 22 03:27:36 2007 *************** *** 8,10 **** ! == 357 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 357 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 16,18 **** none/tests/mremap2 (stdout) - none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2007-12-22 03:15:22
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-12-22 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 == 359 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) 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/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/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: <js...@ac...> - 2007-12-22 01:23:41
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-12-22 02:00:01 CET 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 == 290 tests, 33 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/describe-block (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) none/tests/blockfault (stderr) 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) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Bart V. A. <bar...@gm...> - 2007-12-21 15:53:18
|
On Dec 21, 2007 4:47 PM, Tom Hughes <to...@co...> wrote: > In message <e2e...@ma...> > Bart Van Assche <bar...@gm...> wrote: > > > What happens is the following: > > * Core changes VG_(running_tid). > > * Core notifies tool about client memory accesses. > > * Core calls VG_TRACK(start_client_code)(). > > > > This is why it is not sufficient to cache VG_(running_tid) upon > > VG_TRACK(start_client_code)() notifications. > > Ah right. I guess the question there is "which thread are those > accesses made on behalf off?". The client accesses are made on behalf of the thread with thread ID VG_(running_tid). Regards, Bart Van Assche. |
|
From: Tom H. <to...@co...> - 2007-12-21 15:47:16
|
In message <e2e...@ma...>
Bart Van Assche <bar...@gm...> wrote:
> On Dec 21, 2007 10:04 AM, Tom Hughes <to...@co...> wrote:
>>
>> Surely if it was changed before VG_TRACK(start_client_code)() then it
>> would have been fine for it to cache it?
>>
>> Did you mean that it was changed after that tracking call but before
>> the code in the handler was executed?
>
> What happens is the following:
> * Core changes VG_(running_tid).
> * Core notifies tool about client memory accesses.
> * Core calls VG_TRACK(start_client_code)().
>
> This is why it is not sufficient to cache VG_(running_tid) upon
> VG_TRACK(start_client_code)() notifications.
Ah right. I guess the question there is "which thread are those
accesses made on behalf off?".
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Bart V. A. <bar...@gm...> - 2007-12-21 15:35:46
|
On Dec 21, 2007 10:04 AM, Tom Hughes <to...@co...> wrote: > > Surely if it was changed before VG_TRACK(start_client_code)() then it > would have been fine for it to cache it? > > Did you mean that it was changed after that tracking call but before > the code in the handler was executed? What happens is the following: * Core changes VG_(running_tid). * Core notifies tool about client memory accesses. * Core calls VG_TRACK(start_client_code)(). This is why it is not sufficient to cache VG_(running_tid) upon VG_TRACK(start_client_code)() notifications. Regards, Bart Van Assche. |
|
From: <sv...@va...> - 2007-12-21 10:24:24
|
Author: tom
Date: 2007-12-21 10:24:24 +0000 (Fri, 21 Dec 2007)
New Revision: 7305
Log:
Propagate the ucontext information with a received signal to the
signal frame constructors and use it (on x86 and amd64) to fill in
the trap number in the signal context information.
Needed for wine which likes to look at the trap number...
Modified:
trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c
trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c
trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c
trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
trunk/coregrind/m_sigframe/sigframe-x86-linux.c
trunk/coregrind/m_signals.c
trunk/coregrind/pub_core_sigframe.h
Modified: trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -320,7 +320,7 @@
bits of sigcontext at the moment.
*/
static
-void synth_ucontext(ThreadId tid, const vki_siginfo_t *si,
+void synth_ucontext(ThreadId tid, const vki_siginfo_t *si, Int trapno,
const vki_sigset_t *set,
struct vki_ucontext *uc, struct _vki_fpstate *fpstate)
{
@@ -361,7 +361,7 @@
// FIXME: SC2(gs,GS);
// FIXME: SC2(fs,FS);
/* XXX err */
- /* XXX trapno */
+ sc->trapno = trapno;
# undef SC2
sc->cr2 = (UWord)si->_sifields._sigfault._addr;
@@ -435,6 +435,7 @@
static Addr build_rt_sigframe(ThreadState *tst,
Addr rsp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler, UInt flags,
const vki_sigset_t *mask,
void *restorer)
@@ -442,6 +443,7 @@
struct rt_sigframe *frame;
Addr rsp = rsp_top_of_frame;
Int sigNo = siginfo->si_signo;
+ Int trapno;
rsp -= sizeof(*frame);
rsp = VG_ROUNDDN(rsp, 16);
@@ -459,6 +461,11 @@
else
frame->retaddr = (Addr)&VG_(amd64_linux_SUBST_FOR_rt_sigreturn);
+ if (siguc)
+ trapno = siguc->uc_mcontext.trapno;
+ else
+ trapno = 0;
+
VG_(memcpy)(&frame->sigInfo, siginfo, sizeof(vki_siginfo_t));
/* SIGILL defines addr to be the faulting address */
@@ -466,7 +473,7 @@
frame->sigInfo._sifields._sigfault._addr
= (void*)tst->arch.vex.guest_RIP;
- synth_ucontext(tst->tid, siginfo, mask, &frame->uContext, &frame->fpstate);
+ synth_ucontext(tst->tid, siginfo, trapno, mask, &frame->uContext, &frame->fpstate);
VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid,
rsp, offsetof(struct rt_sigframe, vg) );
@@ -480,6 +487,7 @@
void VG_(sigframe_create)( ThreadId tid,
Addr rsp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
@@ -489,7 +497,7 @@
struct rt_sigframe *frame;
ThreadState* tst = VG_(get_ThreadState)(tid);
- rsp = build_rt_sigframe(tst, rsp_top_of_frame, siginfo,
+ rsp = build_rt_sigframe(tst, rsp_top_of_frame, siginfo, siguc,
handler, flags, mask, restorer);
frame = (struct rt_sigframe *)rsp;
Modified: trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -103,6 +103,7 @@
void VG_(sigframe_create) ( ThreadId tid,
Addr sp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
Modified: trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -665,6 +665,7 @@
void VG_(sigframe_create)( ThreadId tid,
Addr sp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
Modified: trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -103,6 +103,7 @@
void VG_(sigframe_create) ( ThreadId tid,
Addr sp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
Modified: trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -175,6 +175,7 @@
void VG_(sigframe_create)( ThreadId tid,
Addr sp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
Modified: trunk/coregrind/m_sigframe/sigframe-x86-linux.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-x86-linux.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_sigframe/sigframe-x86-linux.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -344,7 +344,7 @@
bits of sigcontext at the moment.
*/
static
-void synth_ucontext(ThreadId tid, const vki_siginfo_t *si,
+void synth_ucontext(ThreadId tid, const vki_siginfo_t *si, Int trapno,
const vki_sigset_t *set,
struct vki_ucontext *uc, struct _vki_fpstate *fpstate)
{
@@ -381,7 +381,7 @@
sc->eflags = LibVEX_GuestX86_get_eflags(&tst->arch.vex);
SC2(ss,SS);
/* XXX esp_at_signal */
- /* XXX trapno */
+ sc->trapno = trapno;
/* XXX err */
# undef SC2
@@ -456,6 +456,7 @@
static Addr build_sigframe(ThreadState *tst,
Addr esp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler, UInt flags,
const vki_sigset_t *mask,
void *restorer)
@@ -463,6 +464,7 @@
struct sigframe *frame;
Addr esp = esp_top_of_frame;
Int sigNo = siginfo->si_signo;
+ Int trapno;
struct vki_ucontext uc;
vg_assert((flags & VKI_SA_SIGINFO) == 0);
@@ -485,8 +487,13 @@
else
frame->retaddr = (Addr)&VG_(x86_linux_SUBST_FOR_sigreturn);
- synth_ucontext(tst->tid, siginfo, mask, &uc, &frame->fpstate);
+ if (siguc)
+ trapno = siguc->uc_mcontext.trapno;
+ else
+ trapno = 0;
+ synth_ucontext(tst->tid, siginfo, trapno, mask, &uc, &frame->fpstate);
+
VG_(memcpy)(&frame->sigContext, &uc.uc_mcontext,
sizeof(struct vki_sigcontext));
frame->sigContext.oldmask = mask->sig[0];
@@ -503,6 +510,7 @@
static Addr build_rt_sigframe(ThreadState *tst,
Addr esp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler, UInt flags,
const vki_sigset_t *mask,
void *restorer)
@@ -510,6 +518,7 @@
struct rt_sigframe *frame;
Addr esp = esp_top_of_frame;
Int sigNo = siginfo->si_signo;
+ Int trapno;
vg_assert((flags & VKI_SA_SIGINFO) != 0);
@@ -531,6 +540,11 @@
else
frame->retaddr = (Addr)&VG_(x86_linux_SUBST_FOR_rt_sigreturn);
+ if (siguc)
+ trapno = siguc->uc_mcontext.trapno;
+ else
+ trapno = 0;
+
frame->psigInfo = (Addr)&frame->sigInfo;
frame->puContext = (Addr)&frame->uContext;
VG_(memcpy)(&frame->sigInfo, siginfo, sizeof(vki_siginfo_t));
@@ -540,7 +554,7 @@
frame->sigInfo._sifields._sigfault._addr
= (void*)tst->arch.vex.guest_EIP;
- synth_ucontext(tst->tid, siginfo, mask, &frame->uContext, &frame->fpstate);
+ synth_ucontext(tst->tid, siginfo, trapno, mask, &frame->uContext, &frame->fpstate);
VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid,
esp, offsetof(struct rt_sigframe, vg) );
@@ -555,6 +569,7 @@
void VG_(sigframe_create)( ThreadId tid,
Addr esp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *siguc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
@@ -564,11 +579,11 @@
ThreadState* tst = VG_(get_ThreadState)(tid);
if (flags & VKI_SA_SIGINFO)
- esp = build_rt_sigframe(tst, esp_top_of_frame, siginfo,
+ esp = build_rt_sigframe(tst, esp_top_of_frame, siginfo, siguc,
handler, flags, mask, restorer);
else
- esp = build_sigframe(tst, esp_top_of_frame,
- siginfo, handler, flags, mask, restorer);
+ esp = build_sigframe(tst, esp_top_of_frame, siginfo, siguc,
+ handler, flags, mask, restorer);
/* Set the thread so it will next run the handler. */
/* tst->m_esp = esp; also notify the tool we've updated ESP */
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/m_signals.c 2007-12-21 10:24:24 UTC (rev 7305)
@@ -1002,7 +1002,7 @@
/* Set up a stack frame (VgSigContext) for the client's signal
handler. */
static
-void push_signal_frame ( ThreadId tid, const vki_siginfo_t *siginfo )
+void push_signal_frame ( ThreadId tid, const vki_siginfo_t *siginfo, const struct vki_ucontext *uc )
{
Addr esp_top_of_frame;
ThreadState* tst;
@@ -1051,7 +1051,7 @@
/* This may fail if the client stack is busted; if that happens,
the whole process will exit rather than simply calling the
signal handler. */
- VG_(sigframe_create) (tid, esp_top_of_frame, siginfo,
+ VG_(sigframe_create) (tid, esp_top_of_frame, siginfo, uc,
scss.scss_per_sig[sigNo].scss_handler,
scss.scss_per_sig[sigNo].scss_flags,
&tst->sig_mask,
@@ -1346,7 +1346,7 @@
This updates the thread state, but it does not set it to be
Runnable.
*/
-static void deliver_signal ( ThreadId tid, const vki_siginfo_t *info )
+static void deliver_signal ( ThreadId tid, const vki_siginfo_t *info, const struct vki_ucontext *uc )
{
Int sigNo = info->si_signo;
SCSS_Per_Signal *handler = &scss.scss_per_sig[sigNo];
@@ -1393,7 +1393,7 @@
*/
vg_assert(VG_(is_valid_tid)(tid));
- push_signal_frame ( tid, info );
+ push_signal_frame ( tid, info, uc );
if (handler->scss_flags & VKI_SA_ONESHOT) {
/* Do the ONESHOT thing. */
@@ -1448,7 +1448,7 @@
if (VG_(sigismember)(&VG_(threads)[tid].sig_mask, VKI_SIGSEGV))
VG_(set_default_handler)(VKI_SIGSEGV);
- deliver_signal(tid, &info);
+ deliver_signal(tid, &info, NULL);
}
// Synthesize a fault where the address is OK, but the page
@@ -1482,21 +1482,26 @@
info.VKI_SIGINFO_si_addr = (void*)addr;
resume_scheduler(tid);
- deliver_signal(tid, &info);
+ deliver_signal(tid, &info, NULL);
}
// Synthesise a SIGTRAP.
void VG_(synth_sigtrap)(ThreadId tid)
{
vki_siginfo_t info;
+ struct vki_ucontext uc;
vg_assert(VG_(threads)[tid].status == VgTs_Runnable);
info.si_signo = VKI_SIGTRAP;
- info.si_code = VKI_TRAP_TRACE; /* jrs: no idea what this should be */
+ info.si_code = VKI_TRAP_BRKPT; /* tjh: only ever called for a brkpt ins */
+#if defined(VGA_x86) || defined(VGA_amd64)
+ uc.uc_mcontext.trapno = 3; /* tjh: this is the x86 trap number
+ for a breakpoint trap... */
+#endif
resume_scheduler(tid);
- deliver_signal(tid, &info);
+ deliver_signal(tid, &info, &uc);
}
/* Make a signal pending for a thread, for later delivery.
@@ -1627,7 +1632,7 @@
/* Set up the thread's state to deliver a signal */
if (!is_sig_ign(info->si_signo))
- deliver_signal(tid, info);
+ deliver_signal(tid, info, uc);
/* longjmp back to the thread's main loop to start executing the
handler. */
@@ -1784,7 +1789,7 @@
/* It's a fatal signal, so we force the default handler. */
VG_(set_default_handler)(sigNo);
- deliver_signal(tid, info);
+ deliver_signal(tid, info, uc);
resume_scheduler(tid);
VG_(exit)(99); /* If we can't resume, then just exit */
}
@@ -1893,7 +1898,7 @@
if (VG_(in_generated_code)) {
/* Can't continue; must longjmp back to the scheduler and thus
enter the sighandler immediately. */
- deliver_signal(tid, info);
+ deliver_signal(tid, info, uc);
resume_scheduler(tid);
}
@@ -2041,7 +2046,7 @@
VG_(message)(Vg_DebugMsg, "Polling found signal %d for tid %d",
sip->si_signo, tid);
if (!is_sig_ign(sip->si_signo))
- deliver_signal(tid, sip);
+ deliver_signal(tid, sip, NULL);
else if (VG_(clo_trace_signals))
VG_(message)(Vg_DebugMsg, " signal %d ignored", sip->si_signo);
Modified: trunk/coregrind/pub_core_sigframe.h
===================================================================
--- trunk/coregrind/pub_core_sigframe.h 2007-12-21 01:24:59 UTC (rev 7304)
+++ trunk/coregrind/pub_core_sigframe.h 2007-12-21 10:24:24 UTC (rev 7305)
@@ -47,6 +47,7 @@
void VG_(sigframe_create) ( ThreadId tid,
Addr sp_top_of_frame,
const vki_siginfo_t *siginfo,
+ const struct vki_ucontext *uc,
void *handler,
UInt flags,
const vki_sigset_t *mask,
|
|
From: Tom H. <to...@co...> - 2007-12-21 10:12:32
|
In message <d82...@ma...>
Tom Hughes <to...@co...> wrote:
> I have recently been working on trying to get valgrind and wine to
> work together and have run into a rather nasty problem.
Unprelinking libwine has temporarily got me past the other problem, and
sorting out the trapno issue in signal handlers that the patch on the
wine wiki addresses then gets me to this failure:
--13050-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
--13050-- si_code=2; Faulting address: 0xBEEF0007; sp: 0x469CC4C
valgrind: the 'impossible' happened:
Killed by fatal signal
==13050== at 0x380293B3: vgPlain_get_StackTrace2 (m_stacktrace.c:153)
==13050== by 0x380294DB: vgPlain_get_StackTrace (m_stacktrace.c:437)
==13050== by 0x380164E2: vgPlain_record_ExeContext (m_execontext.c:300)
==13050== by 0x380025AE: create_MC_Chunk (mc_malloc_wrappers.c:141)
==13050== by 0x38002C17: vgMemCheck_new_block (mc_malloc_wrappers.c:211)
==13050== by 0x3800305C: vgMemCheck_malloc (mc_malloc_wrappers.c:226)
==13050== by 0x38034E47: do_client_request (scheduler.c:1277)
==13050== by 0x38036387: vgPlain_scheduler (scheduler.c:987)
==13050== by 0x38049C28: run_a_thread_NORETURN (syswrap-linux.c:89)
Now the fault address is obviously a little "suspicious" to say the
least... Should we not be a bit more careful when doing frame pointer
based unwinds on x86 though and just give up if we get a segv?
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Tom H. <to...@co...> - 2007-12-21 09:05:01
|
In message <e2e...@ma...>
Bart Van Assche <bar...@gm...> wrote:
> On Dec 20, 2007 10:31 PM, Tom Hughes <to...@co...> wrote:
>
>> Are you sure that's everything? My memory was that the problems
>> were with signal handlers and things, but maybe those have all
>> been fixed now?
>
> What I had noticed for signal handlers is that VG_(running_tid) was correct,
> but that VG_(running_tid) was changed before VG_TRACK(start_client_code)()
> was called. Instead of caching VG_(running_tid) upon
> VG_TRACK(start_client_code)(), exp-drd now queries VG_(running_tid) upon
> every memory access. This solved the issues I encountered with memory
> accesses from within signal handlers.
Surely if it was changed before VG_TRACK(start_client_code)() then it
would have been fine for it to cache it?
Did you mean that it was changed after that tracking call but before
the code in the handler was executed?
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Tom H. <to...@co...> - 2007-12-21 09:03:55
|
In message <200...@ac...>
Julian Seward <js...@ac...> wrote:
>> So the wine folks do much the same as we do - wine-preloader is run,
>> which is a static executable linked to load at a high address. That
>> then mmaps everything from 0 up to 1.5Gb before acting as an ELF
>> loader and loading the real wine executable and it's shared libraries
>> into memory and transferring control.
>
> What happens if you change V's load address to say 0x90000000
> (by messing with valt_load_address_normal in configure.in) ?
I did actually try that but it didn't help much as valgrind stuck
a block of SkAnonV memory below 0x60000000 which still stopped wine's
preloader reserving that memory :-(
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Bart V. A. <bar...@gm...> - 2007-12-21 07:07:33
|
On Dec 20, 2007 10:31 PM, Tom Hughes <to...@co...> wrote: > > Looks good to me. > > Are you sure that's everything? My memory was that the problems > were with signal handlers and things, but maybe those have all > been fixed now? > > Tom > What I had noticed for signal handlers is that VG_(running_tid) was correct, but that VG_(running_tid) was changed before VG_TRACK(start_client_code)() was called. Instead of caching VG_(running_tid) upon VG_TRACK(start_client_code)(), exp-drd now queries VG_(running_tid) upon every memory access. This solved the issues I encountered with memory accesses from within signal handlers. Regards, Bart. |
|
From: Tom H. <th...@cy...> - 2007-12-21 04:01:38
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-12-21 03:15: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 == 323 tests, 66 stderr failures, 1 stdout failure, 28 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/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (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/supp_unknown (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/basic2 (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/blockfault (stderr) 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) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-21 03:37:59
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-12-21 03:05:10 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 == 357 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) 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-12-21 03:27:42
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-12-21 03:10:05 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 == 357 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (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 == 357 tests, 8 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Dec 21 03:18:58 2007 --- new.short Fri Dec 21 03:27:45 2007 *************** *** 8,10 **** ! == 357 tests, 8 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 357 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 16,18 **** none/tests/mremap2 (stdout) - none/tests/pth_cvsimple (stdout) none/tests/pth_detached (stdout) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2007-12-21 03:15:19
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-12-21 03:00: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 == 359 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) 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/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/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) |