Skip to content

Vec backing buffer leaks on panic during into_iter #69770

Closed

Description

@RalfJung

When running the test_into_iter_leak test in Miri, it complains about a memory leak:

note: created allocation with id 228443
   --> /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/liballoc/alloc.rs:81:47
    |
81  |     __rust_alloc(layout.size(), layout.align())
    |                                               ^ created allocation with id 228443
    |
    = note: inside call to `std::alloc::alloc` at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/liballoc/alloc.rs:169:22
    = note: inside call to `<std::alloc::Global as std::alloc::AllocRef>::alloc` at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/liballoc/alloc.rs:203:15
note: inside call to `alloc::alloc::exchange_malloc` at <::alloc::macros::vec macros>:2:46
   --> alloc_miri_test/../liballoc/tests/vec.rs:786:13
    |
786 |     let v = vec![D(false), D(true), D(false)];
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside call to `vec::test_into_iter_leak` at alloc_miri_test/../liballoc/tests/vec.rs:769:1
   --> alloc_miri_test/../liballoc/tests/vec.rs:769:1
    |
769 | / fn test_into_iter_leak() {
770 | |     static mut DROPS: i32 = 0;
771 | |
772 | |     struct D(bool);
...   |
790 | |     assert_eq!(unsafe { DROPS }, 3);
791 | | }
    | |_^

### LEAK REPORT ###
Alloc 228443: 00 01 00 (3 bytes, alignment 1) (Rust)

Given that the leaked allocation contains "00 01 00", that seems a lot like the backing store of a Vec with initial content D(false), D(true), D(false).

Activity

  1. added
    A-collectionsArea: `std::collections` (prefer A-binaryheap, A-btree, A-hashtable, A-linkedlist, A-vecdeque)
    T-libs-api[DEPRECATED; DO NOT USE]
    C-bugCategory: This is a bug.
    on Mar 6, 2020
  2. added a commit that references this issue on Mar 11, 2020
  3. added
    A-slice-vecArea: `[T]` and `Vec<T>`
    and removed
    A-collectionsArea: `std::collections` (prefer A-binaryheap, A-btree, A-hashtable, A-linkedlist, A-vecdeque)
    on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-slice-vecArea: `[T]` and `Vec<T>`C-bugCategory: This is a bug.T-libs-api[DEPRECATED; DO NOT USE]

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions