<div dir="ltr"><div dir="ltr">On Thu, Mar 31, 2022 at 5:58 AM Roland Richter <<a href="mailto:roland.richter@ntnu.no">roland.richter@ntnu.no</a>> wrote:<br></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">

  
  <div>
    <p>Hei,</p>
    <p>For a project I wanted to combine boost::odeint for timestepping
      and PETSc-based vectors and matrices for calculating the right
      hand side. As comparison for both timing and correctness I set up
      an armadillo-based right hand side (with the main-function being
      in <b>main.cpp</b>, and the test code in <b>test_timestepping_clean.cpp</b>)<br>
    </p>
    <p>In theory, the code works fine, but I have some issues with
      cleaning up afterwards in my struct <i>Petsc_RHS_state_clean</i>.
      My initial intention was to set up all involved matrices and
      vectors within the constructor, and free the memory in the
      destructor. To avoid freeing vectors I have not used I initially
      set them to <i>PETSC_NULL</i>, and check if this value has been
      changed before calling <i>VecDestroy().</i></p></div></blockquote><div>You do not need to check. Destroy() functions already check for NULL.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p> However, when doing
      that I get the following error:</p>
    <p><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">[0]PETSC
          ERROR:
          ------------------------------------------------------------------------
        </span><br>
        [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation
        Violation, probably memory access out of range
        <br>
        [0]PETSC ERROR: Try option -start_in_debugger or
        -on_error_attach_debugger
        <br>
        [0]PETSC ERROR: or see <a href="https://petsc.org/release/faq/#valgrind" target="_blank">https://petsc.org/release/faq/#valgrind</a>
        <br>
        [0]PETSC ERROR: or try <a href="http://valgrind.org" target="_blank">http://valgrind.org</a> on GNU/linux and
        Apple Mac OS X to find memory corruption errors
        <br>
        [0]PETSC ERROR: configure using --with-debugging=yes, recompile,
        link, and run  <br>
        [0]PETSC ERROR: to get more information on the crash.
        <br>
        <span style="font-weight:bold;color:rgb(255,84,84);background-color:rgb(255,255,255)">[0]PETSC
          ERROR: --------------------- Error Message
          --------------------------------------------------------------</span></span></p>
    <p>If I comment out that code in ~Petsc_RHS_state_clean(), the
      program runs, but will use ~17 GByte of RAM during runtime. As the
      memory is not used immediately in full, but rather increases
      during running, I assume a memory leak somewhere. Where does it
      come from, and how can I avoid it?</p></div></blockquote><div>It must be that your constructor is called multiple times without calling your destructor. I cannot understand this code in order</div><div>to see where that happens, but you should just be able to run in the debugger and put a break point at the creation and<br></div><div>destruction calls.</div><div><br></div><div>  Thanks,</div><div><br></div><div>      Matt</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
    <p>Thanks!</p>
    <p>Regards,</p>
    <p>Roland Richter<br>
    </p>
    <p><span style="font-family:monospace"></span></p>
  </div>

</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>