Thanks a lot. After about an hour of searching around, I found the RED_ZONE in stack.rs
-- Chandra Sekar.S On Wed, Jul 9, 2014 at 8:36 PM, Alex Crichton <a...@crichton.co> wrote: > By default, each stack is allocated with a "red zone" at the end for > running code on stack overflow, calling C functions, etc. The current > size of the red zone is 20K. > > Requested stack sizes are always at least 20K, but the 20K is not > currently added to the stack size. So for your test case when you > request a 20K stack you're likely getting a ~10 byte stack (explaining > the overflow), and with a 21K stack you get a 1K stack which the task > can run in. > > On Wed, Jul 9, 2014 at 8:13 AM, Chandru <chandru...@gmail.com> wrote: > > Hi, > > > > This piece of code, > > > > #![feature(phase)] > > #[phase(plugin)] > > extern crate green; > > > > use std::io::timer; > > use std::task::TaskBuilder; > > > > green_start!(main) > > > > fn main() { > > for _ in range(0, 10000i) { > > TaskBuilder::new().stack_size(20*1024).spawn(proc() { > > timer::sleep(20000) > > }); > > } > > } > > > > fails with, > > > > task '<unknown>' has overflowed its stack > > Illegal instruction (core dumped) > > > > Changing the stack size to 21K works. Why does such a trivial task > overflow > > 20K of stack? > > > > -- > > Chandra Sekar.S > > > > _______________________________________________ > > Rust-dev mailing list > > Rust-dev@mozilla.org > > https://mail.mozilla.org/listinfo/rust-dev > > >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev