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
|
2
|
3
(2) |
4
|
5
|
6
|
|
7
|
8
|
9
|
10
|
11
(2) |
12
(1) |
13
(1) |
|
14
(1) |
15
(2) |
16
(2) |
17
(5) |
18
(2) |
19
(1) |
20
(1) |
|
21
|
22
|
23
(1) |
24
(3) |
25
|
26
|
27
|
|
28
|
29
(1) |
30
|
31
(1) |
|
|
|
|
From: Julian S. <se...@so...> - 2018-01-15 10:34:16
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=f8ae2f95d6d717aa6d3923635b9f6f87af9b7cf1 commit f8ae2f95d6d717aa6d3923635b9f6f87af9b7cf1 Author: Julian Seward <js...@ac...> Date: Mon Jan 15 11:25:12 2018 +0100 Bug 79362 - Debug info is lost for .so files when they are dlclose'd. Followup fix to avoid assertion failure when dlopening an object that has previously been dlclosed. As reported by Matthias Schwarzott <zz...@ge...>. Testcase patch from him. The fix is for check_CFSI_related_invariants() to avoid checking for overlaps against DebugInfos that are in 'archived' status, since -- if a previously dlopened-and-then-dlclosed object is later re-dlopened -- this may cause an overlap between the active and archived DebugInfos, which is of no consequence. If the kernel maps the object to the same VMA the second time around then there will *certainly* be an overlap. Diff: --- coregrind/m_debuginfo/debuginfo.c | 2 +- coregrind/m_debuginfo/priv_storage.h | 2 +- .../tests/linux/dlclose_leak-no-keep.stderr.exp | 10 +++--- memcheck/tests/linux/dlclose_leak.c | 38 ++++++++++++---------- memcheck/tests/linux/dlclose_leak.stderr.exp | 17 +++++++--- 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c index d481458..3f86ace 100644 --- a/coregrind/m_debuginfo/debuginfo.c +++ b/coregrind/m_debuginfo/debuginfo.c @@ -673,7 +673,7 @@ static void check_CFSI_related_invariants ( const DebugInfo* di ) /* invariant (1) */ for (di2 = debugInfo_list; di2; di2 = di2->next) { - if (di2 == di) + if (di2 == di || is_DebugInfo_archived(di2)) continue; for (j = 0; j < VG_(sizeXA)(di2->fsm.maps); j++) { const DebugInfoMapping* map2 = VG_(indexXA)(di2->fsm.maps, j); diff --git a/coregrind/m_debuginfo/priv_storage.h b/coregrind/m_debuginfo/priv_storage.h index 6c471a0..713acbe 100644 --- a/coregrind/m_debuginfo/priv_storage.h +++ b/coregrind/m_debuginfo/priv_storage.h @@ -668,7 +668,7 @@ struct _DebugInfo { or the normal case, which is the AND of the following: (0) size of at least one rx mapping > 0 - (1) no two DebugInfos with some rx mapping of size > 0 + (1) no two non-archived DebugInfos with some rx mapping of size > 0 have overlapping rx mappings (2) [cfsi_minavma,cfsi_maxavma] does not extend beyond [avma,+size) of one rx mapping; that is, the former diff --git a/memcheck/tests/linux/dlclose_leak-no-keep.stderr.exp b/memcheck/tests/linux/dlclose_leak-no-keep.stderr.exp index 107b7dd..01306c0 100644 --- a/memcheck/tests/linux/dlclose_leak-no-keep.stderr.exp +++ b/memcheck/tests/linux/dlclose_leak-no-keep.stderr.exp @@ -1,17 +1,17 @@ Conditional jump or move depends on uninitialised value(s) at 0x........: jmp_on_uninit (dlclose_leak_so.c:10) - by 0x........: main (dlclose_leak.c:26) + by 0x........: main (dlclose_leak.c:29) Invalid read of size 1 - at 0x........: main (dlclose_leak.c:29) + at 0x........: main (dlclose_leak.c:32) Address 0x........ is 1 bytes before a block of size 1 alloc'd at 0x........: malloc (vg_replace_malloc.c:...) ... - by 0x........: main (dlclose_leak.c:27) + by 0x........: main (dlclose_leak.c:30) done! -1 bytes in 1 blocks are definitely lost in loss record ... of ... +2 bytes in 2 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) ... - by 0x........: main (dlclose_leak.c:27) + by 0x........: main (dlclose_leak.c:30) diff --git a/memcheck/tests/linux/dlclose_leak.c b/memcheck/tests/linux/dlclose_leak.c index 33fd220..329aace 100644 --- a/memcheck/tests/linux/dlclose_leak.c +++ b/memcheck/tests/linux/dlclose_leak.c @@ -9,24 +9,28 @@ int (*jmp_on_uninit)(void); char* (*alloc_1_byte)(void); -int main(int argc, char** argv) { - char* memToLeak; - char x __attribute__((unused)); - void* handle = dlopen("./dlclose_leak_so.so", RTLD_NOW); - if(!handle) { - printf("FAILURE to dlopen dlclose_leak_so.so\n"); - return EXIT_FAILURE; +int main(int argc, char** argv) +{ + for (int i = 0; i < 2; ++i) + { + char* memToLeak; + char x __attribute__((unused)); + void* handle = dlopen("./dlclose_leak_so.so", RTLD_NOW); + if(!handle) { + printf("FAILURE to dlopen dlclose_leak_so.so\n"); + return EXIT_FAILURE; + } + jmp_on_uninit = dlsym(handle,"jmp_on_uninit"); + //fprintf(stderr, "jmp_on_uninit: %p\n", jmp_on_uninit); + assert(jmp_on_uninit); + alloc_1_byte = dlsym(handle,"alloc_1_byte"); + //fprintf(stderr, "alloc_1_byte: %p\n", alloc_1_byte); + assert(alloc_1_byte); + (void)jmp_on_uninit(); + memToLeak = alloc_1_byte(); + dlclose(handle); + x = memToLeak[-1]; } - jmp_on_uninit = dlsym(handle,"jmp_on_uninit"); - //fprintf(stderr, "jmp_on_uninit: %p\n", jmp_on_uninit); - assert(jmp_on_uninit); - alloc_1_byte = dlsym(handle,"alloc_1_byte"); - //fprintf(stderr, "alloc_1_byte: %p\n", alloc_1_byte); - assert(alloc_1_byte); - (void)jmp_on_uninit(); - memToLeak = alloc_1_byte(); - dlclose(handle); - x = memToLeak[-1]; fprintf(stderr, "done!\n"); return (EXIT_SUCCESS); } diff --git a/memcheck/tests/linux/dlclose_leak.stderr.exp b/memcheck/tests/linux/dlclose_leak.stderr.exp index 3c5b44e..ca89db0 100644 --- a/memcheck/tests/linux/dlclose_leak.stderr.exp +++ b/memcheck/tests/linux/dlclose_leak.stderr.exp @@ -1,17 +1,26 @@ Conditional jump or move depends on uninitialised value(s) at 0x........: jmp_on_uninit (dlclose_leak_so.c:10) - by 0x........: main (dlclose_leak.c:26) + by 0x........: main (dlclose_leak.c:29) Invalid read of size 1 - at 0x........: main (dlclose_leak.c:29) + at 0x........: main (dlclose_leak.c:32) Address 0x........ is 1 bytes before a block of size 1 alloc'd at 0x........: malloc (vg_replace_malloc.c:...) by 0x........: alloc_1_byte (dlclose_leak_so.c:20) - by 0x........: main (dlclose_leak.c:27) + by 0x........: main (dlclose_leak.c:30) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: jmp_on_uninit (dlclose_leak_so.c:10) + by 0x........: main (dlclose_leak.c:29) done! 1 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) by 0x........: alloc_1_byte (dlclose_leak_so.c:20) - by 0x........: main (dlclose_leak.c:27) + by 0x........: main (dlclose_leak.c:30) + +1 bytes in 1 blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: alloc_1_byte (dlclose_leak_so.c:20) + by 0x........: main (dlclose_leak.c:30) |
|
From: Julian S. <js...@ac...> - 2018-01-15 06:53:42
|
On 14/01/18 21:36, Matthias Schwarzott wrote: > When a library is loaded again after unloading it, an assertion is violated: > > valgrind: m_debuginfo/debuginfo.c:683 (check_CFSI_related_invariants): > Assertion '!ranges_overlap(map->avma, map->size, map2->avma, > map2->size)' failed. Thanks for reporting this. Without looking at the code, I'd guess this happens because the overlap-checking code compares the range of the re-loaded library against all DebugInfo objects, which isn't right -- it should ignore archived ones, now. I'll look into it. J |