about summary refs log tree commit diff
path: root/src/rt/rust_kernel.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-06-26 20:40:31 -0700
committerbors <bors@rust-lang.org>2013-06-26 20:40:31 -0700
commiteda5e40b79f7aaa51765f59c21a76fe033c937b1 (patch)
tree165de4370c95fdf969a942cd9575d637a71bb7cd /src/rt/rust_kernel.cpp
parent36d7f601d8d419ace8fdf14b2014a9cbf6245896 (diff)
parent8918461fc41576664719c12ce7d655aaad2c78d1 (diff)
downloadrust-eda5e40b79f7aaa51765f59c21a76fe033c937b1.tar.gz
rust-eda5e40b79f7aaa51765f59c21a76fe033c937b1.zip
auto merge of #7111 : brson/rust/stack, r=brson
... through yields

This avoids the following pathological scenario that makes threadring OOM:

1) task calls C using fast_ffi, borrowing a big stack from the scheduler.
2) task returns from C and places the big stack on the task-local stack segment list
3) task calls further Rust functions that require growing the stack, and for this reuses the big stack
4) task yields, failing to return the big stack to the scheduler.
5) repeat 500+ times and OOM

(reopening after incoming fallout. *do not r+*. broken)
Diffstat (limited to 'src/rt/rust_kernel.cpp')
0 files changed, 0 insertions, 0 deletions