Open petersohn opened 2 months ago
Here's another likely-related stacktrace I experienced today using different data:
thread 'Async Compute Task Pool (2)' panicked at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/vec_set.rs:29:14:
segment not found in active-vec-set: 5
stack backtrace:
0: rust_begin_unwind
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:647:5
1: core::panicking::panic_fmt
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/panicking.rs:72:14
2: core::result::unwrap_failed
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/result.rs:1649:5
3: core::result::Result<T,E>::expect
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/result.rs:1030:23
4: geo::algorithm::sweep::vec_set::VecSet<geo::algorithm::sweep::active::Active<T>>::index_of
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/vec_set.rs:27:9
5: geo::algorithm::sweep::proc::Sweep<C>::handle_event
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/proc.rs:232:30
6: geo::algorithm::sweep::proc::Sweep<C>::next_event::{{closure}}
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/proc.rs:46:13
7: core::option::Option<T>::map
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/option.rs:1072:29
8: geo::algorithm::sweep::proc::Sweep<C>::next_event
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/proc.rs:44:9
9: <geo::algorithm::sweep::iter::CrossingsIter<C> as core::iter::traits::iterator::Iterator>::next
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/sweep/iter.rs:170:26
10: geo::algorithm::bool_ops::op::Proc<T,S>::sweep
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/bool_ops/op.rs:68:30
11: <geo_types::geometry::multi_polygon::MultiPolygon<T> as geo::algorithm::bool_ops::BooleanOps>::boolean_op
at /Users/brianreavis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.27.0/src/algorithm/bool_ops/mod.rs:94:9
12: geo::algorithm::bool_ops::BooleanOps::intersection
Hi, I encountered a similar bug:
use geo::{BooleanOps, Polygon, LineString, Coord};
fn main() {
let poly1 = Polygon::new(
LineString::new(vec![
Coord {
x: -10339459.518507583,
y: 3672178.7824083967,
},
Coord {
x: -10172502.686420029,
y: 3169028.9498966974,
},
Coord {
x: -10002503.513328442,
y: 3498113.19617442,
},
]),
vec![],
);
let poly2 = Polygon::new(
LineString::new(vec![
Coord {
x: -10644125.090349106,
y: 3510000.058398463,
},
Coord {
x: -10010375.27222986,
y: 3502179.60931681,
},
Coord {
x: -10018249.493188547,
y: 3506247.294314978,
},
Coord {
x: -10018249.49318854,
y: 3506247.294314993,
},
Coord {
x: -10320063.446714956,
y: 3765929.7827082784,
}
]),
vec![],
);
poly2.union(&poly1);
}
with stack trace:
thread 'main' panicked at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/vec_set.rs:29:14:
segment not found in active-vec-set: 1
stack backtrace:
0: rust_begin_unwind
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:645:5
1: core::panicking::panic_fmt
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:72:14
2: core::result::unwrap_failed
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/result.rs:1654:5
3: core::result::Result<T,E>::expect
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/result.rs:1034:23
4: geo::algorithm::sweep::vec_set::VecSet<geo::algorithm::sweep::active::Active<T>>::index_of
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/vec_set.rs:27:9
5: geo::algorithm::sweep::proc::Sweep<C>::handle_event
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/proc.rs:232:30
6: geo::algorithm::sweep::proc::Sweep<C>::next_event::{{closure}}
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/proc.rs:46:13
7: core::option::Option<T>::map
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/option.rs:1073:29
8: geo::algorithm::sweep::proc::Sweep<C>::next_event
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/proc.rs:44:9
9: <geo::algorithm::sweep::iter::CrossingsIter<C> as core::iter::traits::iterator::Iterator>::next
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/sweep/iter.rs:170:26
10: geo::algorithm::bool_ops::op::Proc<T,S>::sweep
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/bool_ops/op.rs:81:30
11: <geo_types::geometry::polygon::Polygon<T> as geo::algorithm::bool_ops::BooleanOps>::boolean_op
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/bool_ops/mod.rs:69:9
12: geo::algorithm::bool_ops::BooleanOps::union
at /home/arenaud/.cargo/registry/src/index.crates.io-6f17d22bba15001f/geo-0.28.0/src/algorithm/bool_ops/mod.rs:33:9
13: crashpolygeo::main
at ./src/main.rs:46:5
14: core::ops::function::FnOnce::call_once
at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/ops/function.rs:250:5
The following code panics. It tries to calculate
clip
for two geometries: aMultiPolygon
containing two polygons that share a common edge, and aMultiLineString
(I could reduce the latter to a single line segment).The data is from OpenStreetMap. Here is a link to the geometries. The line is the segment of the line on the map that intersects the common edge of the areas.
Here is a backtrace.