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
(1) |
2
(2) |
3
(2) |
4
(3) |
5
(1) |
|
6
(2) |
7
|
8
|
9
|
10
(1) |
11
|
12
|
|
13
|
14
(2) |
15
(27) |
16
(1) |
17
(4) |
18
(4) |
19
|
|
20
|
21
(1) |
22
(2) |
23
|
24
(2) |
25
|
26
(2) |
|
27
|
28
(22) |
29
(5) |
30
(3) |
31
(6) |
|
|
|
From: Varun G. <var...@li...> - 2017-08-14 20:27:04
|
Dear Valgrind developers,
Currently Valgrind allows us to create objects in a memory pool, destroy
them individually and destroy them all with the pool.
We are working with linking Valgrind into garbage collector in Eclipse
OMR framework. The garbage collector's implementation is such that it
keeps track of areas in memory that are available and free. It does not
keep track of allocated objects (target language running over it does
that) and in each run is informed by it about the ones that are still
present. Based on this information, it marks remaining area as free
without caring about dead objects.
We now have only have areas that are available and not individual
objects so it is not possible to call Valgrind to free them
individually. Using a set to store them temporarily solves this but it
goes against the whole architecture that is ignoring them.
Since Valgrind is already keeping a track of these objects, it can also
free them in a given range without any extra effort, without sacrificing
existing behavior.
Author: Andrew Young
Index: include/valgrind.h
===================================================================
diff --git a/trunk/include/valgrind.h b/trunk/include/valgrind.h
--- a/trunk/include/valgrind.h (revision 16461)
+++ b/trunk/include/valgrind.h (working copy)
@@ -6157,6 +6157,7 @@
VG_USERREQ__MOVE_MEMPOOL = 0x1308,
VG_USERREQ__MEMPOOL_CHANGE = 0x1309,
VG_USERREQ__MEMPOOL_EXISTS = 0x130a,
+ VG_USERREQ__MEMPOOL_CLEAR = 0x130c,
/* Allow printfs to valgrind log. */
/* The first two pass the va_list argument by value, which
@@ -6546,6 +6547,11 @@
VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_TRIM, \
pool, addr, size, 0, 0)
+/* Disassociate any pieces inside a particular range. */
+#define VALGRIND_MEMPOOL_CLEAR(pool, addr, size) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_CLEAR, \
+ pool, addr, size, 0, 0)
+
/* Resize and/or move a piece associated with a memory pool. */
#define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \
VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MOVE_MEMPOOL, \
Index: memcheck/mc_include.h
===================================================================
diff --git a/trunk/memcheck/mc_include.h b/trunk/memcheck/mc_include.h
--- a/trunk/memcheck/mc_include.h (revision 16461)
+++ b/trunk/memcheck/mc_include.h (working copy)
@@ -115,6 +115,7 @@
Addr addr, SizeT size );
void MC_(mempool_free) ( Addr pool, Addr addr );
void MC_(mempool_trim) ( Addr pool, Addr addr, SizeT size );
+void MC_(mempool_clear) ( Addr pool, Addr addr, SizeT size );
void MC_(move_mempool) ( Addr poolA, Addr poolB );
void MC_(mempool_change) ( Addr pool, Addr addrA, Addr addrB, SizeT
size );
Bool MC_(mempool_exists) ( Addr pool );
Index: memcheck/mc_main.c
===================================================================
diff --git a/trunk/memcheck/mc_main.c b/trunk/memcheck/mc_main.c
--- a/trunk/memcheck/mc_main.c (revision 16461)
+++ b/trunk/memcheck/mc_main.c (working copy)
@@ -6934,6 +6934,7 @@
&& VG_USERREQ__MEMPOOL_ALLOC != arg[0]
&& VG_USERREQ__MEMPOOL_FREE != arg[0]
&& VG_USERREQ__MEMPOOL_TRIM != arg[0]
+ && VG_USERREQ__MEMPOOL_CLEAR != arg[0]
&& VG_USERREQ__MOVE_MEMPOOL != arg[0]
&& VG_USERREQ__MEMPOOL_CHANGE != arg[0]
&& VG_USERREQ__MEMPOOL_EXISTS != arg[0]
@@ -7200,6 +7201,15 @@
return True;
}
+ case VG_USERREQ__MEMPOOL_CLEAR: {
+ Addr pool = (Addr)arg[1];
+ Addr addr = (Addr)arg[2];
+ UInt size = arg[3];
+
+ MC_(mempool_clear) ( pool, addr, size );
+ return True;
+ }
+
case VG_USERREQ__MOVE_MEMPOOL: {
Addr poolA = (Addr)arg[1];
Addr poolB = (Addr)arg[2];
Index: memcheck/mc_malloc_wrappers.c
===================================================================
diff --git a/trunk/memcheck/mc_malloc_wrappers.c
b/trunk/memcheck/mc_malloc_wrappers.c
--- a/trunk/memcheck/mc_malloc_wrappers.c (revision 16461)
+++ b/trunk/memcheck/mc_malloc_wrappers.c (working copy)
@@ -1075,6 +1075,91 @@
VG_(free)(chunks);
}
+void MC_(mempool_clear)(Addr pool, Addr addr, SizeT szB)
+{
+ MC_Mempool* mp;
+ MC_Chunk* mc;
+ ThreadId tid = VG_(get_running_tid)();
+ UInt n_shadows, i;
+ VgHashNode** chunks;
+
+ if (VG_(clo_verbosity) > 2) {
+ VG_(message)(Vg_UserMsg, "mempool_trim(0x%lx, 0x%lx, %ld)\n",
+ pool, addr, szB);
+ VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH);
+ }
+
+ mp = VG_(HT_lookup)(MC_(mempool_list), (UWord)pool);
+ if (mp == NULL) {
+ MC_(record_illegal_mempool_error)(tid, pool);
+ return;
+ }
+
+ check_mempool_sane(mp);
+ chunks = VG_(HT_to_array) ( mp->chunks, &n_shadows );
+ if (n_shadows == 0) {
+ tl_assert(chunks == NULL);
+ return;
+ }
+
+ tl_assert(chunks != NULL);
+ for (i = 0; i < n_shadows; ++i) {
+
+ Addr lo, hi, min, max;
+
+ mc = (MC_Chunk*) chunks[i];
+
+ lo = mc->data;
+ hi = mc->szB == 0 ? mc->data : mc->data + mc->szB - 1;
+
+#define EXTENT_CONTAINS(x) ((addr <= (x)) && ((x) < addr + szB))
+
+ if (EXTENT_CONTAINS(lo) && EXTENT_CONTAINS(hi)) {
+
+ /* The current chunk is entirely inside the trim extent:
+ delete it. */
+
+ if (VG_(HT_remove)(mp->chunks, (UWord)mc->data) == NULL) {
+ MC_(record_free_error)(tid, (Addr)mc->data);
+ VG_(free)(chunks);
+ if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp);
+ return;
+ }
+
+ die_and_free_mem ( tid, mc, mp->rzB );
+
+ } else if ( (! EXTENT_CONTAINS(lo)) &&
+ (! EXTENT_CONTAINS(hi)) ) {
+
+ /* The current chunk is entirely outside the trim extent: keep
+ it. */
+
+ continue;
+
+ } else {
+
+ /* Remove any chunk that intersects. TODO this should only
remove the
+ * part of the chunks which intersects, so it works the same
way as
+ * trim */
+
+ if (VG_(HT_remove)(mp->chunks, (UWord)mc->data) == NULL) {
+ MC_(record_free_error)(tid, (Addr)mc->data);
+ VG_(free)(chunks);
+ if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp);
+ return;
+ }
+
+ die_and_free_mem ( tid, mc, mp->rzB );
+
+ }
+
+#undef EXTENT_CONTAINS
+
+ }
+ check_mempool_sane(mp);
+ VG_(free)(chunks);
+}
+
void MC_(move_mempool)(Addr poolA, Addr poolB)
{
MC_Mempool* mp;
Regards,
Varun Garg
|
|
From: Ivo R. <iv...@iv...> - 2017-08-14 14:20:28
|
Dear Valgrind users and developers, Valgrind source code repository has been migrated today successfully from Subversion to git SCM at sourceware.org. Valgrind www pages has been updated as well to reflect new situation. Repositories "valgrind" and "vex" should be treated as read-only from now on. All the development is now done with git at git://sourceware.org/git/valgrind.git: git clone git://sourceware.org/git/valgrind.git/ valgrind <edit/compile> git status/add/show git pull --rebase origin/master <build + test> git commit git show if you have write access, then: git remote set-url --push origin ssh://<username>@sourceware.org/git/valgrind.git/ git push There are a lot of good tutorials on simple git workflows, so please have a look. Bart prepared small GIT howto: https://sourceware.org/git/?p=valgrind.git;a=blob;f=docs/internals/git-HOWTO.txt If you are using something more complicated, please share with us and ideally send us a write up. Kind regards, I. |