QMCPACK / QMCPACK/qmcpack

Improve Unit/Deterministic test coverage for GridExternalPotential

Open
#3,426 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.