vcombey / fallible_collections

impl fallible collections in rust, quite as describe in RFC 2116
Apache License 2.0
31 stars 14 forks source link

Issues with rust 1.65 #30

Closed glandium closed 1 year ago

glandium commented 1 year ago

Building Firefox with rust 1.65 leads to crashes in our test suites where fallible_collections::vec::vec_try_extend would hit the "Invalid layout" case in https://github.com/vcombey/fallible_collections/blob/master/src/vec.rs#L486 where it wouldn't with earlier versions of rust (most likely due to https://github.com/rust-lang/rust/pull/95295)

Then I cloned the repo and just ran cargo test, which failed with SIGILL: illegal instruction on this backtrace:

#0  core::hint::unreachable_unchecked () at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/hint.rs:103
#1  0x000055555556b3b0 in core::result::Result<core::alloc::layout::Layout, core::alloc::layout::LayoutError>::unwrap_unchecked<core::alloc::layout::Layout, core::alloc::layout::LayoutError> (self=...) at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/result.rs:1530
#2  0x000055555557ad32 in alloc::raw_vec::RawVec<u8, alloc::alloc::Global>::current_memory<u8, alloc::alloc::Global> (self=0x7ffff663f7d8)
    at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/alloc/src/raw_vec.rs:247
#3  0x000055555557e00b in alloc::raw_vec::{impl#3}::drop<u8, alloc::alloc::Global> (self=0x7ffff663f7d8)
    at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/alloc/src/raw_vec.rs:478
#4  0x000055555557d87a in core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8, alloc::alloc::Global>> ()
    at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ptr/mod.rs:487
#5  0x000055555557d6ab in core::ptr::drop_in_place<alloc::vec::Vec<u8, alloc::alloc::Global>> ()
    at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ptr/mod.rs:487
#6  0x000055555556e0db in fallible_collections::vec::tests::try_clone_oom () at src/vec.rs:829
#7  0x0000555555578f1a in fallible_collections::vec::tests::try_clone_oom::{closure#0} () at src/vec.rs:824
#8  0x000055555557d36e in core::ops::function::FnOnce::call_once<fallible_collections::vec::tests::try_clone_oom::{closure_env#0}, ()> ()