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
(11) |
2
(9) |
3
(14) |
4
(18) |
5
(13) |
|
6
(4) |
7
(12) |
8
(16) |
9
(14) |
10
(8) |
11
(9) |
12
(7) |
|
13
(12) |
14
(6) |
15
(14) |
16
(5) |
17
(10) |
18
(8) |
19
(5) |
|
20
(10) |
21
(16) |
22
(5) |
23
(14) |
24
(10) |
25
(11) |
26
(6) |
|
27
(9) |
28
(8) |
29
(11) |
30
(9) |
31
(18) |
|
|
|
From: Vince W. <vi...@cs...> - 2008-01-11 22:17:52
|
Hello
I've been running the SPEC CPU 2006 benchmarks under valgrind (doing some
work on my BBV generating plugin).
There are two benchmarks that have issues, and I thought I'd share them
here for future reference.
1). zeusmp - does not run
It has a 1GB data segment, which valgrind cannot handle on a 32-bit
CPU.
2). dealII - runs forever, never ending
It took a while, but I tracked this down to a 64bit/80bit
floating point issue.
The code in the QGauss<1>::QGauss() function has some code like this:
const long double tolerance = std::max (static_cast<long double>
(std::numeric_limits<double>::epsilon() / 100),
static_cast<long double>(std::numeric_limits<long
double>::epsilon() *5));
do {
....
various fp operations
....
} while (abs(p1/pp) > tolerance);
The tolerance in this case is being set to ~2.22e-18, but the
abs(p1/pp) value never gets below ~2.586e-17 under valgrind.
This is similar to an issue that happens with the "art"
benchmark on SPEC CPU 2000, but in the "art" case it only
makes the code take longer to finish; this "dealII" problem
makes the benchmark loop forever.
Vince
|
|
From: Jeroen N. W. [Bahco] <jn...@xs...> - 2008-01-11 21:39:34
|
Konstantin Serebryany > Dear valgrind developers, > > How do you usually profile valgrind tools? > > I tried to profile a particularly long run of helgrind with oprofile. > The test runs ~1 second on a real CPU and fails after few hours under > helgrind. > The flat profile (after running for ~20 minutes and then pressing ^C) is: > > 8012128 56.8375 vgHelgrind_nextIterFM > 3130689 22.2089 shadow_mem_make_NoAccess > 1777779 12.6115 is_sane_Lock_BASE > 241600 1.7139 cacheline_wback > 194274 1.3782 avl_find_node > 172924 1.2267 cacheline_fetch > > I wanted to get the callgraph profile with oprofile, but it did not work > :( > > Would it be possible to run helgrind under callgrind? I don't know about this specific combination, but there is a section on Self-hosting in Valgrind's file README_DEVELOPERS. > Did you try gprof? > Any > other suggestions? > > The output of -v (after 10 minutes run) follows, > Thanks, > > --kcc > > > > WordSet "univ_tsets": > addTo 22480424 (103026 uncached) > delFrom 0 (0 uncached) > union 6 > intersect 0 (0 uncached) [nb. incl isSubsetOf] > minus 0 (0 uncached) > elem 0 > doubleton 690570 > isEmpty 0 > isSingleton 0 > anyElementOf 0 > isSubsetOf 0 > > WordSet "univ_lsets": > addTo 23193877 (1663 uncached) > delFrom 264477 (1777 uncached) > union 0 > intersect 22480375 (2546 uncached) [nb. incl isSubsetOf] > minus 1103497 (3271 uncached) > elem 38718 > doubleton 0 > isEmpty 5564937 > isSingleton 0 > anyElementOf 111388 > isSubsetOf 1 > > WordSet "univ_laog": > addTo 15126 (1059 uncached) > delFrom 4 (3 uncached) > union 0 > intersect 0 (0 uncached) [nb. incl isSubsetOf] > minus 0 (0 uncached) > elem 0 > doubleton 110 > isEmpty 0 > isSingleton 0 > anyElementOf 0 > isSubsetOf 0 > > hbefore: 2,947,164 queries > hbefore: 2,579,162 cache 0 hits > hbefore: 366,749 cache > 0 hits > hbefore: 1,253 graph searches > hbefore: 1,253 of which slow > hbefore: 0 stack high water mark > hbefore: 1 cache invals > hbefore: 3,986,562 probes > > segments: 115 Segment objects allocated > locksets: 376 unique lock sets > threadsets: 1,824 unique thread sets > univ_laog: 276 unique lock sets > L(ast)L(ock) map: 111,388 inserts (111382 map size) > LockN-to-P map: 0 queries (0 map size) > string table map: 3 queries (2 map size) > LAOG: 110 map size > LAOG exposition: 220 map size > locks: 20,541 acquires, 20,539 releases > sanity checks: 1 > > msm: 940,233,639 134,911,383 rd/wr_Excl_nochange > msm: 2,247,835 8,765 rd/wr_Excl_transfer > msm: 689,209 1,355 rd/wr_Excl_to_ShR/ShM > msm: 21,895,558 285 rd/wr_ShR_to_ShR/ShM > msm: 568,124 16,407 rd/wr_ShM_to_ShM > msm: 14,346,151 73,185,872 rd/wr_New_to_Excl > msm: 15,436,322 9,849,548 rd/wr_NoAccess > > secmaps: 152,486 allocd (1,249,165,312 g-a-range) > linesZ: 39,036,416 allocd ( 936,873,984 bytes occupied) > linesF: 108,317 allocd ( 14,297,844 bytes occupied) > secmaps: 9,910,787 iterator steppings > > cache: 1,713,992,037 totrefs (127,941,812 misses) > cache: 127,301,323 Z-fetch, 640,489 F-fetch > cache: 127,174,345 Z-wback, 701,931 F-wback > cache: 5 invals, 4 flushes > > cline: 127,941,812 normalises > cline: reads 8/4/2/1: 641,284,727 123,701,933 9,885,381 > 223,364,501 > cline: writes 8/4/2/1: 178,916,609 35,642,116 321,318 > 3,570,498 > cline: sets 8/4/2/1: 464,389,946 52,889 51,272 > 58,262 > cline: get1s 5,137, copy1s 5,136 > cline: splits: 8to4 893,992 4to2 1,052,314 2to1 > 1,350,324 > cline: pulldowns: 8to4 37,966,008 4to2 9,893,933 2to1 > 27,935,348 > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace_______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Konstantin S. <kon...@gm...> - 2008-01-11 16:04:44
|
Dear valgrind developers,
How do you usually profile valgrind tools?
I tried to profile a particularly long run of helgrind with oprofile.
The test runs ~1 second on a real CPU and fails after few hours under
helgrind.
The flat profile (after running for ~20 minutes and then pressing ^C) is:
8012128 56.8375 vgHelgrind_nextIterFM
3130689 22.2089 shadow_mem_make_NoAccess
1777779 12.6115 is_sane_Lock_BASE
241600 1.7139 cacheline_wback
194274 1.3782 avl_find_node
172924 1.2267 cacheline_fetch
I wanted to get the callgraph profile with oprofile, but it did not work :(
Would it be possible to run helgrind under callgrind? Did you try gprof? Any
other suggestions?
The output of -v (after 10 minutes run) follows,
Thanks,
--kcc
WordSet "univ_tsets":
addTo 22480424 (103026 uncached)
delFrom 0 (0 uncached)
union 6
intersect 0 (0 uncached) [nb. incl isSubsetOf]
minus 0 (0 uncached)
elem 0
doubleton 690570
isEmpty 0
isSingleton 0
anyElementOf 0
isSubsetOf 0
WordSet "univ_lsets":
addTo 23193877 (1663 uncached)
delFrom 264477 (1777 uncached)
union 0
intersect 22480375 (2546 uncached) [nb. incl isSubsetOf]
minus 1103497 (3271 uncached)
elem 38718
doubleton 0
isEmpty 5564937
isSingleton 0
anyElementOf 111388
isSubsetOf 1
WordSet "univ_laog":
addTo 15126 (1059 uncached)
delFrom 4 (3 uncached)
union 0
intersect 0 (0 uncached) [nb. incl isSubsetOf]
minus 0 (0 uncached)
elem 0
doubleton 110
isEmpty 0
isSingleton 0
anyElementOf 0
isSubsetOf 0
hbefore: 2,947,164 queries
hbefore: 2,579,162 cache 0 hits
hbefore: 366,749 cache > 0 hits
hbefore: 1,253 graph searches
hbefore: 1,253 of which slow
hbefore: 0 stack high water mark
hbefore: 1 cache invals
hbefore: 3,986,562 probes
segments: 115 Segment objects allocated
locksets: 376 unique lock sets
threadsets: 1,824 unique thread sets
univ_laog: 276 unique lock sets
L(ast)L(ock) map: 111,388 inserts (111382 map size)
LockN-to-P map: 0 queries (0 map size)
string table map: 3 queries (2 map size)
LAOG: 110 map size
LAOG exposition: 220 map size
locks: 20,541 acquires, 20,539 releases
sanity checks: 1
msm: 940,233,639 134,911,383 rd/wr_Excl_nochange
msm: 2,247,835 8,765 rd/wr_Excl_transfer
msm: 689,209 1,355 rd/wr_Excl_to_ShR/ShM
msm: 21,895,558 285 rd/wr_ShR_to_ShR/ShM
msm: 568,124 16,407 rd/wr_ShM_to_ShM
msm: 14,346,151 73,185,872 rd/wr_New_to_Excl
msm: 15,436,322 9,849,548 rd/wr_NoAccess
secmaps: 152,486 allocd (1,249,165,312 g-a-range)
linesZ: 39,036,416 allocd ( 936,873,984 bytes occupied)
linesF: 108,317 allocd ( 14,297,844 bytes occupied)
secmaps: 9,910,787 iterator steppings
cache: 1,713,992,037 totrefs (127,941,812 misses)
cache: 127,301,323 Z-fetch, 640,489 F-fetch
cache: 127,174,345 Z-wback, 701,931 F-wback
cache: 5 invals, 4 flushes
cline: 127,941,812 normalises
cline: reads 8/4/2/1: 641,284,727 123,701,933 9,885,381
223,364,501
cline: writes 8/4/2/1: 178,916,609 35,642,116 321,318
3,570,498
cline: sets 8/4/2/1: 464,389,946 52,889 51,272
58,262
cline: get1s 5,137, copy1s 5,136
cline: splits: 8to4 893,992 4to2 1,052,314 2to1
1,350,324
cline: pulldowns: 8to4 37,966,008 4to2 9,893,933 2to1
27,935,348
|
|
From: Josef W. <Jos...@gm...> - 2008-01-11 08:55:20
|
On Thursday 10 January 2008, sv...@va... wrote: > Uninitialised byte(s) found during client check request > at 0x4005FE: croak (dsyms2.c:23) > by 0x40066D: main (dsyms2.c:49) > Address 0x601043 is 7 bytes inside global var "global_i2" > > Not terribly useful, but it's a start. It is useful. An interesting thing for cachegrind/callgrind would be to get global figures on cache events related to data names. This would involve calling VG_(get_dataname_and_offset) for every read/write access, which is a lot of overhead. A solution would be that a tool can build up its own optimized data structure at the time the debug info of an ELF object is read in. One would need a hook for this... Do you have plans to resolve variable names for addresses from stack frames, ie. something like VG_(get_dataname_and_offset_from_stackframe)(Char* function, Int stackoffset, ...) ? Cheers, Josef |
|
From: Julian S. <js...@ac...> - 2008-01-11 07:30:41
|
On Thursday 10 January 2008 22:47, Robert Walsh wrote: > Hi Julian, > > Just out of curiosity, when do you expect to have this branch ready to > merge over to trunk? Seems pretty cool. A while yet. Perhaps end-Jan. You could always use the branch itself if you can't wait :-) More testing would be no bad thing. J |
|
From: <sv...@va...> - 2008-01-11 07:24:38
|
Author: sewardj
Date: 2008-01-11 07:24:37 +0000 (Fri, 11 Jan 2008)
New Revision: 7338
Log:
Enhancements to debuginfo segment-lookup functions:
Change VG_(seginfo_sect_kind) so it also produces an object file
name as well as a VgSectKind. Adjust users accordingly. Make
use of this in Memcheck's address-describer.
Remove VG_(seginfo_sect_kind_name) and replace it with
VG_(pp_SectKind), so as to independently have a way to print
VgSectKinds without doing the address lookup.
Modified:
branches/DATASYMS/callgrind/bb.c
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/exp-drd/drd_error.c
branches/DATASYMS/exp-drd/drd_main.c
branches/DATASYMS/include/pub_tool_debuginfo.h
branches/DATASYMS/memcheck/mc_main.c
Modified: branches/DATASYMS/callgrind/bb.c
===================================================================
--- branches/DATASYMS/callgrind/bb.c 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/callgrind/bb.c 2008-01-11 07:24:37 UTC (rev 7338)
@@ -141,7 +141,7 @@
new->jmp = (CJmpInfo*) &(new->instr[instr_count]);
new->instr_len = 0;
new->cost_count = 0;
- new->sect_kind = VG_(seginfo_sect_kind)(offset + obj->offset);
+ new->sect_kind = VG_(seginfo_sect_kind)(NULL, 0, offset + obj->offset);
new->fn = 0;
new->line = 0;
new->is_entry = 0;
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-11 07:24:37 UTC (rev 7338)
@@ -1511,9 +1511,58 @@
return di->text_bias;
}
-VgSectKind VG_(seginfo_sect_kind)(Addr a)
+Int VG_(seginfo_syms_howmany) ( const DebugInfo *si )
{
+ return si->symtab_used;
+}
+
+void VG_(seginfo_syms_getidx) ( const DebugInfo *si,
+ Int idx,
+ /*OUT*/Addr* addr,
+ /*OUT*/Addr* tocptr,
+ /*OUT*/UInt* size,
+ /*OUT*/HChar** name,
+ /*OUT*/Bool* isText )
+{
+ vg_assert(idx >= 0 && idx < si->symtab_used);
+ if (addr) *addr = si->symtab[idx].addr;
+ if (tocptr) *tocptr = si->symtab[idx].tocptr;
+ if (size) *size = si->symtab[idx].size;
+ if (name) *name = (HChar*)si->symtab[idx].name;
+ if (isText) *isText = si->symtab[idx].isText;
+}
+
+
+/*------------------------------------------------------------*/
+/*--- SectKind query functions ---*/
+/*------------------------------------------------------------*/
+
+/* Convert a VgSectKind to a string, which must be copied if you want
+ to change it. */
+const HChar* VG_(pp_SectKind)( VgSectKind kind )
+{
+ switch (kind) {
+ case Vg_SectUnknown: return "Unknown";
+ case Vg_SectText: return "Text";
+ case Vg_SectData: return "Data";
+ case Vg_SectBSS: return "BSS";
+ case Vg_SectGOT: return "GOT";
+ case Vg_SectPLT: return "PLT";
+ case Vg_SectOPD: return "OPD";
+ default: vg_assert(0);
+ }
+}
+
+/* Given an address 'a', make a guess of which section of which object
+ it comes from. If name is non-NULL, then the last n_name-1
+ characters of the object's name is put in name[0 .. n_name-2], and
+ name[n_name-1] is set to zero (guaranteed zero terminated). */
+
+VgSectKind VG_(seginfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
+ Addr a)
+{
DebugInfo* di;
+ VgSectKind res = Vg_SectUnknown;
for (di = debugInfo_list; di != NULL; di = di->next) {
@@ -1527,84 +1576,69 @@
di->bss_avma, di->bss_size);
if (di->text_size > 0
- && a >= di->text_avma && a < di->text_avma + di->text_size)
- return Vg_SectText;
-
+ && a >= di->text_avma && a < di->text_avma + di->text_size) {
+ res = Vg_SectText;
+ break;
+ }
if (di->data_size > 0
- && a >= di->data_avma && a < di->data_avma + di->data_size)
- return Vg_SectData;
-
+ && a >= di->data_avma && a < di->data_avma + di->data_size) {
+ res = Vg_SectData;
+ break;
+ }
if (di->bss_size > 0
- && a >= di->bss_avma && a < di->bss_avma + di->bss_size)
- return Vg_SectBSS;
-
+ && a >= di->bss_avma && a < di->bss_avma + di->bss_size) {
+ res = Vg_SectBSS;
+ break;
+ }
if (di->plt_size > 0
- && a >= di->plt_avma && a < di->plt_avma + di->plt_size)
- return Vg_SectPLT;
-
+ && a >= di->plt_avma && a < di->plt_avma + di->plt_size) {
+ res = Vg_SectPLT;
+ break;
+ }
if (di->got_size > 0
- && a >= di->got_avma && a < di->got_avma + di->got_size)
- return Vg_SectGOT;
-
+ && a >= di->got_avma && a < di->got_avma + di->got_size) {
+ res = Vg_SectGOT;
+ break;
+ }
if (di->opd_size > 0
- && a >= di->opd_avma && a < di->opd_avma + di->opd_size)
- return Vg_SectOPD;
-
+ && a >= di->opd_avma && a < di->opd_avma + di->opd_size) {
+ res = Vg_SectOPD;
+ break;
+ }
/* we could also check for .eh_frame, if anyone really cares */
}
- return Vg_SectUnknown;
-}
+ vg_assert( (di == NULL && res == Vg_SectUnknown)
+ || (di != NULL && res != Vg_SectUnknown) );
-Char* VG_(seginfo_sect_kind_name)(Addr a, Char* buf, UInt n_buf)
-{
- switch (VG_(seginfo_sect_kind)(a)) {
- case Vg_SectUnknown:
- VG_(snprintf)(buf, n_buf, "Unknown");
- break;
- case Vg_SectText:
- VG_(snprintf)(buf, n_buf, "Text");
- break;
- case Vg_SectData:
- VG_(snprintf)(buf, n_buf, "Data");
- break;
- case Vg_SectBSS:
- VG_(snprintf)(buf, n_buf, "BSS");
- break;
- case Vg_SectGOT:
- VG_(snprintf)(buf, n_buf, "GOT");
- break;
- case Vg_SectPLT:
- VG_(snprintf)(buf, n_buf, "PLT");
- break;
- case Vg_SectOPD:
- VG_(snprintf)(buf, n_buf, "OPD");
- break;
- default:
- vg_assert(0);
+ if (name) {
+
+ vg_assert(n_name >= 8);
+
+ if (di && di->filename) {
+ Int i, j;
+ Int fnlen = VG_(strlen)(di->filename);
+ Int start_at = 1 + fnlen - n_name;
+ if (start_at < 0) start_at = 0;
+ vg_assert(start_at < fnlen);
+ i = start_at; j = 0;
+ while (True) {
+ vg_assert(j >= 0 && j+1 < n_name);
+ vg_assert(i >= 0 && i <= fnlen);
+ name[j] = di->filename[i];
+ name[j+1] = 0;
+ if (di->filename[i] == 0) break;
+ i++; j++;
+ }
+ } else {
+ VG_(snprintf)(name, n_name, "%s", "???");
+ }
+
+ name[n_name-1] = 0;
}
- return buf;
-}
-Int VG_(seginfo_syms_howmany) ( const DebugInfo *si )
-{
- return si->symtab_used;
-}
+ return res;
-void VG_(seginfo_syms_getidx) ( const DebugInfo *si,
- Int idx,
- /*OUT*/Addr* addr,
- /*OUT*/Addr* tocptr,
- /*OUT*/UInt* size,
- /*OUT*/HChar** name,
- /*OUT*/Bool* isText )
-{
- vg_assert(idx >= 0 && idx < si->symtab_used);
- if (addr) *addr = si->symtab[idx].addr;
- if (tocptr) *tocptr = si->symtab[idx].tocptr;
- if (size) *size = si->symtab[idx].size;
- if (name) *name = (HChar*)si->symtab[idx].name;
- if (isText) *isText = si->symtab[idx].isText;
}
Modified: branches/DATASYMS/exp-drd/drd_error.c
===================================================================
--- branches/DATASYMS/exp-drd/drd_error.c 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/exp-drd/drd_error.c 2008-01-11 07:24:37 UTC (rev 7338)
@@ -132,10 +132,8 @@
{
Char filename[512];
Char soname[512];
- Char sect_kind_name[16];
-
- VG_(seginfo_sect_kind_name)(a, sect_kind_name,
- sizeof(sect_kind_name));
+ VgSectKind kind = VG_(seginfo_sect_kind)(NULL, 0, a);
+ const HChar* sect_kind_name = VG_(pp_SectKind)(kind);
VG_(strncpy)(filename, VG_(seginfo_filename)(sg), sizeof(filename));
filename[sizeof(filename) - 1] = 0;
make_path_relative(filename);
Modified: branches/DATASYMS/exp-drd/drd_main.c
===================================================================
--- branches/DATASYMS/exp-drd/drd_main.c 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/exp-drd/drd_main.c 2008-01-11 07:24:37 UTC (rev 7338)
@@ -524,7 +524,8 @@
switch (st->tag)
{
case Ist_IMark:
- instrument = VG_(seginfo_sect_kind)(st->Ist.IMark.addr) != Vg_SectPLT;
+ instrument = VG_(seginfo_sect_kind)(NULL, 0, st->Ist.IMark.addr)
+ != Vg_SectPLT;
break;
case Ist_AbiHint:
Modified: branches/DATASYMS/include/pub_tool_debuginfo.h
===================================================================
--- branches/DATASYMS/include/pub_tool_debuginfo.h 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/include/pub_tool_debuginfo.h 2008-01-11 07:24:37 UTC (rev 7338)
@@ -130,6 +130,9 @@
/*OUT*/UInt* size,
/*OUT*/HChar** name,
/*OUT*/Bool* isText );
+
+/* A simple enumeration to describe the 'kind' of various kinds of
+ segments that arise from the mapping of object files. */
typedef
enum {
Vg_SectUnknown,
@@ -142,9 +145,18 @@
}
VgSectKind;
-extern VgSectKind VG_(seginfo_sect_kind)(Addr);
+/* Convert a VgSectKind to a string, which must be copied if you want
+ to change it. */
+extern
+const HChar* VG_(pp_SectKind)( VgSectKind kind );
-extern Char* VG_(seginfo_sect_kind_name)(Addr a, Char* buf, UInt n_buf);
+/* Given an address 'a', make a guess of which section of which object
+ it comes from. If name is non-NULL, then the last n_name-1
+ characters of the object's name is put in name[0 .. n_name-2], and
+ name[n_name-1] is set to zero (guaranteed zero terminated). */
+extern
+VgSectKind VG_(seginfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
+ Addr a);
#endif // __PUB_TOOL_DEBUGINFO_H
Modified: branches/DATASYMS/memcheck/mc_main.c
===================================================================
--- branches/DATASYMS/memcheck/mc_main.c 2008-01-10 17:54:50 UTC (rev 7337)
+++ branches/DATASYMS/memcheck/mc_main.c 2008-01-11 07:24:37 UTC (rev 7338)
@@ -2626,11 +2626,12 @@
/* The classification of a faulting address. */
typedef
enum {
- Addr_Undescribed, // as-yet unclassified
- Addr_Unknown, // classification yielded nothing useful
- Addr_Stack,
- Addr_Block,
- Addr_GlobalData
+ Addr_Undescribed, // as-yet unclassified
+ Addr_Unknown, // classification yielded nothing useful
+ Addr_Stack, // on a thread's stack
+ Addr_Block, // in malloc'd/free'd block
+ Addr_GlobalData, // in a global data sym
+ Addr_SectKind // last-ditch classification attempt
}
AddrTag;
@@ -2666,6 +2667,13 @@
OffT offset;
} GlobalData;
+ // Could only narrow it down to be the PLT/GOT/etc of a given
+ // object. Better than nothing, perhaps.
+ struct {
+ Char objname[64];
+ VgSectKind kind;
+ } SectKind;
+
// Classification yielded nothing useful.
struct { } Unknown;
@@ -2853,6 +2861,16 @@
xpost);
break;
+ case Addr_SectKind:
+ VG_(message)(Vg_UserMsg,
+ "%sAddress 0x%llx is in the %t segment of %t%s",
+ xpre,
+ (ULong)a,
+ VG_(pp_SectKind)(ai->Addr.SectKind.kind),
+ ai->Addr.SectKind.objname,
+ xpost);
+ break;
+
default:
VG_(tool_panic)("mc_pp_AddrInfo");
}
@@ -3343,9 +3361,10 @@
putting the result in ai. */
static void describe_addr ( Addr a, AddrInfo* ai )
{
- MC_Chunk* mc;
- ThreadId tid;
- Addr stack_min, stack_max;
+ MC_Chunk* mc;
+ ThreadId tid;
+ Addr stack_min, stack_max;
+ VgSectKind sect;
tl_assert(Addr_Undescribed == ai->tag);
@@ -3400,6 +3419,20 @@
[ sizeof(ai->Addr.GlobalData.name)-1 ] == 0);
return;
}
+ /* last ditch attempt at classification */
+ tl_assert( sizeof(ai->Addr.SectKind.objname) > 4 );
+ VG_(memset)( &ai->Addr.SectKind.objname,
+ 0, sizeof(ai->Addr.SectKind.objname));
+ VG_(strcpy)( ai->Addr.SectKind.objname, "???" );
+ sect = VG_(seginfo_sect_kind)( &ai->Addr.SectKind.objname[0],
+ sizeof(ai->Addr.SectKind.objname)-1, a);
+ if (sect != Vg_SectUnknown) {
+ ai->tag = Addr_SectKind;
+ ai->Addr.SectKind.kind = sect;
+ tl_assert( ai->Addr.SectKind.objname
+ [ sizeof(ai->Addr.SectKind.objname)-1 ] == 0);
+ return;
+ }
/* Clueless ... */
ai->tag = Addr_Unknown;
return;
|
|
From: Tom H. <th...@cy...> - 2008-01-11 03:39:39
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-01-11 03:05:10 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 == 366 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) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_detached2 (stdout) ================================================= == 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 == 366 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/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Jan 11 03:19:59 2008 --- new.short Fri Jan 11 03:39:42 2008 *************** *** 8,10 **** ! == 366 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 366 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- exp-drd/tests/pth_cond_race (stderr) + exp-drd/tests/pth_detached2 (stdout) |
|
From: Tom H. <th...@cy...> - 2008-01-11 03:28:59
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-01-11 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 == 366 tests, 10 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/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 366 tests, 9 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_detached (stdout) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Jan 11 03:19:36 2008 --- new.short Fri Jan 11 03:28:59 2008 *************** *** 8,10 **** ! == 366 tests, 9 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 366 tests, 10 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 17,19 **** none/tests/pth_detached (stdout) ! helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc18_semabuse (stderr) --- 17,19 ---- none/tests/pth_detached (stdout) ! helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-01-11 03:15:46
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-01-11 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 == 368 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) |