Closed
Description
If you compile this program with --opt-level=3 -Zlto
it will occasionally crash:
use std::task;
fn main() { for _ in range(0, 10000000) { task::deschedule(); } }
The best backtrace I've gotten is:
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff53ff2000
Core was generated by `./foo'.
Program terminated with signal 4, Illegal instruction.
#0 0x0000000000407e03 in rt::util::abort::h953774e806dcb5c1am::v0.9 ()
(gdb) thread apply all bt
Thread 3 (Thread 0x7f13a7127700 (LWP 2576)):
#0 0x00007f13a740b219 in syscall () from /usr/lib/libc.so.6
#1 0x000000000049ff9a in uv__epoll_wait ()
#2 0x000000000049e7fe in uv__io_poll ()
#3 0x0000000000499c37 in uv_run ()
#4 0x000000000042c6c2 in sched::Scheduler::run::hd854cc9af95f4347xjau::v0.9 ()
#5 0x00000000004542a5 in __extensions__::new::anon::expr_fn::aR ()
#6 0x00000000004572b5 in rt::thread::Thread::start_stack::anon::expr_fn::_6cavaA ()
#7 0x0000000000425bd4 in rt::thread::thread_start::hb173bf7b3456d2ccao::v0.9 ()
#8 0x00007f13a7afa0a2 in start_thread () from /usr/lib/libpthread.so.0
#9 0x00007f13a740f32d in clone () from /usr/lib/libc.so.6
Thread 2 (Thread 0x7f13a8221740 (LWP 2572)):
#0 0x00007f13a7afb4a2 in pthread_join () from /usr/lib/libpthread.so.0
#1 0x00000000004518e1 in start::anon::expr_fn::aZ ()
#2 0x0000000000425cb8 in rt::task::__extensions__::run::anon::expr_fn::au ()
#3 0x0000000000498f4c in rust_try ()
#4 0x00000000004118aa in rt::task::Task::run::hb037e67c6ebe8541eLar::v0.9 ()
#5 0x00000000004044e1 in main ()
Thread 1 (Thread 0x7f13a81bf700 (LWP 2573)):
#0 0x0000000000407e03 in rt::util::abort::h953774e806dcb5c1am::v0.9 ()
#1 0x000000000042c241 in sched::Callback$SchedRunner::call::he3242c220959de4eFsae::v0.9 ()
#2 0x000000000048400e in async::async_cb::ha91da3e8f1387c33aJ::v0.9 ()
#3 0x00000000004993df in uv__async_event ()
#4 0x0000000000499479 in uv__async_io ()
#5 0x000000000049e907 in uv__io_poll ()
#6 0x0000000000499c37 in uv_run ()
#7 0x000000000042c6c2 in sched::Scheduler::run::hd854cc9af95f4347xjau::v0.9 ()
#8 0x00000000004542a5 in __extensions__::new::anon::expr_fn::aR ()
#9 0x00000000004572b5 in rt::thread::Thread::start_stack::anon::expr_fn::_6cavaA ()
#10 0x0000000000425bd4 in rt::thread::thread_start::hb173bf7b3456d2ccao::v0.9 ()
#11 0x00007f13a7afa0a2 in start_thread () from /usr/lib/libpthread.so.0
#12 0x00007f13a740f32d in clone () from /usr/lib/libc.so.6
(gdb) quit
where thread #1 aborted. I have no idea what's going on here. Somehow the local task is not available when a scheduler wakes up?