4

I wish to verify with the Rust expert this simple Rust program (rustc 0.13.0-nightly on Linux x86-64 system):

/*
the runtime error is:
task '<main>' has overflowed its stack
Illegal instruction (core dumped)
*/

fn main() {
    let l = [0u, ..1_000_000u];
}

The compile process ends perfectly with no error but at runtime the program failed with the error shown in the code comment.

Is there a limit to the dimension of fixed size array in Rust or is this a bug somewhere in the compiler?

Matthieu M.
  • 287,565
  • 48
  • 449
  • 722
robitex
  • 503
  • 1
  • 4
  • 11

1 Answers1

7

Rust has a default stack size of 2MiB, you are just running out of stack space:

fn main() {
    println!("min_stack = {}", std::rt::min_stack());
}

To allocate the array of that size you have to allocate it on the heap using box:

fn main() {
    let l = box [0u, ..1_000_000u];
}
Arjan
  • 19,957
  • 2
  • 55
  • 48