<!-- This file has been automatically generated. See web/README.md -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
<div id="compose-container" style="direction: ltr" itemscope="" itemtype="https://schema.org/EmailMessage">
<span itemprop="creator" itemscope="" itemtype="https://schema.org/Organization"><span itemprop="name" content="Outlook Mobile for iOS"></span></span>
<div>
<div style="direction: ltr;">Just wanted to follow up on this question, thanks for your time!</div>
<div><br>
</div>
<div style="direction: ltr;">Best,</div>
<div style="direction: ltr;">Yuyun</div>
<div><br>
</div>
<div class="acompli_signature">Get <a href="https://aka.ms/o0ukef">Outlook for iOS</a></div>
<div class="gmail_quote">_____________________________<br>
From: Yuyun Yang <<a dir="ltr" href="mailto:yyang85@stanford.edu" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">yyang85@stanford.edu</a>><br>
Sent: Tuesday, April 16, 2019 21:56<br>
Subject: RE: [petsc-users] Using -malloc_dump to examine memory leak<br>
To: Yuyun Yang <<a dir="ltr" href="mailto:yyang85@stanford.edu" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="1">yyang85@stanford.edu</a>>, Smith, Barry F. <<a dir="ltr" href="mailto:bsmith@mcs.anl.gov" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="2">bsmith@mcs.anl.gov</a>><br>
<br>
<br>
<meta content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--@font-face  {font-family:"Cambria Math"}@font-face        {font-family:DengXian}@font-face        {font-family:Calibri}@font-face {}p.MsoNormal, li.MsoNormal, div.MsoNormal      {margin:0in;    margin-bottom:.0001pt;  font-size:11.0pt;       font-family:"Calibri",sans-serif}a:link, span.MsoHyperlink    {color:blue;    text-decoration:underline}a:visited, span.MsoHyperlinkFollowed  {color:purple;  text-decoration:underline}p.msonormal0, li.msonormal0, div.msonormal0   {margin-right:0in;      margin-left:0in;        font-size:11.0pt;       font-family:"Calibri",sans-serif}p.emailquote, li.emailquote, div.emailquote  {margin-right:0in;      margin-left:1.0pt;      border:none;    padding:0in;    font-size:11.0pt;       font-family:"Calibri",sans-serif}span.EmailStyle20    {font-family:"Calibri",sans-serif;    color:windowtext}span.EmailStyle21      {font-family:"Calibri",sans-serif;    color:windowtext}.MsoChpDefault {font-size:10.0pt}@page WordSection1    {margin:1.0in 1.0in 1.0in 1.0in}div.WordSection1        {}--></style>
<div class="WordSection1">
<p class="MsoNormal">So using -objects_dump showed nothing below the line:</p>
<p class="MsoNormal">The following objects were never freed<br>
-----------------------------------------<br>
Does that mean I’ve freed all the objects? If so, why would -malloc_dump give me a bunch of messages?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I also ran valgrind, and am getting the following error when using --track-origins=yes:</p>
<p class="MsoNormal">Uninitialised value was created by a stack allocation</p>
<p class="MsoNormal">==617==    at 0x417D66: ComputeVel_qd::computeVel(double*, double, int&, int) (fault.cpp:953)</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">The first argument of this function is a Petsc array (obtained from VecGetArray, and after calling this function, VecRestoreArray was called on that same object). I can’t think of a way why valgrind thinks there is an uninitialized value.
 Is this by any chance related to the -malloc_dump messages?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thanks for your help on this.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Best regards,</p>
<p class="MsoNormal">Yuyun</p>
<p class="MsoNormal"> </p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> petsc-users <<a dir="ltr" href="mailto:petsc-users-bounces@mcs.anl.gov" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="3">petsc-users-bounces@mcs.anl.gov</a>>
<b>On Behalf Of </b>Yuyun Yang via petsc-users<br>
<b>Sent:</b> Tuesday, April 16, 2019 7:30 AM<br>
<b>To:</b> Smith, Barry F. <<a dir="ltr" href="mailto:bsmith@mcs.anl.gov" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="4">bsmith@mcs.anl.gov</a>><br>
<b>Cc:</b> <a dir="ltr" href="mailto:petsc-users@mcs.anl.gov" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="5">
petsc-users@mcs.anl.gov</a><br>
<b>Subject:</b> Re: [petsc-users] Using -malloc_dump to examine memory leak</p>
</div>
</div>
<p class="MsoNormal"> </p>
<div>
<div id="x_compose-container">
<div>
<div>
<p class="MsoNormal">Great, thank you for the advice!</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Best regards,</p>
</div>
<div>
<p class="MsoNormal">Yuyun</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Get <a href="https://aka.ms/o0ukef">Outlook for iOS</a></p>
</div>
</div>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="x_divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>><br>
<b>Sent:</b> Tuesday, April 16, 2019 5:54:15 AM<br>
<b>To:</b> Yuyun Yang<br>
<b>Cc:</b> <a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a><br>
<b>Subject:</b> Re: [petsc-users] Using -malloc_dump to examine memory leak</span></p>
<div>
<p class="MsoNormal"> </p>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
  Please try the flag -options_dump this tries to give a much more concise view of what objects have not been freed. For example I commented<br>
out the last VecDestroy() in src/snes/examples/tutorials/ex19.c and then obtained:<br>
<br>
./ex19 -objects_dump<br>
lid velocity = 0.0625, prandtl # = 1., grashof # = 1.<br>
Number of SNES iterations = 2<br>
The following objects were never freed<br>
-----------------------------------------<br>
[0] DM da DM_0x84000000_0<br>
      [0]  DMDACreate2d() in /Users/barrysmith/Src/petsc/src/dm/impls/da/da2.c<br>
      [0]  main() in /Users/barrysmith/Src/petsc/src/snes/examples/tutorials/ex19.c<br>
[0] Vec seq Vec_0x84000000_6<br>
      [0]  DMCreateGlobalVector() in /Users/barrysmith/Src/petsc/src/dm/interface/dm.c<br>
      [0]  main() in /Users/barrysmith/Src/petsc/src/snes/examples/tutorials/ex19.c<br>
<br>
Now I just need to look at the calls to DMCreateGlobalVector and DMDACreate2d in main to see what I did not free.<br>
<br>
Note that since PETSc objects may hold references to other PETSc objects some items may not be freed for which you DID call destroy on.<br>
For example because the unfreed vector holds a reference to the DM the DM is listed as not freed. Once you properly destroy the vector you'll<br>
not that the DM is no longer listed as non freed.<br>
<br>
It can be a little overwhelming at first to figure out what objects have not been freed. We recommending setting the environmental variable<br>
export PETSC_OPTIONS=-malloc_test so that every run of your code reports memory issues and you can keep them under control from<br>
the beginning (when the code is small and growing) rather than wait until the code is large and there are many unfreed objects to chase down.<br>
<br>
   Good luck<br>
<br>
<br>
<br>
   Barry<br>
<br>
<br>
> On Apr 16, 2019, at 1:14 AM, Yuyun Yang via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br>
> <br>
> Hello team,<br>
>  <br>
> I’m trying to use the options -malloc_dump and -malloc_debug to examine memory leaks. The messages however, are quite generic, and don’t really tell me where the problems occur, for example:<br>
>  <br>
> [ 0]1520 bytes VecCreate() line 35 in /home/yyy910805/petsc/src/vec/vec/interface/veccreate.c<br>
>       [0]  PetscMallocA() line 35 in /home/yyy910805/petsc/src/sys/memory/mal.c<br>
>       [0]  VecCreate() line 30 in /home/yyy910805/petsc/src/vec/vec/interface/veccreate.c<br>
>       [0]  VecDuplicate_Seq() line 804 in /home/yyy910805/petsc/src/vec/vec/impls/seq/bvec2.c<br>
>       [0]  VecDuplicate() line 375 in /home/yyy910805/petsc/src/vec/vec/interface/vector.c<br>
>  <br>
> The code is huge, so going through every single VecCreate/VecDuplicate and VecDestroy is going to be time-consuming. Meanwhile, running valgrind gave me some uninitialized values errors that don’t seem to be related to the above message (or maybe they are?).<br>
>  <br>
> How can I use this option to debug effectively?<br>
>  <br>
> Thanks a lot,<br>
> Yuyun</p>
</div>
</div>
<br>
<br>
</div>
</div>
</div>
</body>
</html>