Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix typo in CI rules for OpenMP on Ubuntu runners. #552

Merged
merged 5 commits into from
Sep 1, 2024

Conversation

mmuetzel
Copy link
Contributor

There was a typo in the flags to enable OpenMP in the CI on Ubuntu. That meant that these runners never actually used OpenMP. (That's my bad. Sorry for that.)

Fixing that typo revealed that some additional flags were missing for using libgomp as the OpenMP implementation when building with LLVM Clang.

This PR fixes that typo and adds those flags.

@mmuetzel
Copy link
Contributor Author

Hu?
A couple of tests are failing now with clang. All of them seem to be heat-related. I haven't looked into what could be causing this yet.

@mmuetzel
Copy link
Contributor Author

I can't reproduce the test failures when I configure with CC=clang CXX=clang++ cmake -DWITH_OpenMP=ON -DOpenMP_C_FLAGS=-fopenmp=libgomp -DOpenMP_CXX_FLAGS=-fopenmp=libgomp -DOpenMP_C_LIB_NAMES="gomp;pthread" -DOpenMP_CXX_LIB_NAMES="gomp;pthread" --fresh .. on Ubuntu 24.04 locally.

@mmuetzel mmuetzel marked this pull request as draft August 30, 2024 13:56
@raback
Copy link
Contributor

raback commented Aug 30, 2024

Thanx for your tireless work on perfecting the builds. I was positively surprised that all tests were working with OpenMP but it was too good to be true I guess. The OpenMP support has been added later and some parts might not be thread safe.

I looked at the failing tests and they are all related to computation of view factors. This is done using a system command (if the view factors do not exist). This system call seems to be failing almost immediately and the code reports that viewfactors are not available.

I wonder what is different in the system call with and without threads.

@mmuetzel
Copy link
Contributor Author

The OpenMP support doesn't seem to be completely borked. It seems to be working fine on Windows, macOS, and Ubuntu (when using the GCC compilers). There only seem to be issues on Ubuntu when using the LLVM Clang compilers.

You might be right: It might be that the different compilers produce slightly different code. And that slight difference might expose some concurrency issues between threads.
But afaict, only one OpenMP thread is used for the tests. (At least, that is what ElmerSolver(?) is reporting.) And very often threading issues aren't as reliably to reproduce as the issues we are seeing now.

It's also strange that the issue doesn't reproduce locally.
I don't build with the large set of dependencies locally. Maybe, some of the libraries don't like linking to code that is built with clang?

@mmuetzel
Copy link
Contributor Author

Could this be another case of slow disc IO on the runners?

Is there any way to pause program execution in Fortran for a few hundred milliseconds? (Even if it is just for a test to see if that makes a difference.)

@mmuetzel
Copy link
Contributor Author

IIUC, the command that is attempted to be run but fails is ViewFactors crucible.sif. I tried to run that through valgrind and got the following:

Output of valgrind
$ cd fem/tests/InductionHeating2/
$ valgrind ../../src/ViewFactors crucible.sif
==492961== Memcheck, a memory error detector
==492961== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==492961== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==492961== Command: ../../src/ViewFactors crucible.sif
==492961== 
ViewFactors: 
ViewFactors: ==================================================
ViewFactors:  E L M E R  V I E W F A C T O R S,  W E L C O M E
ViewFactors: ==================================================
ViewFactors: 
ViewFactors: 
ViewFactors: Reading Model...
ViewFactors: Computing view factors as defined in file: crucible.sif
==492961== Thread 14:
==492961== Invalid read of size 8
==492961==    at 0x7EEB15A: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c8f8 is 40 bytes inside a block of size 48 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EDE970: lst_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC39: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAD7F: var_rename (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89CA: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 4
==492961==    at 0x7EEB15E: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c6cc is 28 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)

==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEB7DC: var_temp_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED7D56: evaltree (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8524: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7EEB16B: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c8f8 is 40 bytes inside a block of size 48 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EDE970: lst_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC39: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAD7F: var_rename (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89CA: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7EEB16F: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c6d0 is 32 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEB7DC: var_temp_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED7D56: evaltree (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8524: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 4
==492961==    at 0x7EEB176: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c6cc is 28 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEB7DC: var_temp_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED7D56: evaltree (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8524: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7EEB184: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c7e0 is 192 bytes inside a block of size 360 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC1E: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE2736: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEB7DC: var_temp_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED7D56: evaltree (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8524: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7EEB13F: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c8f8 is 40 bytes inside a block of size 48 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EDE970: lst_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC39: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAD7F: var_rename (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89CA: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 4
==492961==    at 0x7EEB143: var_print (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED89F7: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Address 0x852c6c8 is 24 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED898E: put_result (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8543: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEB7DC: var_temp_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED7D56: evaltree (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8524: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7ED88F4: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x8528f58 is 40 bytes inside a block of size 48 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EDE970: lst_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC39: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB57: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7ED88F8: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x8528fc0 is 32 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB69: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961== 
==492961== Invalid write of size 8
==492961==    at 0x7ED88FC: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x8529020 is 16 bytes inside a block of size 24 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC1E: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE2736: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB69: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED890B: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7ED88F4: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x84e8f38 is 40 bytes inside a block of size 48 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EDE970: lst_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC39: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB57: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961== 
==492961== Invalid read of size 8
==492961==    at 0x7ED88F8: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x84e8fa0 is 32 bytes inside a block of size 40 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC2B: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE26FA: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB69: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961== 
==492961== Invalid write of size 8
==492961==    at 0x7ED88FC: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Address 0x84e9000 is 16 bytes inside a block of size 24 free'd
==492961==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE0674: mem_free (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAC1E: var_delete (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED887C: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961==    by 0x7DB5A33: clone (clone.S:100)
==492961==  Block was alloc'd at
==492961==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==492961==    by 0x7EE036D: mem_alloc (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE2736: mat_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EEAB69: var_new (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7ED8899: evalclause (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE9978: doit (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x7EE0173: mtc_domath (in .../elmerfem/build-clang/matc/src/libmatc.so)
==492961==    by 0x4B8E758: matc_c (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4922AF2: __loadmod_MOD_matc (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (in .../elmerfem/build-clang/fem/src/libelmersolver.so)
==492961==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==492961==    by 0x7D28A93: start_thread (pthread_create.c:447)
==492961== 
LoadInputFile: Scanning input file: crucible.sif
LoadInputFile: Scanning only size info
LoadInputFile: First time visiting
LoadInputFile: Reading base load of sif file
LoadInputFile: Loading input file: crucible.sif
LoadInputFile: Reading base load of sif file
LoadInputFile: Number of BCs: 3
LoadInputFile: Number of Body Forces: 2
LoadInputFile: Number of Initial Conditions: 0
LoadInputFile: Number of Materials: 4
LoadInputFile: Number of Equations: 2
LoadInputFile: Number of Solvers: 3
LoadInputFile: Number of Bodies: 6
ListTagKeywords: Setting weight for keywords!
ListTagKeywords: No parameters width suffix: normalize by area
ListTagKeywords: Setting weight for keywords!
ListTagKeywords: No parameters width suffix: normalize by volume
ElmerAsciiMesh: Base mesh name: ./crucible
LoadMesh: Elapsed REAL time:     0.3514 (s)
ViewFactors: Computing view factors for radiation body1
ViewFactors: Number of surfaces participating in radiation: 50
ViewFactors: Computing viewfactors...
Combining original boundary elements for shading
The combined set includes 3 line segments (vs. 50)
ViewFactors: View factors computed in time (s):    0.07    0.07
ViewFactors: 
ViewFactors: Viewfactors before manipulation:
ViewFactors: Minimum row sum:   9.940593E-01
ViewFactors: Maximum row sum:   9.998241E-01
ViewFactors: Average row sum:   9.991651E-01
ViewFactors: Normalizaing Factors...
ViewFactors: Normalization iteration 1:    1.023E-10
ViewFactors: Normalization iteration 2:    1.230E-16
ViewFactors: Normalization iteration 3:    1.790E-28
ViewFactors: View factors manipulated in time (s):    2.67
ViewFactors: 
ViewFactors: Viewfactors after manipulation:
ViewFactors: Minimum row sum:    1.000E+00
ViewFactors: Maximum row sum:    1.000E+00
ViewFactors: Saving view factors in ascii mode
ViewFactors: *** ALL DONE ***
==492961== 
==492961== HEAP SUMMARY:
==492961==     in use at exit: 3,917,107 bytes in 11,731 blocks
==492961==   total heap usage: 142,822 allocs, 131,091 frees, 18,240,165 bytes allocated
==492961== 
==492961== LEAK SUMMARY:
==492961==    definitely lost: 5,553 bytes in 34 blocks
==492961==    indirectly lost: 0 bytes in 0 blocks
==492961==      possibly lost: 160,839 bytes in 247 blocks
==492961==    still reachable: 3,750,715 bytes in 11,450 blocks
==492961==         suppressed: 0 bytes in 0 blocks
==492961== Rerun with --leak-check=full to see details of leaked memory
==492961== 
==492961== For lists of detected and suppressed errors, rerun with: -s
==492961== ERROR SUMMARY: 163 errors from 14 contexts (suppressed: 0 from 0)

IIUC, that is a use after free?

It runs fine when I attach gdb. So, maybe a threading issue indeed?

@mmuetzel
Copy link
Contributor Author

Repeated with CMAKE_BUILD_TYPE=Debug (for line numbers):

Output of valgrind
$ valgrind ../../src/ViewFactors crucible.sif
==515962== Memcheck, a memory error detector
==515962== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==515962== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==515962== Command: ../../src/ViewFactors crucible.sif
==515962== 
ViewFactors: 
ViewFactors: ==================================================
ViewFactors:  E L M E R  V I E W F A C T O R S,  W E L C O M E
ViewFactors: ==================================================
ViewFactors: 
ViewFactors: 
ViewFactors: Reading Model...
ViewFactors: Computing view factors as defined in file: crucible.sif
==515962== Thread 21:
==515962== Invalid write of size 4
==515962==    at 0x7ED89DE: put_result (matc/src/eval.c:930)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x863d4b0 is 32 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAD7F: var_rename (matc/src/variable.c:176)
==515962==    by 0x7ED89CA: put_result (matc/src/eval.c:927)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB0F3: var_print (matc/src/variable.c:251)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d4b8 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAD7F: var_rename (matc/src/variable.c:176)
==515962==    by 0x7ED89CA: put_result (matc/src/eval.c:927)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB0F7: var_print (matc/src/variable.c:251)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d280 is 16 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB13F: var_print (matc/src/variable.c:256)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d4b8 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAD7F: var_rename (matc/src/variable.c:176)
==515962==    by 0x7ED89CA: put_result (matc/src/eval.c:927)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB143: var_print (matc/src/variable.c:256)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d288 is 24 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB15A: var_print (matc/src/variable.c:258)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d4b8 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAD7F: var_rename (matc/src/variable.c:176)
==515962==    by 0x7ED89CA: put_result (matc/src/eval.c:927)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB15E: var_print (matc/src/variable.c:258)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d28c is 28 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB16B: var_print (matc/src/variable.c:259)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d4b8 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAD7F: var_rename (matc/src/variable.c:176)
==515962==    by 0x7ED89CA: put_result (matc/src/eval.c:927)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB16F: var_print (matc/src/variable.c:259)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d290 is 32 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB176: var_print (matc/src/variable.c:259)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d28c is 28 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB184: var_print (matc/src/variable.c:259)
==515962==    by 0x7ED89F7: put_result (matc/src/eval.c:931)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Address 0x863d2f0 is 16 bytes inside a block of size 360 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC1E: var_delete (matc/src/variable.c:318)
==515962==    by 0x7ED898E: put_result (matc/src/eval.c:920)
==515962==    by 0x7ED8543: evalclause (matc/src/eval.c:631)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE2736: mat_new (matc/src/oper.c:121)
==515962==    by 0x7EEB7DC: var_temp_new (matc/src/variable.c:468)
==515962==    by 0x7ED7D56: evaltree (matc/src/eval.c:400)
==515962==    by 0x7ED8524: evalclause (matc/src/eval.c:630)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7ED88F4: evalclause (matc/src/eval.c:748)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x863c0f8 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAB57: var_new (matc/src/variable.c:139)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7ED88F8: evalclause (matc/src/eval.c:748)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x863c160 is 32 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEAB69: var_new (matc/src/variable.c:140)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962== 
==515962== Invalid write of size 8
==515962==    at 0x7ED88FC: evalclause (matc/src/eval.c:748)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x863c1c0 is 16 bytes inside a block of size 24 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC1E: var_delete (matc/src/variable.c:318)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE2736: mat_new (matc/src/oper.c:121)
==515962==    by 0x7EEAB69: var_new (matc/src/variable.c:140)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7ED890B: evalclause (matc/src/eval.c:749)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7ED88F4: evalclause (matc/src/eval.c:748)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x85e6658 is 40 bytes inside a block of size 48 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EDE970: lst_free (matc/src/lists.c:235)
==515962==    by 0x7EEAC39: var_delete (matc/src/variable.c:321)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EEAB57: var_new (matc/src/variable.c:139)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7ED88F8: evalclause (matc/src/eval.c:748)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x85e66c0 is 32 bytes inside a block of size 40 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC2B: var_delete (matc/src/variable.c:319)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE26FA: mat_new (matc/src/oper.c:117)
==515962==    by 0x7EEAB69: var_new (matc/src/variable.c:140)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962== 
==515962== Invalid write of size 8
==515962==    at 0x7ED88FC: evalclause (matc/src/eval.c:748)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Address 0x85e6720 is 16 bytes inside a block of size 24 free'd
==515962==    at 0x484988F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE0674: mem_free (matc/src/matc.c:946)
==515962==    by 0x7EEAC1E: var_delete (matc/src/variable.c:318)
==515962==    by 0x7ED887C: evalclause (matc/src/eval.c:742)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962==    by 0x7DB5A33: clone (clone.S:100)
==515962==  Block was alloc'd at
==515962==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515962==    by 0x7EE036D: mem_alloc (matc/src/matc.c:1008)
==515962==    by 0x7EE2736: mat_new (matc/src/oper.c:121)
==515962==    by 0x7EEAB69: var_new (matc/src/variable.c:140)
==515962==    by 0x7ED8899: evalclause (matc/src/eval.c:743)
==515962==    by 0x7EE9978: doit (matc/src/parser.c:1459)
==515962==    by 0x7EE0173: mtc_domath (matc/src/matc.c:286)
==515962==    by 0x4B8E758: matc_c (fem/src/Load.c:634)
==515962==    by 0x4922AF2: __loadmod_MOD_matc (LoadMod.F90:170)
==515962==    by 0x4A799EA: trimmatcexpression.1._omp_fn.0 (GeneralUtils.F90:1182)
==515962==    by 0x8036CDD: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==515962==    by 0x7D28A93: start_thread (pthread_create.c:447)
==515962== 
==515962== Thread 18:
==515962== Invalid read of size 4
==515962==    at 0x7EEB19E: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==    by 0x7EEABBD: var_new (matc/src/variable.c:144)
==515962==    by 0x87ED72F: ???
==515962==    by 0x87EFE4F: ???
==515962==    by 0x87AF38F: ???
==515962==    by 0x87ED2CF: ???
==515962==  Address 0x6b4341f8 is on thread 18's stack
==515962==  in frame #0, created by var_print (matc/src/variable.c:244)
==515962== 
==515962== Invalid write of size 4
==515962==    at 0x7EEB1A4: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==    by 0x7EEABBD: var_new (matc/src/variable.c:144)
==515962==    by 0x87ED72F: ???
==515962==    by 0x87EFE4F: ???
==515962==    by 0x87AF38F: ???
==515962==    by 0x87ED2CF: ???
==515962==  Address 0x6b4341f8 is on thread 18's stack
==515962==  in frame #0, created by var_print (matc/src/variable.c:244)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB1A7: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==    by 0x7EEABBD: var_new (matc/src/variable.c:144)
==515962==    by 0x87ED72F: ???
==515962==    by 0x87EFE4F: ???
==515962==    by 0x87AF38F: ???
==515962==    by 0x87ED2CF: ???
==515962==  Address 0x6b4341f8 is on thread 18's stack
==515962==  in frame #0, created by var_print (matc/src/variable.c:244)
==515962== 
==515962== Invalid read of size 8
==515962==    at 0x7EEB156: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==    by 0x7EEABBD: var_new (matc/src/variable.c:144)
==515962==    by 0x87ED72F: ???
==515962==    by 0x87EFE4F: ???
==515962==    by 0x87AF38F: ???
==515962==    by 0x87ED2CF: ???
==515962==  Address 0x6b434218 is on thread 18's stack
==515962==  in frame #0, created by var_print (matc/src/variable.c:244)
==515962== 
==515962== Invalid read of size 4
==515962==    at 0x7EEB15E: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==    by 0x7EEABBD: var_new (matc/src/variable.c:144)
==515962==    by 0x87ED72F: ???
==515962==    by 0x87EFE4F: ???
==515962==    by 0x87AF38F: ???
==515962==    by 0x87ED2CF: ???
==515962==  Address 0xc is not stack'd, malloc'd or (recently) free'd
==515962== 

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x547ec5d in ???
#1  0x547dd85 in ???
#2  0x7cd131f in ???
	at ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
#3  0x7eeb15e in var_print
	at /home/osboxes/Documents/Repositories/elmerfem/elmerfem/matc/src/variable.c:258
==515962== Invalid read of size 8
==515962==    at 0x7EC1319: _Unwind_Backtrace (in /usr/lib/x86_64-linux-gnu/libgcc_s.so.1)
==515962==    by 0x57167AB: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547EC5D: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547DD85: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x7CD131F: ??? (in /usr/lib/x86_64-linux-gnu/libc.so.6)
==515962==    by 0x7EEB15D: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==    by 0x6B4343BF: ???
==515962==  Address 0x6b434228 is on thread 18's stack
==515962==  in frame #5, created by var_print (matc/src/variable.c:244)
==515962== 
==515962== Invalid read of size 1
==515962==    at 0x7EBF49F: ??? (in /usr/lib/x86_64-linux-gnu/libgcc_s.so.1)
==515962==    by 0x7EC132D: _Unwind_Backtrace (in /usr/lib/x86_64-linux-gnu/libgcc_s.so.1)
==515962==    by 0x57167AB: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547EC5D: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547DD85: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x7CD131F: ??? (in /usr/lib/x86_64-linux-gnu/libc.so.6)
==515962==    by 0x7EEB15D: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==  Address 0x2 is not stack'd, malloc'd or (recently) free'd
==515962== 
==515962== 
==515962== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==515962==  Access not within mapped region at address 0x2
==515962==    at 0x7EBF49F: ??? (in /usr/lib/x86_64-linux-gnu/libgcc_s.so.1)
==515962==    by 0x7EC132D: _Unwind_Backtrace (in /usr/lib/x86_64-linux-gnu/libgcc_s.so.1)
==515962==    by 0x57167AB: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547EC5D: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x547DD85: ??? (in /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0)
==515962==    by 0x7CD131F: ??? (in /usr/lib/x86_64-linux-gnu/libc.so.6)
==515962==    by 0x7EEB15D: var_print (matc/src/variable.c:258)
==515962==    by 0x1: ???
==515962==    by 0x6B43438F: ???
==515962==    by 0x207EE036D: ???
==515962==    by 0x87ED6A7: ???
==515962==    by 0x200000004: ???
==515962==  If you believe this happened as a result of a stack
==515962==  overflow in your program's main thread (unlikely but
==515962==  possible), you can try to increase the size of the
==515962==  main thread stack using the --main-stacksize= flag.
==515962==  The main thread stack size used in this run was 8388608.
==515962== 
==515962== HEAP SUMMARY:
==515962==     in use at exit: 244,749 bytes in 1,324 blocks
==515962==   total heap usage: 51,520 allocs, 50,196 frees, 3,172,831 bytes allocated
==515962== 
==515962== LEAK SUMMARY:
==515962==    definitely lost: 837 bytes in 14 blocks
==515962==    indirectly lost: 1,986 bytes in 34 blocks
==515962==      possibly lost: 18,007 bytes in 257 blocks
==515962==    still reachable: 223,919 bytes in 1,019 blocks
==515962==         suppressed: 0 bytes in 0 blocks
==515962== Rerun with --leak-check=full to see details of leaked memory
==515962== 
==515962== For lists of detected and suppressed errors, rerun with: -s
==515962== ERROR SUMMARY: 337 errors from 24 contexts (suppressed: 0 from 0)
Segmentation fault (core dumped)

@mmuetzel
Copy link
Contributor Author

mmuetzel commented Sep 1, 2024

IIUC, the issue arises from this part of the code:

elmerfem/matc/src/eval.c

Lines 742 to 752 in 3f8bf18

var_delete(r);
var = var_new(r,TYPE(res),1,1);
d = MATR(res);
for(i = 0; i < NCOL(res)*NROW(res); i++)
{
*MATR(var) = *d++;
ptr = evalclause(LINK(root));
}
var_delete_temp(res);

In line 749, evalclause is called recursively. In this particular case, the "inner" evalclause updates a variable with the same name as the "outer" evalclause. The var_delete in line 742 that is being called by the inner evalclause causes the var to be invalid in the outer evalclause when the function returns.

I pushed an additional commit that should avoid that issue.

@mmuetzel
Copy link
Contributor Author

mmuetzel commented Sep 1, 2024

Hmm... The last commit made it so that valgrind no longer complains for me locally. But the tests are still failing in CI. Maybe, for some other reason?

Anyway, having clean output from valgrind is probably a step in a good direction...

@raback
Copy link
Contributor

raback commented Sep 1, 2024

Certainly that is good! All the radiation cases return this:

ERROR:: systemc: Command exit status was 139

So it is passed from the failing "ViewFactors" system command. The systemc is defined in LoadMod.F90 and depending on value of HAVE_EXECUTECOMMANDLINE it uses either intrinsic Fortran or C command. VievFactors fails immediately as there does not seem to be any std out related to it.

@mmuetzel
Copy link
Contributor Author

mmuetzel commented Sep 1, 2024

I compiled with thread sanitizer (by configuring with -DCMAKE_C_FLAGS="-fsanitize=thread -O1 -DNDEBUG -g" -DCMAKE_CXX_FLAGS="-fsanitize=thread -O1 -DNDEBUG -g" -DCMAKE_SHARED_LINKER_FLAGS=-fsanitize=thread -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=thread).

When I run ../../src/ViewFactors radiation.sif > sanitizer_thread.log 2>&1 in the fem/tests/radiation folder of the build directory, I get the following:
sanitizer_thread.log

That's a lot of potential data races. I haven't checked if any of those might be bogus.

@mmuetzel mmuetzel force-pushed the ci-ubuntu branch 3 times, most recently from aecdf49 to 213d6f2 Compare September 1, 2024 15:04
@mmuetzel
Copy link
Contributor Author

mmuetzel commented Sep 1, 2024

Turns out Clang doesn't define _OPENMP with -fopen=libgomp. That meant that a weird mix of OMP pragmas but no conditional code was compiled.
Having fixed that by manually defining _OPENMP to the value that corresponds to libgomp in Ubuntu 24.04 revealed that the omp.h header couldn't be found by Clang. Attempting to make it use the header from libgcc didn't work. So, I installed libomp-dev (again).

But that still fails during some tests.

If I understand the documentation correctly, all necessary flags should be set implicitly by using fopenmp=. But if _OPENMP isn't defined correctly, I don't know what else isn't set up correctly.

The strange thing is that these tests pass without issues when I build with OpenMP and Clang locally in Ubuntu 24.04.

Anyhow, maybe it isn't worth putting any more time into setting up a configuration that builds with Clang on Ubuntu using libgomp. That is probably a very niche configuration.
Unless someone shows that there are issues on Linux distributions where Clang is the system compiler (e.g., Gentoo), I'm tempted to attribute the test errors to some configuration or compatibility issue. It might be best to just remove that particular configuration from the CI.

It might be better to just build with Clang without OpenMP on Ubuntu. (Compiler errors or warnings tend to be easier to understand with Clang compared to GCC imho.)
I'll just do that (and keep the current status as a comment in the yaml).

@mmuetzel
Copy link
Contributor Author

mmuetzel commented Sep 1, 2024

That configuration seems to pass all tests. Marking as ready for review.

A couple of positive side-effects coming out of this ordeal is maybe that a use-after-free in MATC is probably fixed, and that we have slightly better debugging information in the "Re-run tests" step in the CI.

@mmuetzel mmuetzel marked this pull request as ready for review September 1, 2024 16:07
Add `D` for CMake configuration flag. As far as I can tell, that was a
typo since the OpenMP configurations were added. (My bad. Sorry.)
CMake needs more help if we'd like to use libgomp when building with
LLVM Clang.
`evalclause` can be called recursively for "for" statements. In this
case, variables that are defined in the outer call might be updated in
the inner call. Deleting the variable in the inner call invalidates the
variable in the outer call.

Avoid that by checking if a variable exists and only creating it if it
doesn't.

Also synchronize `matc/src/eval.c` to `post/matc/src/eval.c` (only
keeping different licenses as they are). Also synchronize the
`case forsym:` in `ElmerGUI/matc/src/eval.c`.
@raback
Copy link
Contributor

raback commented Sep 1, 2024

Great! The OpenMP & clang tests that use system call could be also run performing the "ViewFactors" command separately before. Then the system call is circumvented. But I would agree that clang and threads has not been a very common combination so far.

@raback raback merged commit ceb700b into ElmerCSC:devel Sep 1, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants