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

CI on main failing on memory leaks #147

Open
jayvdb opened this issue Feb 13, 2024 · 1 comment
Open

CI on main failing on memory leaks #147

jayvdb opened this issue Feb 13, 2024 · 1 comment

Comments

@jayvdb
Copy link
Contributor

jayvdb commented Feb 13, 2024

This has been occurring for quite a long time, so raising an issue to ensure it is either fixed, or the test runner enhanced to ignore the known problems.

https://github.com/georust/geos/actions/runs/7817187602/job/21324473886

find ./target/debug/deps -name "geos*"  -type f -executable | xargs -n 1 valgrind --leak-check=full --error-exitcode=42 --show-leak-kinds=all
==14626== Memcheck, a memory error detector
==14626== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==14626== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==14626== Command: ./target/debug/deps/geos-329262b61c72c019
==14626== 
==14626== Syscall param statx(file_name) points to unaddressable byte(s)
==14626==    at 0x4B33AAE: statx (statx.c:29)
==14626==    by 0x229188: statx (weak.rs:176)
==14626==    by 0x229188: std::sys::unix::fs::try_statx (fs.rs:161)
==14626==    by 0x21A892: file_attr (fs.rs:955)
==14626==    by 0x21A892: metadata (fs.rs:550)
==14626==    by 0x21A892: std::fs::buffer_capacity_required (fs.rs:718)
==14626==    by 0x21827F: read_to_end (fs.rs:746)
==14626==    by 0x21827F: quota (thread.rs:441)
==14626==    by 0x21827F: available_parallelism (thread.rs:312)
==14626==    by 0x21827F: std::thread::available_parallelism (mod.rs:1653)
==14626==    by 0x1C6C63: test::helpers::concurrency::get_concurrency (concurrency.rs:12)
==14626==    by 0x1BD0A8: call_once<fn() -> usize, ()> (function.rs:248)
==14626==    by 0x1BD0A8: unwrap_or_else<usize, fn() -> usize> (option.rs:825)
==14626==    by 0x1BD0A8: test::console::run_tests_console (console.rs:269)
==14626==    by 0x1D24F7: test::test_main (alloc.rs:[11](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:12)3)
==14626==    by 0x1D3473: test::test_main_static (lib.rs:132)
==14626==    by 0x1873B2: geos::main (lib.rs:1)
==14626==    by 0x14378A: core::ops::function::FnOnce::call_once (function.rs:248)
==14626==    by 0x19238D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:[12](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:13)2)
==14626==    by 0x17D8B0: std::rt::lang_start::{{closure}} (rt.rs:166)
==14626==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==14626== 
==14626== Syscall param statx(buf) points to unaddressable byte(s)
==14626==    at 0x4B33AAE: statx (statx.c:29)
==14626==    by 0x229188: statx (weak.rs:176)
==14626==    by 0x229188: std::sys::unix::fs::try_statx (fs.rs:161)
==14626==    by 0x21A892: file_attr (fs.rs:955)
==14626==    by 0x21A892: metadata (fs.rs:550)
==14626==    by 0x21A892: std::fs::buffer_capacity_required (fs.rs:718)
==14626==    by 0x21827F: read_to_end (fs.rs:746)
==14626==    by 0x21827F: quota (thread.rs:441)
==14626==    by 0x21827F: available_parallelism (thread.rs:312)
==14626==    by 0x21827F: std::thread::available_parallelism (mod.rs:1653)
==14626==    by 0x1C6C63: test::helpers::concurrency::get_concurrency (concurrency.rs:12)
==14626==    by 0x1BD0A8: call_once<fn() -> usize, ()> (function.rs:248)
==14626==    by 0x1BD0A8: unwrap_or_else<usize, fn() -> usize> (option.rs:825)
==14626==    by 0x1BD0A8: test::console::run_tests_console (console.rs:269)
==14626==    by 0x1D24F7: test::test_main (alloc.rs:1[13](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:14))
==[14](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:15)626==    by 0x1D3473: test::test_main_static (lib.rs:132)
==14626==    by 0x1873B2: geos::main (lib.rs:1)
==14626==    by 0x14378A: core::ops::function::FnOnce::call_once (function.rs:248)
==14626==    by 0x19238D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:122)
==14626==    by 0x17D8B0: std::rt::lang_start::{{closure}} (rt.rs:166)
==14626==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==14626== 

running 47 tests
test from_geo::test::closed_2_points_linear_ring ... ok
test from_geo::test::good_linear_ring ... ok
test from_geo::test::incorrect_multipolygon_test ... ok
test from_geo::test::empty_linear_ring ... ok
test from_geo::test::incorrect_polygon_not_closed ... ok
test from_geo::test::multipolygon_contains_test ... ok
test from_geo::test::polygon_contains_test ... ok
test from_geo::test::one_elt_linear_ring ... ok
test from_geo::test::test_conversion_multilinestring ... ok
test from_geo::test::test_conversion_multipoint ... ok
test from_geo::test::unclosed_linear_ring ... ok
test from_geo::test::two_elt_linear_ring ... ok
test from_geojson::test::geom_from_geojson_geometry_collection ... ok
test from_geojson::test::geom_from_geojson_line ... ok
test from_geojson::test::geom_from_geojson_multiline ... ok
test from_geojson::test::geom_from_geojson_multipoint ... ok
test from_geojson::test::geom_from_geojson_multipolygon ... ok
test from_geojson::test::geom_from_geojson_polygon ... ok
test from_geojson::test::geom_from_geojson_polygon_with_unclosed_interior_ring ... ok
test functions::test::check_geos_predicate_err_test ... ok
test from_geojson::test::geom_from_geojson_point ... ok
test functions::test::check_geos_predicate_ko_test ... ok
test functions::test::check_geos_predicate_ok_test ... ok
test spatial_index::test::test_strtree ... ok
test test::test_geom_creation_from_geoms ... ok
test test::test_error_multi_from_vec_single ... ok
test test::test_geometrycollection_from_vec_geometry ... ok
test test::test_get_geometry_n ... ok
test test::test_multilinestring_from_vec_single ... ok
test test::test_multipoint_from_vec_single ... ok
test test::test_multipolygon_from_vec_single ... ok
test test::test_prepared_geoms ... ok
test test::test_relationship ... ok
test test::test_wkt_rounding_precision ... ok
test to_geo::test::geom_to_geo_multipoint ... ok
test to_geojson::test::geom_to_geojson_line ... ok
test to_geojson::test::geom_to_geojson_linearring ... ok
test to_geo::test::geom_to_geo_polygon ... ok
test to_geojson::test::geom_to_geojson_geometry_collection ... ok
test to_geojson::test::geom_to_geojson_multiline ... ok
test to_geojson::test::geom_to_geojson_multipolygon ... ok
test to_geojson::test::geom_to_geojson_point ... ok
test to_geojson::test::geom_to_geojson_polygon ... ok
test to_geojson::test::geom_to_geojson_multipoint ... ok
test voronoi::test::geo_voronoi ... ok
test voronoi::test::wkt_voronoi_precision ... ok
test voronoi::test::simple_voronoi ... ok

test result: ok. 47 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.16s

==14626== 
==14626== HEAP SUMMARY:
==14626==     in use at exit: 56 bytes in 2 blocks
==14626==   total heap usage: 13,271 allocs, 13,269 frees, 1,011,084 bytes allocated
==14626== 
==14626== 16 bytes in 1 blocks are still reachable in loss record 1 of 2
==14626==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==14626==    by 0x4CEBD42: geos::geom::GeometryFactory::GeometryFactory() (in /usr/local/lib/libgeos.so.3.6.5)
==14626==    by 0x4CEDF8C: geos::geom::GeometryFactory::getDefaultInstance() (in /usr/local/lib/libgeos.so.3.6.5)
==14626==    by 0x4867306: GEOS_init_r (in /usr/local/lib/libgeos_c.so.1.10.5)
==14626==    by 0x1385AE: geos::context_handle::ContextHandle::init_e (context_handle.rs:95)
==14626==    by 0x19E680: geos::coord_seq::CoordSeq::new (coord_seq.rs:64)
==14626==    by 0x141879: geos::from_geo::create_coord_seq (from_geo.rs:22)
==14626==    by 0x13062A: geos::from_geo::<impl core::convert::TryFrom<geos::from_geo::LineRing> for geos::geometry::Geometry>::try_from (from_geo.rs:147)
==14626==    by 0x141025: <T as core::convert::TryInto<U>>::try_into (mod.rs:593)
==14626==    by 0x19BA6D: geos::from_geo::test::closed_2_points_linear_ring (from_geo.rs:367)
==14626==    by 0x169539: geos::from_geo::test::closed_2_points_linear_ring::{{closure}} (from_geo.rs:365)
==14626==    by 0x14328D: core::ops::function::FnOnce::call_once (function.rs:248)
==14626== 
==14626== 40 bytes in 1 blocks are still reachable in loss record 2 of 2
==14626==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==14626==    by 0x4CEDF81: geos::geom::GeometryFactory::getDefaultInstance() (in /usr/local/lib/libgeos.so.3.6.5)
==14626==    by 0x4867306: GEOS_init_r (in /usr/local/lib/libgeos_c.so.1.10.5)
==14626==    by 0x1385AE: geos::context_handle::ContextHandle::init_e (context_handle.rs:95)
==14626==    by 0x19E680: geos::coord_seq::CoordSeq::new (coord_seq.rs:64)
==14626==    by 0x141879: geos::from_geo::create_coord_seq (from_geo.rs:22)
==14626==    by 0x13062A: geos::from_geo::<impl core::convert::TryFrom<geos::from_geo::LineRing> for geos::geometry::Geometry>::try_from (from_geo.rs:147)
==14626==    by 0x141025: <T as core::convert::TryInto<U>>::try_into (mod.rs:593)
==14626==    by 0x19BA6D: geos::from_geo::test::closed_2_points_linear_ring (from_geo.rs:367)
==14626==    by 0x169539: geos::from_geo::test::closed_2_points_linear_ring::{{closure}} (from_geo.rs:365)
==14626==    by 0x14328D: core::ops::function::FnOnce::call_once (function.rs:248)
==14626==    by 0x1DD792: call_once<fn(), ()> (function.rs:248)
==14626==    by 0x1DD792: test::__rust_begin_short_backtrace (lib.rs:572)
==14626== 
==14626== LEAK SUMMARY:
==14626==    definitely lost: 0 bytes in 0 blocks
==14626==    indirectly lost: 0 bytes in 0 blocks
==14626==      possibly lost: 0 bytes in 0 blocks
==14626==    still reachable: 56 bytes in 2 blocks
==14626==         suppressed: 0 bytes in 0 blocks
==14626== 
==14626== For lists of detected and suppressed errors, rerun with: -s
==14626== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
==14674== Memcheck, a memory error detector
==14674== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==14674== Using Valgrind-3.[15](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:16).0 and LibVEX; rerun with -h for copyright info
==14674== Command: ./target/debug/deps/geos-0992edceede136[16](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:17)
==14674== 
==14674== Syscall param statx(file_name) points to unaddressable byte(s)
==14674==    at 0x4B33AAE: statx (statx.c:29)
==14674==    by 0x1A2D48: statx (weak.rs:[17](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:18)6)
==14674==    by 0x1A2D48: std::sys::unix::fs::try_statx (fs.rs:161)
==14674==    by 0x194452: file_attr (fs.rs:955)
==14674==    by 0x194452: metadata (fs.rs:550)
==14674==    by 0x194452: std::fs::buffer_capacity_required (fs.rs:7[18](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:19))
==14674==    by 0x[19](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:20)1E3F: read_to_end (fs.rs:746)
==14674==    by 0x191E3F: quota (thread.rs:441)
==14674==    by 0x191E3F: available_parallelism (thread.rs:312)
==14674==    by 0x191E3F: std::thread::available_parallelism (mod.rs:1653)
==14674==    by 0x15D5C3: test::helpers::concurrency::get_concurrency (concurrency.rs:12)
==14674==    by 0x153A08: call_once<fn() -> usize, ()> (function.rs:248)
==14674==    by 0x153A08: unwrap_or_else<usize, fn() -> usize> (option.rs:825)
==14674==    by 0x153A08: test::console::run_tests_console (console.rs:269)
==14674==    by 0x168E57: test::test_main (alloc.rs:113)
==14674==    by 0x169DD3: test::test_main_static (lib.rs:132)
==14674==    by 0x137942: geos::main (lib.rs:1)
==14674==    by 0x134A7A: core::ops::function::FnOnce::call_once (function.rs:248)
==14674==    by 0x1[20](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:21)3CD: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:1[22](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:23))
==14674==    by 0x137380: std::rt::lang_start::{{closure}} (rt.rs:166)
==14674==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==14674== 
==14674== Syscall param statx(buf) points to unaddressable byte(s)
==14674==    at 0x4B33AAE: statx (statx.c:29)
==14674==    by 0x1A2D48: statx (weak.rs:176)
==14674==    by 0x1A2D48: std::sys::unix::fs::try_statx (fs.rs:161)
==14674==    by 0x194452: file_attr (fs.rs:955)
==14674==    by 0x194452: metadata (fs.rs:550)
==14674==    by 0x194452: std::fs::buffer_capacity_required (fs.rs:718)
==14674==    by 0x191E3F: read_to_end (fs.rs:746)
==14674==    by 0x191E3F: quota (thread.rs:441)
==14674==    by 0x191E3F: available_parallelism (thread.rs:312)
==14674==    by 0x191E3F: std::thread::available_parallelism (mod.rs:1653)
==14674==    by 0x15D5C3: test::helpers::concurrency::get_concurrency (concurrency.rs:12)
==14674==    by 0x153A08: call_once<fn() -> usize, ()> (function.rs:[24](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:25)8)
==14674==    by 0x153A08: unwrap_or_else<usize, fn() -> usize> (option.rs:8[25](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:26))
==14674==    by 0x153A08: test::console::run_tests_console (console.rs:[26](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:27)9)
==14674==    by 0x168E57: test::test_main (alloc.rs:113)
==14674==    by 0x169DD3: test::test_main_static (lib.rs:132)
==14674==    by 0x137942: geos::main (lib.rs:1)
==14674==    by 0x134A7A: core::ops::function::FnOnce::call_once (function.rs:248)
==14674==    by 0x1203CD: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:122)
==14674==    by 0x137380: std::rt::lang_start::{{closure}} (rt.rs:166)
==14674==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==14674== 

running 14 tests
test functions::test::check_geos_predicate_err_test ... ok
test spatial_index::test::test_strtree ... ok
test functions::test::check_geos_predicate_ko_test ... ok
test functions::test::check_geos_predicate_ok_test ... ok
test test::test_error_multi_from_vec_single ... ok
test test::test_geom_creation_from_geoms ... ok
test test::test_get_geometry_n ... ok
test test::test_multilinestring_from_vec_single ... ok
test test::test_geometrycollection_from_vec_geometry ... ok
test test::test_multipoint_from_vec_single ... ok
test test::test_multipolygon_from_vec_single ... ok
test test::test_prepared_geoms ... ok
test test::test_relationship ... ok
test test::test_wkt_rounding_precision ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s

==14674== 
==14674== HEAP SUMMARY:
==14674==     in use at exit: 56 bytes in 2 blocks
==14674==   total heap usage: 2,632 allocs, 2,630 frees, 303,076 bytes allocated
==14674== 
==14674== 16 bytes in 1 blocks are still reachable in loss record 1 of 2
==14674==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==14674==    by 0x4CEBD42: geos::geom::GeometryFactory::GeometryFactory() (in /usr/local/lib/libgeos.so.3.6.5)
==14674==    by 0x4CEDF8C: geos::geom::GeometryFactory::getDefaultInstance() (in /usr/local/lib/libgeos.so.3.6.5)
==14674==    by 0x4867306: GEOS_init_r (in /usr/local/lib/libgeos_c.so.1.10.5)
==14674==    by 0x12614E: geos::context_handle::ContextHandle::init_e (context_handle.rs:95)
==14674==    by 0x13400E: geos::spatial_index::STRtree<I>::with_capacity (spatial_index.rs:26)
==14674==    by 0x133968: geos::spatial_index::test::test_strtree (spatial_index.rs:149)
==14674==    by 0x12CB69: geos::spatial_index::test::test_strtree::{{closure}} (spatial_index.rs:148)
==14674==    by 0x13499D: core::ops::function::FnOnce::call_once (function.rs:248)
==14674==    by 0x1740F2: call_once<fn(), ()> (function.rs:248)
==14674==    by 0x1740F2: test::__rust_begin_short_backtrace (lib.rs:572)
==14674==    by 0x172DCF: call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (boxed.rs:1940)
==14674==    by 0x172DCF: call_once<(), alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>> (unwind_safe.rs:[27](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:28)1)
==14674==    by 0x172DCF: do_call<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panicking.rs:492)
==14674==    by 0x172DCF: try<(), core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>> (panicking.rs:456)
==14674==    by 0x172DCF: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panic.rs:137)
==14674==    by 0x172DCF: run_test_in_process (lib.rs:595)
==14674==    by 0x172DCF: test::run_test::run_test_inner::{{closure}} (lib.rs:489)
==14674==    by 0x13E413: {closure#1} (lib.rs:516)
==14674==    by 0x13E413: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:122)
==14674== 
==14674== 40 bytes in 1 blocks are still reachable in loss record 2 of 2
==14674==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==14674==    by 0x4CEDF81: geos::geom::GeometryFactory::getDefaultInstance() (in /usr/local/lib/libgeos.so.3.6.5)
==14674==    by 0x4867[30](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:31)6: GEOS_init_r (in /usr/local/lib/libgeos_c.so.1.10.5)
==14674==    by 0x12614E: geos::context_handle::ContextHandle::init_e (context_handle.rs:95)
==14674==    by 0x13400E: geos::spatial_index::STRtree<I>::with_capacity (spatial_index.rs:26)
==14674==    by 0x1[33](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:34)968: geos::spatial_index::test::test_strtree (spatial_index.rs:149)
==14674==    by 0x12CB69: geos::spatial_index::test::test_strtree::{{closure}} (spatial_index.rs:148)
==14674==    by 0x1[34](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:35)99D: core::ops::function::FnOnce::call_once (function.rs:248)
==14674==    by 0x1740F2: call_once<fn(), ()> (function.rs:248)
==14674==    by 0x1740F2: test::__rust_begin_short_backtrace (lib.rs:572)
==14674==    by 0x172DCF: call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (boxed.rs:1940)
==14674==    by 0x172DCF: call_once<(), alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>> (unwind_safe.rs:271)
==14674==    by 0x172DCF: do_call<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panicking.rs:492)
==14674==    by 0x172DCF: try<(), core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>> (panicking.rs:456)
==14674==    by 0x172DCF: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panic.rs:1[37](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:38))
==14674==    by 0x172DCF: run_test_in_process (lib.rs:595)
==14674==    by 0x172DCF: test::run_test::run_test_inner::{{closure}} (lib.rs:489)
==14674==    by 0x13E[41](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:42)3: {closure#1} (lib.rs:516)
==14674==    by 0x13E413: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:122)
==14674==    by 0x1[43](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:44)C66: {closure#0}<test::run_test::run_test_inner::{closure_env#1}, ()> (mod.rs:514)
==14674==    by 0x143C66: call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<test::run_test::run_test_inner::{closure_env#1}, ()>> (unwind_safe.rs:271)
==14674==    by 0x143C66: do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<test::run_test::run_test_inner::{closure_env#1}, ()>>, ()> (panicking.rs:492)
==14674==    by 0x143C66: try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<test::run_test::run_test_inner::{closure_env#1}, ()>>> (panicking.rs:[45](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:46)6)
==1[46](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:47)74==    by 0x143C66: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<test::run_test::run_test_inner::{closure_env#1}, ()>>, ()> (panic.rs:137)
==14674==    by 0x143C66: {closure#1}<test::run_test::run_test_inner::{closure_env#1}, ()> (mod.rs:513)
==14674==    by 0x143C66: core::ops::function::FnOnce::call_once{{vtable-shim}} (function.rs:2[48](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:49))
==14674== 
==14674== LEAK SUMMARY:
==14674==    definitely lost: 0 bytes in 0 blocks
==14674==    indirectly lost: 0 bytes in 0 blocks
==14674==      possibly lost: 0 bytes in 0 blocks
==14674==    still reachable: [56](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:57) bytes in 2 blocks
==14[67](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:68)4==         suppressed: 0 bytes in 0 blocks
==146[74](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:75)== 
==[146](https://github.com/georust/geos/actions/runs/7817187602/job/21324473886#step:15:147)74== For lists of detected and suppressed errors, rerun with: -s

==14674== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

@lnicola
Copy link
Member

lnicola commented Feb 13, 2024

I was looking at the GEOS code and wondering what could be leaking in GeometryFactory::getDefaultInstance, but it turns out it was fixed in 3.8. We could add a suppression, but I'm not sure it's worth running Valgrind on those versions. Looking at https://pkgs.org/search/?q=geos, most distros have newer versions, except Debian 10 (EOL 2022, but still under LTS until July) and CentOS 7 (EOL this year).

The other one is rust-lang/rust#68979, which requires a Valgrind that's newer than 2020. Not sure what's the best way to handle that. Running Valgrind on Ubuntu 22.04 would probably double the resource usage, but the repository is not very active right now.

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

No branches or pull requests

2 participants