sourceryinstitute / smart-pointers

An object-oriented, extensible reference-counting utility for Fortran
BSD 3-Clause "New" or "Revised" License
27 stars 2 forks source link

Fortran runtime error: Attempt to DEALLOCATE unallocated 'the_resource' with Spack GCC 12.1 #27

Closed wyphan closed 2 years ago

wyphan commented 2 years ago

Looks like Spack GCC 12.1 caught a runtime error:

At line 42 of file test/usage_test.f90
Fortran runtime error: Attempt to DEALLOCATE unallocated 'the_resource'

To replicate:

$ docker pull spack/ubuntu-jammy
$ docker run -it spack/ubuntu-jammy
# spack install gcc@12.1.0
# spack load gcc@12.1.0
# cd
# git clone https://github.com/fortran-lang/fpm.git
# cd fpm
# ./install.sh
# export PATH=${PATH}:/root/.local/bin
# cd
# git clone https://github.com/sourceryinstitute/reference-counter.git
# cd reference-counter
# fpm test
wyphan commented 2 years ago

Here's the stdout log for the last part (fpm test):

root@785c67320b10:~/reference-counter# fpm test
 + mkdir -p build/dependencies
:
[snip]
:
From https://github.com/sourceryinstitute/assert
 * tag               1.3.0      -> FETCH_HEAD
:
[snip]
:
Initialized empty Git repository in /root/reference-counter/build/dependencies/vegetables/.git/
warning: redirecting to https://gitlab.com/everythingfunctional/vegetables.git/
:
[snip]
:
From https://gitlab.com/everythingfunctional/vegetables
 * tag               v7.4.2     -> FETCH_HEAD
:
[snip]
:
Initialized empty Git repository in /root/reference-counter/build/dependencies/iso_varying_string/.git/
remote: Enumerating objects: 69, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 69 (delta 28), reused 40 (delta 19), pack-reused 0
Unpacking objects: 100% (69/69), 27.20 KiB | 1.51 MiB/s, done.
From https://gitlab.com/everythingfunctional/iso_varying_string
 * tag               v2.1.0     -> FETCH_HEAD
:
[snip]
:
Initialized empty Git repository in /root/reference-counter/build/dependencies/strff/.git/
:
[snip]
:
From https://gitlab.com/everythingfunctional/strff
 * tag               v3.0.0     -> FETCH_HEAD
ref_resource_m.f90                     done.
assert_m.F90                           done.
characterizable_m.f90                  done.
constants_m.f90                        done.
input_m.f90                            done.
iso_varying_string.f90                 done.
ref_counter_m.f90                      done.
intrinsic_array_m.F90                  done.
assert_s.F90                           done.
shrink_result_m.f90                    done.
example_m.f90                          done.
string_input_m.f90                     done.
double_precision_input_m.f90           done.
transformed_m.f90                      done.
generated_m.f90                        done.
integer_input_m.f90                    done.
test_result_m.f90                      done.
individual_result_m.f90                done.
random_m.f90                           done.
strff.f90                              done.
ref_counter_s.f90                      done.
ref_reference_m.f90                    done.
intrinsic_array_s.F90                  done.
test_result_item_m.f90                 done.
messages_m.f90                         done.
command_line_m.f90                     done.
generator_m.f90                        done.
result_m.f90                           done.
utilities_m.f90                        done.
reference_counter_m.f90                done.
ref_reference_s.f90                    done.
test_interfaces_m.f90                  done.
test_case_result_m.f90                 done.
ascii_string_generator_m.f90           done.
test_collection_result_m.f90           done.
test_m.f90                             done.
integer_generator_m.f90                done.
transformation_failure_m.f90           done.
equals_within_absolute_tensor_m.f90    done.
equals_integer_array_m.f90             done.
equals_integer_tensor_m.f90            done.
empty_m.f90                            done.
equals_within_relative_tensor_m.f90    done.
that_m.f90                             done.
equals_integer_matrix_m.f90            done.
equals_within_relative_array_m.f90     done.
equals_within_relative_m.f90           done.
includes_m.f90                         done.
doesnt_include_m.f90                   done.
equals_strings_m.f90                   done.
equals_within_relative_matrix_m.f90    done.
equals_within_absolute_matrix_m.f90    done.
equals_within_absolute_m.f90           done.
equals_integer_m.f90                   done.
not_m.f90                              done.
equals_within_absolute_array_m.f90     done.
simple_test_case_m.f90                 done.
input_test_case_m.f90                  done.
test_case_with_generator_m.f90         done.
test_case_with_examples_m.f90          done.
test_item_m.f90                        done.
faster_than_m.f90                      done.
equals_double_precision_m.f90          done.
equals_double_precision_matrix_m.f90   done.
equals_double_precision_array_m.f90    done.
equals_double_precision_tensor_m.f90   done.
test_collection_with_input_m.f90       done.
transforming_test_collection_m.f90     done.
simple_test_collection_m.f90           done.
run_tests_m.f90                        done.
assert_m.f90                           done.
test_constructors_m.f90                done.
vegetables.f90                         done.
libreference-counter.a                 done.
compiler_test.f90                      done.
usage_test.f90                         done.
main.f90                               done.
reference-counter-test                 done.
[100%] Project compiled successfully.
Running Tests

Test that
    The compiler
        finalizes a non-allocatable object on the LHS of an intrinsic assignment
        finalizes an allocated allocatable LHS of an intrinsic assignment
        finalizes a target when the associated pointer is deallocated
        finalizes an object upon explicit deallocation
        finalizes a non-pointer non-allocatable array object at the END statement
        finalizes a non-pointer non-allocatable object at the end of a block construct
        finalizes a function reference on the RHS of an intrinsic assignment
        finalizes a specification expression function result
        finalizes an intent(out) derived type dummy argument
        finalizes an allocatable component object
    Using a reference-counted object
        creates a resource when constructed
        removes the resource when it goes out of scope
        a copy points to the same resource

A total of 13 test cases

At line 42 of file test/usage_test.f90
Fortran runtime error: Attempt to DEALLOCATE unallocated 'the_resource'

Error termination. Backtrace:
#0  0x40708b in __usage_test_MOD_free
        at test/usage_test.f90:42
#1  0x40738a in __ref_counter_m_MOD_release
        at ././src/reference_counter/ref_counter_s.f90:25
#2  0x407bc1 in __ref_counter_m_MOD_finalize
        at ././src/reference_counter/ref_counter_m.f90:54
#3  0x407b2e in __ref_counter_m_MOD___final_ref_counter_m_Ref_counter_t
        at ././src/reference_counter/ref_counter_m.f90:57
#4  0x4082d6 in __ref_reference_m_MOD___final_ref_reference_m_Ref_reference_t
        at ././src/reference_counter/ref_reference_m.f90:30
#5  0x405fd9 in check_copy
        at test/usage_test.f90:89
#6  0x4464d1 in __vegetables_simple_test_case_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_case_m.f90:111
#7  0x421586 in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#8  0x465e6f in __vegetables_simple_test_collection_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_collection_m.f90:138
#9  0x421586 in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#10  0x465e6f in __vegetables_simple_test_collection_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_collection_m.f90:138
#11  0x421586 in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#12  0x41e717 in __vegetables_run_tests_m_MOD_run_tests
        at build/dependencies/vegetables/src/vegetables/run_tests_m.f90:61
#13  0x40271c in run
        at test/main.f90:26
#14  0x402949 in MAIN__
        at test/main.f90:5
#15  0x402984 in main
        at test/main.f90:5
<ERROR> Execution failed for object " reference-counter-test "
<ERROR>*cmd_run*:stopping due to failed executions
STOP 1
wyphan commented 2 years ago

Spack Docker container hash is:

wyp@basecamp:~$ docker image list
REPOSITORY                                                                   TAG                                                                          IMAGE ID       CREATED         SIZE
:
spack/ubuntu-jammy                                                           latest                                                                       b234f3e555be   35 hours ago    798MB
:
wyphan commented 2 years ago

Testing with OpenCoarrays GCC quick installer.

wyp@basecamp:~/work$ gh repo clone sourceryinstitute/opencoarrays
wyp@basecamp:~/work$ cd OpenCoarrays/
wyp@basecamp:~/work/OpenCoarrays$ ./install.sh -p gcc -I 12.1.0 -j 12
:
[snip]
:
wyp@basecamp:~/work/OpenCoarrays$ export PATH=`pwd`/prerequisites/installations/bin:${PATH}
wyp@basecamp:~/work/OpenCoarrays$ which gfortran
/home/wyp/work/OpenCoarrays/prerequisites/installations/bin/gfortran
wyp@basecamp:~/work/OpenCoarrays$ gfortran --version
GNU Fortran (GCC) 12.1.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

wyp@basecamp:~/work/OpenCoarrays$ cd .../reference-counter/
wyp@basecamp:~/work/reference-counter$ rm -rf build/
wyp@basecamp:~/work/reference-counter$ fpm test
 + mkdir -p build/dependencies
Initialized empty Git repository in /home/wyp/work/reference-counter/build/dependencies/assert/.git/
:
[snip]
:
From https://github.com/sourceryinstitute/assert
 * tag               1.3.0      -> FETCH_HEAD
Initialized empty Git repository in /home/wyp/work/reference-counter/build/dependencies/vegetables/.git/
warning: redirecting to https://gitlab.com/everythingfunctional/vegetables.git/
:
[snip]
:
From https://gitlab.com/everythingfunctional/vegetables
 * tag               v7.4.2     -> FETCH_HEAD
Initialized empty Git repository in /home/wyp/work/reference-counter/build/dependencies/iso_varying_string/.git/
:
[snip]
:
From https://gitlab.com/everythingfunctional/iso_varying_string
 * tag               v2.1.0     -> FETCH_HEAD
Initialized empty Git repository in /home/wyp/work/reference-counter/build/dependencies/strff/.git/
:
[snip]
:
From https://gitlab.com/everythingfunctional/strff
 * tag               v3.0.0     -> FETCH_HEAD
 + mkdir -p build/gfortran_2A42023B310FA28D
 + mkdir -p build/gfortran_2A42023B310FA28D/reference-counter/
 + gfortran -c ././src/reference_counter/ref_resource_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_resource_m.f90.o
 + gfortran -c build/dependencies/assert/src/assert_m.F90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds
 -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_assert_m.F90.o
 + gfortran -c build/dependencies/assert/src/characterizable_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o b
uild/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_characterizable_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/constants_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_constants_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/input_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g 
-fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D
 -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_input_m.f90.o
 + gfortran -c build/dependencies/iso_varying_string/src/iso_varying_string.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-erro
rs=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B
310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_iso_varying_string_src_iso_varying_string.f90.o
 + gfortran -c ././src/reference_counter/ref_counter_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bound
s -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfo
rtran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_counter_m.f90.o
 + gfortran -c build/dependencies/assert/src/assert_s.F90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds
 -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfor
tran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_assert_s.F90.o
 + gfortran -c build/dependencies/assert/src/intrinsic_array_m.F90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fche
ck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o b
uild/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_intrinsic_array_m.F90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/string_input_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-error
s=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B3
10FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_string_input_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/random_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g
 -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28
D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_random_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/individual_result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-
errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42
023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_individual_result_m.f
90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/example_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -
g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA2
8D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_example_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/double_precision_input_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -
fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran
_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_double_precision
_input_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/shrink_result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-erro
rs=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B
310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_shrink_result_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/transformed_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors
=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B31
0FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_transformed_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/generated_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_generated_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/integer_input_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-erro
rs=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B
310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_integer_input_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors
=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B31
0FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_result_m.f90.o
 + gfortran -c build/dependencies/strff/src/strff.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fc
heck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran
_2A42023B310FA28D/reference-counter/build_dependencies_strff_src_strff.f90.o
:
[snip]
:
 + gfortran -c ././src/reference_counter/ref_counter_s.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bound
s -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfo
rtran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_counter_s.f90.o
 + gfortran -c ././src/reference_counter/ref_reference_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bou
nds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/g
fortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_reference_m.f90.o
 + gfortran -c build/dependencies/assert/src/intrinsic_array_s.F90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fche
ck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o b
uild/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_intrinsic_array_s.F90.o
:
[snip]
:
 + gfortran -c build/dependencies/vegetables/src/vegetables/command_line_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-error
s=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B3
10FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_command_line_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/generator_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_generator_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/messages_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 
-g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA
28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_messages_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g
 -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28
D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_result_m.f90.o
:
[snip]
:
 + gfortran -c build/dependencies/vegetables/src/vegetables/utilities_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_utilities_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_result_item_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-e
rrors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A420
23B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_result_item_m.f90
.o
 + gfortran -c ././src/reference_counter_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=ar
ray-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A4202
3B310FA28D/reference-counter/src_reference_counter_m.f90.o
 + gfortran -c ././src/reference_counter/ref_reference_s.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bou
nds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/g
fortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_reference_s.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -
fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D 
-o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/integer_generator_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-
errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42
023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_integer_generator_m.f
90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/ascii_string_generator_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -
fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran
_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_ascii_string_gen
erator_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/transformation_failure_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -
fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran
_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_transformation_f
ailure_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_interfaces_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-er
rors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A4202
3B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_interfaces_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_collection_result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -
fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran
_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_collection_
result_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_case_result_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-e
rrors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A420
23B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_case_result_m.f90
.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_relative_tensor_m.f90  -Wall -Wextra -Wimplicit-int
erface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -I
build/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_as
sert_equals_within_relative_tensor_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/empty_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-error
s=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B3
10FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_empty_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_relative_m.f90  -Wall -Wextra -Wimplicit-interface 
-fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/g
fortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_eq
uals_within_relative_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/includes_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-er
rors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A4202
3B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_includes_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_absolute_tensor_m.f90  -Wall -Wextra -Wimplicit-int
erface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -I
build/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_as
sert_equals_within_absolute_tensor_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_relative_array_m.f90  -Wall -Wextra -Wimplicit-inte
rface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ib
uild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_ass
ert_equals_within_relative_array_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_absolute_m.f90  -Wall -Wextra -Wimplicit-interface 
-fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/g
fortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_eq
uals_within_absolute_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_absolute_matrix_m.f90  -Wall -Wextra -Wimplicit-int
erface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -I
build/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_as
sert_equals_within_absolute_matrix_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/that_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors
=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B31
0FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_that_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_absolute_array_m.f90  -Wall -Wextra -Wimplicit-inte
rface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ib
uild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_ass
ert_equals_within_absolute_array_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_integer_tensor_m.f90  -Wall -Wextra -Wimplicit-interface -
fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gf
ortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_equ
als_integer_tensor_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_integer_array_m.f90  -Wall -Wextra -Wimplicit-interface -f
PIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfo
rtran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_equa
ls_integer_array_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/doesnt_include_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -f
max-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_
2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_doesnt_inc
lude_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_within_relative_matrix_m.f90  -Wall -Wextra -Wimplicit-int
erface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -I
build/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_as
sert_equals_within_relative_matrix_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_strings_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -f
max-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_
2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_equals_str
ings_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_integer_matrix_m.f90  -Wall -Wextra -Wimplicit-interface -
fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gf
ortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_equ
als_integer_matrix_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_integer_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -f
max-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_
2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_equals_int
eger_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/not_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=
1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310
FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_not_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/input_test_case_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-er
rors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A4202
3B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_input_test_case_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_case_with_examples_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC 
-fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortra
n_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_case_with_
examples_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_case_with_generator_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC
 -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortr
an_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_case_with
_generator_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_item_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_item_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/simple_test_case_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-e
rrors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A420
23B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_simple_test_case_m.f90
.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/faster_than_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax
-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A4
2023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_faster_than_m
.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_double_precision_tensor_m.f90  -Wall -Wextra -Wimplicit-in
terface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -
Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_a
ssert_equals_double_precision_tensor_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_double_precision_array_m.f90  -Wall -Wextra -Wimplicit-int
erface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -I
build/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_as
sert_equals_double_precision_array_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_double_precision_m.f90  -Wall -Wextra -Wimplicit-interface
 -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/
gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_e
quals_double_precision_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert/equals_double_precision_matrix_m.f90  -Wall -Wextra -Wimplicit-in
terface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -
Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_a
ssert_equals_double_precision_matrix_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/assert_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g
 -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28
D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_assert_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/simple_test_collection_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -
fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran
_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_simple_test_coll
ection_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/run_tests_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310F
A28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_run_tests_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/transforming_test_collection_m.f90  -Wall -Wextra -Wimplicit-interface -
fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gf
ortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_transformi
ng_test_collection_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_collection_with_input_m.f90  -Wall -Wextra -Wimplicit-interface -fP
IC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfor
tran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_collect
ion_with_input_m.f90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables/test_constructors_m.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-
errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42
023B310FA28D -o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_constructors_m.f
90.o
 + gfortran -c build/dependencies/vegetables/src/vegetables.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=
bounds -fcheck=array-temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o buil
d/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables.f90.o
 + ar -rs build/gfortran_2A42023B310FA28D/reference-counter/libreference-counter.a build/gfortran_2A42023B310FA28D/reference-counter
/src_reference_counter_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_resource_m.f90.o build/gf
ortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_counter_m.f90.o build/gfortran_2A42023B310FA28D/reference-counte
r/src_reference_counter_ref_reference_s.f90.o build/gfortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_counter_s.
f90.o build/gfortran_2A42023B310FA28D/reference-counter/src_reference_counter_ref_reference_m.f90.o build/gfortran_2A42023B310FA28D/
reference-counter/build_dependencies_assert_src_intrinsic_array_s.F90.o build/gfortran_2A42023B310FA28D/reference-counter/build_depe
ndencies_assert_src_assert_s.F90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_assert_m.F90.o bu
ild/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_assert_src_intrinsic_array_m.F90.o build/gfortran_2A42023B310FA28
D/reference-counter/build_dependencies_assert_src_characterizable_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_de
pendencies_vegetables_src_vegetables.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_veget
ables_assert_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_m.f90.o bui
ld/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_input_test_case_m.f90.o build/gfortran_2
A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_constants_m.f90.o build/gfortran_2A42023B310FA28D/ref
erence-counter/build_dependencies_vegetables_src_vegetables_test_case_with_examples_m.f90.o build/gfortran_2A42023B310FA28D/referenc
e-counter/build_dependencies_vegetables_src_vegetables_integer_generator_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/b
uild_dependencies_vegetables_src_vegetables_string_input_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencie
s_vegetables_src_vegetables_random_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_veget
ables_individual_result_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_examp
le_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_double_precision_input_m.f
90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_ascii_string_generator_m.f90.o b
uild/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_case_with_generator_m.f90.o build
/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_input_m.f90.o build/gfortran_2A42023B310FA
28D/reference-counter/build_dependencies_vegetables_src_vegetables_shrink_result_m.f90.o build/gfortran_2A42023B310FA28D/reference-c
ounter/build_dependencies_vegetables_src_vegetables_simple_test_collection_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter
/build_dependencies_vegetables_src_vegetables_transformed_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependenci
es_vegetables_src_vegetables_transformation_failure_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_veg
etables_src_vegetables_command_line_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vege
tables_test_constructors_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_gene
rated_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_interfaces_m.f90.o
 build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_generator_m.f90.o build/gfortran_2A4
2023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_item_m.f90.o build/gfortran_2A42023B310FA28D/refer
ence-counter/build_dependencies_vegetables_src_vegetables_messages_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_d
ependencies_vegetables_src_vegetables_run_tests_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetab
les_src_vegetables_result_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_uti
lities_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_collection_result
_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_integer_input_m.f90.o build/
gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_transforming_test_collection_m.f90.o build/
gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_simple_test_case_m.f90.o build/gfortran_2A4
2023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_collection_with_input_m.f90.o build/gfortran_2A420
23B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetables_test_result_item_m.f90.o build/gfortran_2A42023B310FA28D/
reference-counter/build_dependencies_vegetables_src_vegetables_test_case_result_m.f90.o build/gfortran_2A42023B310FA28D/reference-co
unter/build_dependencies_vegetables_src_vegetables_test_result_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_depen
dencies_vegetables_src_vegetables_assert_equals_within_relative_tensor_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/bui
ld_dependencies_vegetables_src_vegetables_assert_empty_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_
vegetables_src_vegetables_assert_equals_within_relative_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies
_vegetables_src_vegetables_assert_faster_than_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetable
s_src_vegetables_assert_includes_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_src_vegetab
les_assert_equals_double_precision_tensor_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetables_sr
c_vegetables_assert_equals_within_absolute_tensor_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_veget
ables_src_vegetables_assert_equals_within_relative_array_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencie
s_vegetables_src_vegetables_assert_equals_within_absolute_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependenci
es_vegetables_src_vegetables_assert_equals_within_absolute_matrix_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_de
pendencies_vegetables_src_vegetables_assert_that_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegeta
bles_src_vegetables_assert_equals_within_absolute_array_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies
_vegetables_src_vegetables_assert_equals_integer_tensor_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies
_vegetables_src_vegetables_assert_equals_integer_array_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_
vegetables_src_vegetables_assert_doesnt_include_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegetab
les_src_vegetables_assert_equals_within_relative_matrix_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies
_vegetables_src_vegetables_assert_equals_strings_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_vegeta
bles_src_vegetables_assert_equals_double_precision_array_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencie
s_vegetables_src_vegetables_assert_equals_integer_matrix_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencie
s_vegetables_src_vegetables_assert_equals_integer_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_veget
ables_src_vegetables_assert_equals_double_precision_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_veg
etables_src_vegetables_assert_equals_double_precision_matrix_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_depende
ncies_vegetables_src_vegetables_assert_not_m.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_iso_varying_
string_src_iso_varying_string.f90.o build/gfortran_2A42023B310FA28D/reference-counter/build_dependencies_strff_src_strff.f90.o
ar: creating build/gfortran_2A42023B310FA28D/reference-counter/libreference-counter.a
 + gfortran -c test/ref_reference_test.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-
temps -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B31
0FA28D/reference-counter/test_ref_reference_test.f90.o
test/ref_reference_test.f90:36:17:

   36 |   subroutine free(self)
      |                 1
Warning: ‘free’ declared at (1) may shadow the intrinsic of the same name.  In order to call the intrinsic, explicit INTRINSIC decla
rations may be required. [-Wintrinsic-shadow]
 + gfortran -c test/compiler_test.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps
 -fbacktrace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28
D/reference-counter/test_compiler_test.f90.o
 + gfortran -c test/main.f90  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktr
ace -fcoarray=single -J build/gfortran_2A42023B310FA28D -Ibuild/gfortran_2A42023B310FA28D -o build/gfortran_2A42023B310FA28D/referen
ce-counter/test_main.f90.o
 + mkdir -p build/gfortran_2A42023B310FA28D/test/
 + gfortran  -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1 -g -fcheck=bounds -fcheck=array-temps -fbacktrace -fcoarray=sin
gle  build/gfortran_2A42023B310FA28D/reference-counter/test_main.f90.o build/gfortran_2A42023B310FA28D/reference-counter/test_compil
er_test.f90.o build/gfortran_2A42023B310FA28D/reference-counter/test_ref_reference_test.f90.o build/gfortran_2A42023B310FA28D/refere
nce-counter/libreference-counter.a -o build/gfortran_2A42023B310FA28D/test/reference-counter-test
Running Tests

Test that
    The compiler
        finalizes a non-allocatable object on the LHS of an intrinsic assignment
        finalizes an allocated allocatable LHS of an intrinsic assignment
        finalizes an object upon explicit deallocation
        finalizes a non-pointer non-allocatable array object at the END statement
        finalizes a non-pointer non-allocatable object at the end of a block construct
        finalizes a function reference on the RHS of an intrinsic assignment
        finalizes a specification expression function result
        finalizes an intent(out) derived type dummy argument
        finalizes an allocatable component object
    A ref_reference
        does not leak when constructed, assigned, and then explicitly freed

A total of 10 test cases

Failed
Took 9.0419e-5 seconds

Test that
    The compiler
        finalizes a non-allocatable object on the LHS of an intrinsic assignment
            Expected
                    |1|
                but got
                    |0|
        finalizes an allocated allocatable LHS of an intrinsic assignment
            Expected
                    |1|
                but got
                    |0|
        finalizes a function reference on the RHS of an intrinsic assignment
            Expected
                    |1|
                but got
                    |0|
        finalizes a specification expression function result
            Expected
                    |1|
                but got
                    |0|

4 of 10 cases failed
4 of 10 assertions failed

STOP 1
<ERROR> Execution failed for object " reference-counter-test "
<ERROR>*cmd_run*:stopping due to failed executions
STOP 1
rouson commented 2 years ago

I get different output, but I assume it's related to this same issue. Here's the trailing output:

reference-counter-test(37911,0x112d02600) malloc: Heap corruption detected, free list is damaged at 0x600001bc01b0
*** Incorrect guard value: 46172678848943
reference-counter-test(37911,0x112d02600) malloc: *** set a breakpoint in malloc_error_break to debug

Program received signal SIGABRT: Process abort signal.

Backtrace for this error:
#0  0x10bf0144e
#1  0x10bf0062d
#2  0x7ff80a6f7dfc
#3  0x7ff80a6ac00f
#4  0x7ff80a6e21ff
#5  0x7ff80a62dd24
#6  0x7ff80a507357
#7  0x7ff80a51b307
#8  0x7ff80a4fa0e8
#9  0x7ff80a4f9677
#10  0x7ff80a4f95a4
#11  0x7ff80a515abb
#12  0x10ba442e8
#13  0x10ba28119
#14  0x10ba51a41
#15  0x10ba27c31
#16  0x10ba51a41
#17  0x10ba16469
#18  0x10ba05516
#19  0x10ba05743
#20  0x10ba0577e
<ERROR> Execution failed for object " reference-counter-test "
<ERROR>*cmd_run*:stopping due to failed executions
STOP 1
rouson commented 2 years ago

@wyphan most of the output in your comment above is unrelated to the issue and takes a lot of time to scrolls through. Please edit the comment down to the essential information.

wyphan commented 2 years ago

Will do!

Edit: done, just removed all the -Wmaybe-uninitialized warnings. as well as the git warnings about no main branch.

wyphan commented 2 years ago

Currently retrying the Spack build, but using ubuntu-focal Docker image, which is Ubuntu 20.04 LTS instead of 22.04 LTS, and ships system GCC version 9.3.0 instead of 11.2.0. Basically, swapping out spack/ubuntu-jammy with spack/ubuntu-focal in the reproducer steps in https://github.com/sourceryinstitute/reference-counter/issues/27#issue-1231187376 .

Edit: just completed. Exactly same error as https://github.com/sourceryinstitute/reference-counter/issues/27#issuecomment-1122418175 .

wyphan commented 2 years ago

Also got some really good feedback from the Spack devs today during the weekly Spack telcon today:

wyphan commented 2 years ago

This is mind-boggling. Testing with plain system GCC 11.2 that Ubuntu 22.04 LTS carries in the official Ubuntu docker container ubuntu:jammy actually reproduces the error! Something fancy is happening in the OpenCoarrays installer... or either Ubuntu and/or Spack applies patches to the source code before building GCC from sources.

[100%] Project compiled successfully.
Running Tests

Test that
    The compiler
        finalizes a non-allocatable object on the LHS of an intrinsic assignment
        finalizes an allocated allocatable LHS of an intrinsic assignment
        finalizes a target when the associated pointer is deallocated
        finalizes an object upon explicit deallocation
        finalizes a non-pointer non-allocatable object at the END statement
        finalizes a non-pointer non-allocatable object at the end of a block construct
        finalizes a function reference on the RHS of an intrinsic assignment
        finalizes a specification expression function result
        finalizes an intent(out) derived type dummy argument
        finalizes an allocatable component object
    Using a reference-counted object   
        creates a resource when constructed
        removes the resource when it goes out of scope
        a copy points to the same resource

A total of 13 test cases

At line 42 of file test/usage_test.f90 
Fortran runtime error: Attempt to DEALLOCATE unallocated 'the_resource'

Error termination. Backtrace:
#0  0x7fec6ac1fae0 in ???
#1  0x7fec6ac20659 in ???
#2  0x7fec6ac20c56 in ???
#3  0x5586d60f1de9 in __usage_test_MOD_free
        at test/usage_test.f90:42
#4  0x5586d60f20e8 in __ref_counter_m_MOD_release
        at ././src/reference_counter/ref_counter_s.f90:25
#5  0x5586d60f28bb in __ref_counter_m_MOD_finalize
        at ././src/reference_counter/ref_counter_m.f90:54
#6  0x5586d60f2828 in __ref_counter_m_MOD___final_ref_counter_m_Ref_counter_t
        at ././src/reference_counter/ref_counter_m.f90:57
#7  0x5586d60f2f5d in __ref_reference_m_MOD___final_ref_reference_m_Ref_reference_t
        at ././src/reference_counter/ref_reference_m.f90:30
#8  0x5586d60f0da5 in check_copy
        at test/usage_test.f90:89
#9  0x5586d6130e79 in __vegetables_simple_test_case_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_case_m.f90:111
#10  0x5586d610bfbd in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#11  0x5586d6150549 in __vegetables_simple_test_collection_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_collection_m.f90:138
#12  0x5586d610bfbd in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#13  0x5586d6150549 in __vegetables_simple_test_collection_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/simple_test_collection_m.f90:138
#14  0x5586d610bfbd in __vegetables_test_item_m_MOD_run_without_input
        at build/dependencies/vegetables/src/vegetables/test_item_m.f90:86
#15  0x5586d6109270 in __vegetables_run_tests_m_MOD_run_tests
        at build/dependencies/vegetables/src/vegetables/run_tests_m.f90:61
#16  0x5586d60ed702 in run
        at test/main.f90:26
#17  0x5586d60ed905 in MAIN__
        at test/main.f90:5
#18  0x5586d60ed940 in main
        at test/main.f90:5
<ERROR> Execution failed for object " reference-counter-test "
<ERROR>*cmd_run*:stopping due to failed executions
STOP 1

To reproduce:

$ docker pull ubuntu:jammy
$ docker run -it ubuntu:jammy
# apt update
# apt install build-essential git curl gfortran
# cd
# git clone https://github.com/fortran-lang/fpm.git
# cd fpm
# ./install.sh
# export PATH=${PATH}:/root/.local/bin
# cd
# git clone https://github.com/sourceryinstitute/reference-counter.git
# cd reference-counter
# fpm test
everythingfunctional commented 2 years ago

Perhaps Spack and the OpenCoarrays installer are using different flags to build GCC 12.1? I doubt either of them is applying a patch before building. I'll note that I'm using 11.2 on Pop!OS, and I see the run-time error.

It would be possible to catch the error and cause the test case to fail instead of crash, but it's a bit roundabout. Is it worth doing?

wyphan commented 2 years ago

I'm pretty sure both Spack GCC and Ubuntu system GCC had patches applied to them before building from sources.

On Thu, May 19, 2022, 13:36 Brad Richardson @.***> wrote:

Perhaps Spack and the OpenCoarrays installer are using different flags to build GCC 12.1? I doubt either of them is applying a patch before building. I'll note that I'm using 11.2 on Pop!OS, and I see the run-time error.

It would be possible to catch the error and cause the test case to fail instead of crash, but it's a bit roundabout. Is it worth doing?

— Reply to this email directly, view it on GitHub https://github.com/sourceryinstitute/reference-counter/issues/27#issuecomment-1131998352, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMERY5BTFIZCXP7BCXNUUODVKZ32NANCNFSM5VRUPDLQ . You are receiving this because you were mentioned.Message ID: @.***>

wyphan commented 2 years ago

I tested with source-built GCC 12.1 on BaseCamp dev rig, it behaves like the GCC built by OpenCoarrays. The config I used was

wyp@basecamp:~/work/gcc/build/gcc-12/bin$ ./gfortran -v
Using built-in specs.
COLLECT_GCC=./gfortran
COLLECT_LTO_WRAPPER=/opt/doconcurrent/gcc/build/gcc-12/bin/../libexec/gcc/x86_64-pc-linux-gnu/12.1.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/wyp/work/gcc/src/configure --enable-languages=c,c++,fortran --disable-bootstrap --disable-libsanitizer --disable-multilib --prefix=/home/wyp/work/gcc/build/gcc-12
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.1.1 20220521 (GCC) 

I wonder if it might be related to --disable-libsanitizer, or an applied patch? @everythingfunctional what's more likely?

rouson commented 2 years ago

@wyphando you know whether there are still issues with installing on Spack? I'm not seeing any issue with local builds and we can't currently test in the GitHub CI because the NAG compiler is the only compiler that passes our test suite. I'll close this issue for now. If you can still reproduce the problem, feel free to reopen the issue.