Skip to content

Out-of-stack failure leaks arguments #3555

Closed
@brson

Description

@brson

This is a major bummer.

// error-pattern:ran out of stack
fn main() {
    eat(move ~0);
}

fn eat(
    +a: ~int
) {
    eat(move a)
}
rust: task 66d35f0 ran out of stack
rust: domain main @0x66d1f40 root task failed
leaked memory in rust main loop (1 objects)
out-of-stack-owned-box.stage1-x86_64-unknown-linux-gnu: /home/brian/dev/rust/src/rt/memory_region.cpp:172: memory_region::~memory_region(): Assertion `false' failed.
==26532== 40 bytes in 1 blocks are definitely lost in loss record 2 of 5
==26532==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26532==    by 0x52A8B08: memory_region::malloc(unsigned long, char const*, bool) (memory_region.cpp:110)
==26532==    by 0x5290B51: upcall_s_exchange_malloc (rust_upcall.cpp:153)
==26532==    by 0x52A944C: ??? (in /home/brian/dev/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustc/x86_64-unknown-linux-gnu/lib/librustrt.so)
==26532== 

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-runtimeArea: std's runtime and "pre-main" init for handling backtraces, unwinds, stack overflows

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions