While debugging the crash with optimizations enabled, I noticed that on OS X esp was not 16 byte aligned at the start of _rust_fn3_main.
As a hack to find the remaining problems I added a
rust_sp -= 12;
to rust_task::start, but a more complete accounting of the used stack is needed.