<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="ltr">
<div dir="ltr">
<div><br>
</div>
</div>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Feb 27, 2019 at 10:41 AM Yuyun Yang via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_-5101320174459724928WordSection1">
<p class="MsoNormal">I called VecDestroy() in the destructor for this object – is that not the right way to do it?</p>
</div>
</div>
</blockquote>
<div>In Domain::testScatters(), you have many VecDuplicate(,&out), You need to VecDestroy(&out) before doing new VecDuplicate(,&out); </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_-5101320174459724928WordSection1">
<p class="MsoNormal"><u></u><u></u></p>
<p class="MsoNormal">How do I implement CHECK ALL RETURN CODES?</p>
</div>
</div>
</blockquote>
For each PETSc function, do ierr = ...; CHKERRQ(ierr);
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_-5101320174459724928WordSection1">
<p class="MsoNormal"><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><b>From:</b> Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>>
<br>
<b>Sent:</b> Wednesday, February 27, 2019 7:24 AM<br>
<b>To:</b> Yuyun Yang <<a href="mailto:yyang85@stanford.edu" target="_blank">yyang85@stanford.edu</a>><br>
<b>Cc:</b> <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<b>Subject:</b> Re: [petsc-users] AddressSanitizer: attempting free on address which was not malloc()-ed<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">You call VecDuplicate() a bunch, but VecDestroy() only once in the bottom function. This is wrong.<u></u><u></u></p>
<div>
<p class="MsoNormal">Also, CHECK ALL RETURN CODES. This is the fastest way to find errors.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> Matt<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Wed, Feb 27, 2019 at 2:06 AM Yuyun Yang via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Hello team,<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I ran into the address sanitizer error that I hope you could help me with. I don’t really know what’s wrong with the way the code frees memory. The relevant code file is attached. The line number following domain.cpp specifically referenced
to the vector _q, which seems a little odd, since some other vectors are constructed and freed the same way.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">==1719==ERROR: AddressSanitizer: attempting free on address which was not malloc()-ed: 0x61f0000076c0 in thread T0<u></u><u></u></p>
<p class="MsoNormal"> #0 0x7fbf195282ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)<u></u><u></u></p>
<p class="MsoNormal"> #1 0x7fbf1706f895 in PetscFreeAlign /home/yyy910805/petsc/src/sys/memory/mal.c:87<u></u><u></u></p>
<p class="MsoNormal"> #2 0x7fbf1731a898 in VecDestroy_Seq /home/yyy910805/petsc/src/vec/vec/impls/seq/bvec2.c:788<u></u><u></u></p>
<p class="MsoNormal"> #3 0x7fbf1735f795 in VecDestroy /home/yyy910805/petsc/src/vec/vec/interface/vector.c:408<u></u><u></u></p>
<p class="MsoNormal"> #4 0x40dd0a in Domain::~Domain() /home/yyy910805/scycle/source/domain.cpp:132<u></u><u></u></p>
<p class="MsoNormal"> #5 0x40b479 in main /home/yyy910805/scycle/source/main.cpp:242<u></u><u></u></p>
<p class="MsoNormal"> #6 0x7fbf14d2082f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)<u></u><u></u></p>
<p class="MsoNormal"> #7 0x4075d8 in _start (/home/yyy910805/scycle/source/main+0x4075d8)<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">0x61f0000076c0 is located 1600 bytes inside of 3220-byte region [0x61f000007080,0x61f000007d14)<u></u><u></u></p>
<p class="MsoNormal">allocated by thread T0 here:<u></u><u></u></p>
<p class="MsoNormal"> #0 0x7fbf19528b32 in __interceptor_memalign (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x98b32)<u></u><u></u></p>
<p class="MsoNormal"> #1 0x7fbf1706f7e0 in PetscMallocAlign /home/yyy910805/petsc/src/sys/memory/mal.c:41<u></u><u></u></p>
<p class="MsoNormal"> #2 0x7fbf17073022 in PetscTrMallocDefault /home/yyy910805/petsc/src/sys/memory/mtr.c:183<u></u><u></u></p>
<p class="MsoNormal"> #3 0x7fbf170710a1 in PetscMallocA /home/yyy910805/petsc/src/sys/memory/mal.c:397<u></u><u></u></p>
<p class="MsoNormal"> #4 0x7fbf17326fb0 in VecCreate_Seq /home/yyy910805/petsc/src/vec/vec/impls/seq/bvec3.c:35<u></u><u></u></p>
<p class="MsoNormal"> #5 0x7fbf1736f560 in VecSetType /home/yyy910805/petsc/src/vec/vec/interface/vecreg.c:51<u></u><u></u></p>
<p class="MsoNormal"> #6 0x7fbf1731afae in VecDuplicate_Seq /home/yyy910805/petsc/src/vec/vec/impls/seq/bvec2.c:807<u></u><u></u></p>
<p class="MsoNormal"> #7 0x7fbf1735eff7 in VecDuplicate /home/yyy910805/petsc/src/vec/vec/interface/vector.c:379<u></u><u></u></p>
<p class="MsoNormal"> #8 0x4130de in Domain::setFields() /home/yyy910805/scycle/source/domain.cpp:431<u></u><u></u></p>
<p class="MsoNormal"> #9 0x40c60a in Domain::Domain(char const*) /home/yyy910805/scycle/source/domain.cpp:57<u></u><u></u></p>
<p class="MsoNormal"> #10 0x40b433 in main /home/yyy910805/scycle/source/main.cpp:242<u></u><u></u></p>
<p class="MsoNormal"> #11 0x7fbf14d2082f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">SUMMARY: AddressSanitizer: bad-free ??:0 __interceptor_free<u></u><u></u></p>
<p class="MsoNormal">==1719==ABORTING<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Thanks very much!<u></u><u></u></p>
<p class="MsoNormal">Yuyun<u></u><u></u></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">-- <u></u><u></u></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">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<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>