Improve Unit/Deterministic test coverage for GridExternalPotential
- Dominant language
- C++
- Stars
- 403
- Forks
- 154
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 82
Description
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
running `ctest -R short-grid_ext_pot-vmc-1-16 --verbose` with address sanitizer found the following error:
```
75: =================================================================
75: ==908259==ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete) on 0x611000004f00
75: #0 0x4defed in operator delete(void*) (/home/svh/Documents/qmcpack/build/bin/qmcpack_complex+0x4defed)
75: #1 0xab2984 in std::_Sp_counted_ptr::_M_dispose() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:377:9
75: #2 0xaadd1c in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:155:6
75: #3 0xaadd1c in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:730:11
75: #4 0xaadd1c in std::__shared_ptr::~__shared_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:1169:31
75: #5 0xaadd1c in qmcplusplus::GridExternalPotential::~GridExternalPotential() /home/svh/Documents/qmcpack/src/QMCHamiltonians/GridExternalPotential.h:45:38
75: #6 0xaadd1c in qmcplusplus::GridExternalPotential::~GridExternalPotential() /home/svh/Documents/qmcpack/src/QMCHamiltonians/GridExternalPotential.h:45:37
75: #7 0xa20d12 in std::default_delete::operator()(qmcplusplus::OperatorBase*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:81:2
75: #8 0xa20d12 in std::unique_ptr >::~unique_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:292:4
75: #9 0xa20d12 in void std::_Destroy > >(std::unique_ptr >*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_construct.h:98:19
75: #10 0xa20d12 in void std::_Destroy_aux::__destroy >*>(std::unique_ptr >*, std::unique_ptr >*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_construct.h:108:6
75: #11 0xa20d12 in void std::_Destroy >*>(std::unique_ptr >*, std::unique_ptr >*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_construct.h:136:7
75: #12 0xa20d12 in void std::_Destroy >*, std::unique_ptr > >(std::unique_ptr >*, std::unique_ptr >*, std::allocator > >&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_construct.h:206:7
75: #13 0xa20d12 in std::vector >, std::allocator > > >::~vector() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:677:2
75: #14 0xa20d12 in qmcplusplus::QMCHamiltonian::~QMCHamiltonian() /home/svh/Documents/qmcpack/src/QMCHamiltonians/QMCHamiltonian.cpp:63:1
75: #15 0xa15a3e in std::default_delete::operator()(qmcplusplus::QMCHamiltonian*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:81:2
75: #16 0xa15a3e in std::unique_ptr >::~unique_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:292:4
75: #17 0xa15a3e in qmcplusplus::HamiltonianFactory::~HamiltonianFactory() /home/svh/Documents/qmcpack/src/QMCHamiltonians/HamiltonianFactory.h:29:7
75: #18 0xa15a3e in qmcplusplus::HamiltonianPool::~HamiltonianPool() /home/svh/Documents/qmcpack/src/QMCHamiltonians/HamiltonianPool.cpp:44:5
75: #19 0x509aa5 in std::default_delete::operator()(qmcplusplus::HamiltonianPool*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:81:2
75: #20 0x509aa5 in std::unique_ptr >::~unique_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:292:4
75: #21 0x509aa5 in qmcplusplus::QMCMainState::~QMCMainState() /home/svh/Documents/qmcpack/src/QMCApp/QMCMainState.cpp:52:29
75: #22 0x4fa553 in qmcplusplus::QMCMain::~QMCMain() /home/svh/Documents/qmcpack/src/QMCApp/QMCMain.cpp:153:1
75: #23 0x4f4a4d in qmcplusplus::QMCMain::~QMCMain() /home/svh/Documents/qmcpack/src/QMCApp/QMCMain.cpp:149:1
75: #24 0x4e53ac in std::default_delete::operator()(qmcplusplus::QMCMain*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:81:2
75: #25 0x4e53ac in std::unique_ptr >::reset(qmcplusplus::QMCMain*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:402:4
75: #26 0x4e53ac in main /home/svh/Documents/qmcpack/src/QMCApp/qmcapp.cpp:240:9
75: #27 0x7fc119b990b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
75: #28 0x43280d in _start (/home/svh/Documents/qmcpack/build/bin/qmcpack_complex+0x43280d)
75:
75: 0x611000004f00 is located 0 bytes inside of 224-byte region [0x611000004f00,0x611000004fe0)
75: allocated by thread T0 here:
75: #0 0x4ad6cd in malloc (/home/svh/Documents/qmcpack/build/bin/qmcpack_complex+0x4ad6cd)
75: #1 0x1729a1c in create_UBspline_3d_d /home/svh/Documents/qmcpack/src/einspline/bspline_create.c:1316:36
75: #2 0xa70f68 in qmcplusplus::HamiltonianFactory::build(_xmlNode*, bool) /home/svh/Documents/qmcpack/src/QMCHamiltonians/HamiltonianFactory.cpp:200:13
75: #3 0xa810ea in qmcplusplus::HamiltonianFactory::put(_xmlNode*) /home/svh/Documents/qmcpack/src/QMCHamiltonians/HamiltonianFactory.cpp:501:18
75: #4 0xa16b4d in qmcplusplus::HamiltonianPool::put(_xmlNode*) /home/svh/Documents/qmcpack/src/QMCHamiltonians/HamiltonianPool.cpp:80:24
75: #5 0x4f2fee in qmcplusplus::QMCMain::processPWH(_xmlNode*) /home/svh/Documents/qmcpack/src/QMCApp/QMCMain.cpp:553:16
75: #6 0x4f1368 in qmcplusplus::QMCMain::validateXML() /home/svh/Documents/qmcpack/src/QMCApp/QMCMain.cpp:474:7
75: #7 0x4f56d5 in qmcplusplus::QMCMain::execute() /home/svh/Documents/qmcpack/src/QMCApp/QMCMain.cpp:216:18
75: #8 0x4e4e0c in main /home/svh/Documents/qmcpack/src/QMCApp/qmcapp.cpp:225:28
75: #9 0x7fc119b990b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
```
I fixed the problem in #3421, but would benefit from a unit or deterministic test that would catch regressions earlier in the CI pipeline.
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
Unit or deterministic test for GridExternalPotential
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
The `short-` tests are too long to run on each PR.
Moving `short-grid_ext_pot-` into the deterministic tests was rejected in #3421.
**Additional context**
Add any other context or screenshots about the feature request here.
Contributor guide
Assessment
This issue has not been assessed yet.