<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div> Do you have the valgrind output from 3.14 ? <div class=""><br class=""></div><div class=""><blockquote type="cite" cite="mid:CAMYG4GnECNxUSwDU1zDrRuXP_8rQRdY3a=R7RDDHBWu-nJnA2w@mail.gmail.com" style="background-color: rgb(255, 255, 255);" class=""><div dir="ltr" class=""><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;">1,636 bytes in 1 blocks are still reachable in loss record 4 <br class="">> of 4<br class="">> ==2036== at 0x4C2BE2D: memalign (vg_replace_malloc.c:858)<br class="">> ==2036== by 0x54AC0CB: PetscMallocAlign (mal.c:54)<br class="">> ==2036== by 0x54AFBA9: PetscTrMallocDefault (mtr.c:183)<br class="">> ==2036== by 0x54ADDD2: PetscMallocA (mal.c:423)<br class="">> ==2036== by 0x41A52F: main (main.c:9)<br class="">> ==2036==</blockquote></div></div></blockquote><div class=""><br class=""></div>Given the large amount of memory in the block I think tracing of PETSc's memory allocation is turned on with this run, this may mean the memory is reachable but with your 3.14 run I would guess the memory size is 8 bytes and tracing is not turned on so the memory is listed as "lost". But I do not understand the subtleties of reachable.</div><div class=""><br class=""></div><div class="">Barry</div><div class=""><br class=""></div><div class=""> <br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 12, 2021, at 10:38 AM, Pierre Seize <<a href="mailto:Pierre.Seize@onera.fr" class="">Pierre.Seize@onera.fr</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
<div text="#000000" bgcolor="#FFFFFF" class=""><p class="">The "bug" is that memory from PetscMalloc1 that is not freed is
reported as "definitely lost" in v3.14 (OK) but as "still
reachable" in today's release (not OK).</p><p class="">Here I forget to free the memory on purpose, I would like
valgrind to report it's lost and not still reachable.</p><p class=""><br class="">
</p><p class="">Pierre<br class="">
</p>
<br class="">
<div class="moz-cite-prefix">On 12/10/21 16:24, Matthew Knepley
wrote:<br class="">
</div>
<blockquote type="cite" cite="mid:CAMYG4GnECNxUSwDU1zDrRuXP_8rQRdY3a=R7RDDHBWu-nJnA2w@mail.gmail.com" class="">
<div dir="ltr" class="">
<div dir="ltr" class="">On Tue, Oct 12, 2021 at 10:16 AM Pierre Seize
<<a href="mailto:pierre.seize@onera.fr" moz-do-not-send="true" class="">pierre.seize@onera.fr</a>> wrote:<br class="">
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Sorry, I should have
tried this before:<br class="">
<br class="">
I checked out to v3.14, and now both malloc and PetscMalloc1
are <br class="">
reported as definitely lost, so I would say it's a bug.<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class="">I am not sure what would be the bug. This is correctly
reporting that you did not free the memory.</div>
<div class=""><br class="">
</div>
<div class=""> Thanks,</div>
<div class=""><br class="">
</div>
<div class=""> Matt</div>
<div class=""> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
Pierre<br class="">
<br class="">
<br class="">
On 12/10/21 15:58, Pierre Seize wrote:<br class="">
> Hello petsc-users<br class="">
><br class="">
> I am using Valgrind with my PETSc application, and I
noticed something:<br class="">
><br class="">
> 1 #include <petscsys.h><br class="">
> 2<br class="">
> 3 int main(int argc, char **argv){<br class="">
> 4 PetscErrorCode ierr = 0;<br class="">
> 5<br class="">
> 6 ierr = PetscInitialize(&argc, &argv, NULL,
""); if (ierr) return <br class="">
> ierr;<br class="">
> 7 PetscReal *foo;<br class="">
> 8 malloc(sizeof(PetscReal));<br class="">
> 9 ierr = PetscMalloc1(1, &foo); CHKERRQ(ierr);<br class="">
> 10 ierr = PetscFinalize();<br class="">
> 11 return ierr;<br class="">
> 12 }<br class="">
><br class="">
> With this example, with today's release branch, I've
got this Valgrind <br class="">
> result (--leak-check=full --show-leak-kinds=all):<br class="">
><br class="">
> ==2036== Memcheck, a memory error detector<br class="">
> ==2036== Copyright (C) 2002-2015, and GNU GPL'd, by
Julian Seward et al.<br class="">
> ==2036== Using Valgrind-3.12.0 and LibVEX; rerun with
-h for copyright <br class="">
> info<br class="">
> ==2036== Command: ./build/bin/yanss data/box.yaml<br class="">
> ==2036==<br class="">
> ==2036==<br class="">
> ==2036== HEAP SUMMARY:<br class="">
> ==2036== in use at exit: 1,746 bytes in 4 blocks<br class="">
> ==2036== total heap usage: 2,172 allocs, 2,168 frees,
9,624,690 <br class="">
> bytes allocated<br class="">
> ==2036==<br class="">
> ==2036== 8 bytes in 1 blocks are definitely lost in
loss record 1 of 4<br class="">
> ==2036== at 0x4C29BE3: malloc
(vg_replace_malloc.c:299)<br class="">
> ==2036== by 0x41A4FD: main (main.c:8)<br class="">
> ==2036==<br class="">
> ==2036== 32 bytes in 1 blocks are still reachable in
loss record 2 of 4<br class="">
> ==2036== at 0x4C2B975: calloc
(vg_replace_malloc.c:711)<br class="">
> ==2036== by 0xACF461F: _dlerror_run (in /usr/lib64/<a href="http://libdl-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libdl-2.17.so</a>)<br class="">
> ==2036== by 0xACF4127: dlsym (in /usr/lib64/<a href="http://libdl-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libdl-2.17.so</a>)<br class="">
> ==2036== by 0x56ECBB5: PetscInitialize_Common
(pinit.c:785)<br class="">
> ==2036== by 0x56EF325: PetscInitialize
(pinit.c:1203)<br class="">
> ==2036== by 0x41A4E2: main (main.c:6)<br class="">
> ==2036==<br class="">
> ==2036== 70 bytes in 1 blocks are still reachable in
loss record 3 of 4<br class="">
> ==2036== at 0x4C29BE3: malloc
(vg_replace_malloc.c:299)<br class="">
> ==2036== by 0x400F0D0: _dl_signal_error (in
/usr/lib64/<a href="http://ld-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">ld-2.17.so</a>)<br class="">
> ==2036== by 0x400F26D: _dl_signal_cerror (in
/usr/lib64/<a href="http://ld-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">ld-2.17.so</a>)<br class="">
> ==2036== by 0x400A4BC: _dl_lookup_symbol_x (in
/usr/lib64/<a href="http://ld-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">ld-2.17.so</a>)<br class="">
> ==2036== by 0x83B9F02: do_sym (in /usr/lib64/<a href="http://libc-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libc-2.17.so</a>)<br class="">
> ==2036== by 0xACF40D3: dlsym_doit (in /usr/lib64/<a href="http://libdl-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libdl-2.17.so</a>)<br class="">
> ==2036== by 0x400F2D3: _dl_catch_error (in
/usr/lib64/<a href="http://ld-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">ld-2.17.so</a>)<br class="">
> ==2036== by 0xACF45BC: _dlerror_run (in /usr/lib64/<a href="http://libdl-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libdl-2.17.so</a>)<br class="">
> ==2036== by 0xACF4127: dlsym (in /usr/lib64/<a href="http://libdl-2.17.so/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">libdl-2.17.so</a>)<br class="">
> ==2036== by 0x56ECBB5: PetscInitialize_Common
(pinit.c:785)<br class="">
> ==2036== by 0x56EF325: PetscInitialize
(pinit.c:1203)<br class="">
> ==2036== by 0x41A4E2: main (main.c:6)<br class="">
> ==2036==<br class="">
> ==2036== 1,636 bytes in 1 blocks are still reachable in
loss record 4 <br class="">
> of 4<br class="">
> ==2036== at 0x4C2BE2D: memalign
(vg_replace_malloc.c:858)<br class="">
> ==2036== by 0x54AC0CB: PetscMallocAlign (mal.c:54)<br class="">
> ==2036== by 0x54AFBA9: PetscTrMallocDefault
(mtr.c:183)<br class="">
> ==2036== by 0x54ADDD2: PetscMallocA (mal.c:423)<br class="">
> ==2036== by 0x41A52F: main (main.c:9)<br class="">
> ==2036==<br class="">
> ==2036== LEAK SUMMARY:<br class="">
> ==2036== definitely lost: 8 bytes in 1 blocks<br class="">
> ==2036== indirectly lost: 0 bytes in 0 blocks<br class="">
> ==2036== possibly lost: 0 bytes in 0 blocks<br class="">
> ==2036== still reachable: 1,738 bytes in 3 blocks<br class="">
> ==2036== suppressed: 0 bytes in 0 blocks<br class="">
> ==2036==<br class="">
> ==2036== For counts of detected and suppressed errors,
rerun with: -v<br class="">
> ==2036== ERROR SUMMARY: 1 errors from 1 contexts
(suppressed: 0 from 0)<br class="">
><br class="">
><br class="">
> The first report is the malloc on line 8, fine.<br class="">
> The second and the third correspond to still reachable
memory from <br class="">
> PetscInitialize on line 6, I often got these so I
usually discard it.<br class="">
> The fourth and last is the one that worries me : the
memory from <br class="">
> PetscMalloc1 on line 9 is reported as "still
reachable", but I don't <br class="">
> think it should.<br class="">
> Is there something I do not understand, or is this a
bug ?<br class="">
><br class="">
> Thanks in advance,<br class="">
><br class="">
> Pierre<br class="">
<br class="">
</blockquote>
</div>
<br clear="all" class="">
<div class=""><br class="">
</div>
-- <br class="">
<div dir="ltr" class="gmail_signature">
<div dir="ltr" class="">
<div class="">
<div dir="ltr" class="">
<div class="">
<div dir="ltr" class="">
<div class="">What most experimenters take for granted before
they begin their experiments is infinitely more
interesting than any results to which their
experiments lead.<br class="">
-- Norbert Wiener</div>
<div class=""><br class="">
</div>
<div class=""><a href="http://www.cse.buffalo.edu/%7Eknepley/" target="_blank" moz-do-not-send="true" class="">https://www.cse.buffalo.edu/~knepley/</a><br class="">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br class="">
</div>
</div></blockquote></div><br class=""></div></body></html>