source: tests/CodeChecks/testsuite-memdebug.at@ cc85e4

Debian_Package_split Debian_package_split_molecuildergui_only
Last change on this file since cc85e4 was fbf005, checked in by Frederik Heber <heber@…>, 9 years ago

HUGE: Extracted libmolecuilder_mpqc that is now linked to poolworker.

  • This stops the problems with MemDebug and mpqc when linking against libLinearAlgebra in debug mode: static global variables in libLinAlg are allocated using MemDebug (prefixed with a checksum) but are deallocated using normal libc's free() on exit. This causes an invalid free() as the ptr given to free points inside the block and not at its start. The problem comes from mpqc's use of own new and delete implementation. I'm guessing its reference counting is the culprit. Hence, we need to separate these two compilations from another in different units/libraries. Therefore, we have split off libmolecuilder_mpqc, .._mpqc_extract and additionally place the MPQCJob::Work() implementation inside libMolecuilderJobs_Work.
  • libmolecuilder_mpqc contains all MPQC's code in mpqc.cc (and linked libraries) that is not the main() function.
  • libmolecuilder_mpqc_extract contains functions that extract results such as energies, forces, charge grids from the obtained mpqc solution. These were added by myself to the mpqc code before.
  • molecuilder_mpqc is then linked against a NoOp .._extract library version. Thereby, it does not use any of the Molecuilder or related libraries and does not come in contact with MemDebug.
  • molecuilder_poolworker however is linked with the full .._extract library and hence performs these extractions.
  • poolworker now executes MPQCJob, MPQCCommandJob, and VMGJob and therefore needs to enforce binding to all of them.
  • TESTS: renamed molecuilder_mpqc.in to molecuilder_poolworker.in.
  • Property mode set to 100644
File size: 1.7 KB
RevLine 
[6253ed]1#
2# MoleCuilder - creates and alters molecular systems
3# Copyright (C) 2008-2012 University of Bonn
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17#
[56f73b]18AT_SETUP([Checking for present MemDebug.hpp include])
[5982c5]19AT_KEYWORDS([CodeCheck MemDebug])
[fbf005]20ok="builder.cpp MemDebug.cpp SubspaceFactorizer.cpp TestRunner.cpp unity.cpp pugixml.cpp MPQCJob_Work.cpp"
[56f73b]21echo `pwd`
22echo "${#ok[*]} are ok to not contain MemDebug.hpp: ${ok[0]} ${ok[1]}."
23liste=`find ${abs_top_srcdir}/src -name '*.cpp'`
24for file in $liste
25do
26 # check whether its one of the excluded ones
27 found=0
28 for item in $ok
29 do
30 if test "$item" == "`basename $file`"
31 then
32 found=1
33 break
34 fi
35 done
[57c253]36 # no .moc.cpp
37 if test ! -z "`echo $file | grep '.moc.cpp'`"; then
38 found=1
39 fi
40 if test ! -z "`echo $file | grep 'moc_'`"; then
41 found=1
42 fi
[56f73b]43 # if not, check whether it contains the include if its NOT a unit test
44 if test -z `echo $file | grep unittests`
45 then
46 if test $found -eq 0
47 then
48 AT_CHECK([egrep -q '^#include.*MemDebug.hpp' $file], 0, [ignore], [ignore], [echo "Could not find MemDebug.hpp include in $file."])
49 fi
50 fi
51done
52AT_CLEANUP
Note: See TracBrowser for help on using the repository browser.