Closed
Description
Reassigning an auto
variable generated from a call to a function that returns cpp11::writable::list
appears to leak memory.
Downstream: r-dbi/RMariaDB#309.
cpp11::cpp_source(quiet = FALSE, cxx_std = "CXX17", code = "
#include <cpp11.hpp>
cpp11::writable::list test_list() {
return cpp11::writable::list(10000);
}
[[cpp11::register]]
cpp11::list test_list3() {
auto out = test_list();
out = test_list();
out = test_list();
return out;
}
")
#> ℹ 1 functions decorated with [[cpp11::register]]
#> using C++ compiler: ‘Apple clang version 15.0.0 (clang-1500.0.40.1)’
#> using C++17
#> using SDK: ‘MacOSX14.0.sdk’
#> ccache clang++ -arch arm64 -std=gnu++17 -I"/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/include" -DNDEBUG -I'/Users/kirill/Library/R/arm64/4.3/library/cpp11/include' -I/opt/homebrew/include -fPIC -O0 -g -Wmacro-redefined -Wno-everything -c /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/code_180e147ff91b.cpp -o /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/code_180e147ff91b.o
#> ccache clang++ -arch arm64 -std=gnu++17 -I"/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/include" -DNDEBUG -I'/Users/kirill/Library/R/arm64/4.3/library/cpp11/include' -I/opt/homebrew/include -fPIC -O0 -g -Wmacro-redefined -Wno-everything -c /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/cpp11.cpp -o /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/cpp11.o
#> ccache clang++ -arch arm64 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib -L/opt/homebrew/lib -o /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/code_180e147ff91b.so /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/code_180e147ff91b.o /private/var/folders/dj/yhk9rkx97wn_ykqtnmk18xvc0000gn/T/Rtmpsq7RPu/file180e56b92260/src/cpp11.o -F/Library/Frameworks/R.framework/Versions/4.3-arm64 -framework R -Wl,-framework -Wl,CoreFoundation
#> ld: warning: -single_module is obsolete
#> ld: warning: -multiply_defined is obsolete
gc()
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
#> Ncells 845351 45.2 1449535 77.5 NA 1449535 77.5
#> Vcells 1511050 11.6 8388608 64.0 24576 2326823 17.8
for (i in 1:3) {
for (j in 1:100) {
test_list3()
}
print(gc())
}
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
#> Ncells 846348 45.2 1449535 77.5 NA 1449535 77.5
#> Vcells 3512756 26.9 8388608 64.0 24576 4541845 34.7
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
#> Ncells 846748 45.3 1449535 77.5 NA 1449535 77.5
#> Vcells 5512779 42.1 10146329 77.5 24576 6512871 49.7
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
#> Ncells 847150 45.3 1449535 77.5 NA 1449535 77.5
#> Vcells 7512799 57.4 12255594 93.6 24576 8512899 65.0
Created on 2023-10-23 with reprex v2.0.2
Metadata
Metadata
Assignees
Labels
No labels