Skip to content

Thread exit results in panic #7813

@roryyorke

Description

@roryyorke

Summary

Running this script (ex6.py in the Bash examples below):

import threading
import time

def runner():
    print('runner done')

threading.Thread(target=runner).start()
time.sleep(1)
print('main done')

results in:

runner done

thread '<unnamed>' (453342) panicked at crates/vm/src/vm/thread.rs:451:13:
push_thread_frame called without initialized thread slot
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
main done

Expected

No panic or other errors; e.g., running with Python 3.14.4 as sanity check:

$ python ex6.py 
runner done
main done

Detail

Python version:

  $ python -V
  Python 3.14.4
  $ python ex6.py 
  runner done
  main done

Rust, RustPython, and system info:

  $ rustc --version
  rustc 1.95.0 (59807616e 2026-04-14)
  $ uname -a
  Linux rory-lenovo 6.12.74+deb13+1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.74-2 (2026-03-08) x86_64 GNU/Linux
  $ lsb_release -a
  No LSB modules are available.
  Distributor ID:	Debian
  Description:	Debian GNU/Linux 13 (trixie)
  Release:	13
  Codename:	trixie
  $ git log -1 --format=%H
  e10a27b1aef0c220ad704df137928094ebbd910b
  $ cargo run -- ex6.py 
  warning: /home/roryy/src/RustPython/crates/stdlib/Cargo.toml: unused manifest key: dependencies.libz-sys.package
      Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
       Running `target/debug/rustpython ex6.py`
  runner done

  thread '<unnamed>' (453342) panicked at crates/vm/src/vm/thread.rs:451:13:
  push_thread_frame called without initialized thread slot
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
  main done

Full backtrace

Full backtrace
  $ RUST_BACKTRACE=full cargo run -- ex6.py 
  warning: /home/roryy/src/RustPython/crates/stdlib/Cargo.toml: unused manifest key: dependencies.libz-sys.package
      Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.16s
       Running `target/debug/rustpython ex6.py`
  runner done

  thread '<unnamed>' (453372) panicked at crates/vm/src/vm/thread.rs:451:13:
  push_thread_frame called without initialized thread slot
  stack backtrace:
     0:     0x558c814310da - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
     1:     0x558c814310da - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
     2:     0x558c814310da - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
     3:     0x558c814310da - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
     4:     0x558c8144c2ea - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
     5:     0x558c8144c2ea - core[c1f1a4ba060b9bfa]::fmt::write
     6:     0x558c814382c2 - std[e28293b1aa0f68bd]::io::default_write_fmt::<std[e28293b1aa0f68bd]::sys::stdio::unix::Stderr>
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
     7:     0x558c814382c2 - <std[e28293b1aa0f68bd]::sys::stdio::unix::Stderr as std[e28293b1aa0f68bd]::io::Write>::write_fmt
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
     8:     0x558c81416f8f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
     9:     0x558c81416f8f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
    10:     0x558c8142b001 - std[e28293b1aa0f68bd]::panicking::default_hook
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:319:9
    11:     0x558c8142b27b - std[e28293b1aa0f68bd]::panicking::panic_with_hook
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:825:13
    12:     0x558c8141707a - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13
    13:     0x558c8140e4b9 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
    14:     0x558c81417d3d - __rustc[b7974e8690430dd9]::rust_begin_unwind
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
    15:     0x558c8144cc7c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
    16:     0x558c7f9ca54c - rustpython_vm::vm::thread::push_thread_frame::{{closure}}::h9a55a30508c74d73
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:451:13
    17:     0x558c7f988108 - std::thread::local::LocalKey<T>::try_with::h3eb39a29d948c305
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:513:12
    18:     0x558c7f986a84 - std::thread::local::LocalKey<T>::with::haa3e210cdae4f4ae
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:477:20
    19:     0x558c804e6e45 - rustpython_vm::vm::thread::push_thread_frame::h6ecd2a602b90a6ad
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:447:25
    20:     0x558c8064e858 - rustpython_vm::vm::VirtualMachine::with_frame_impl::{{closure}}::hce72d59efaabb717
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/mod.rs:1597:13
    21:     0x558c8064a938 - rustpython_vm::vm::VirtualMachine::with_recursion::h7aaf960d17ec0007
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/mod.rs:1564:9
    22:     0x558c8064dfdf - rustpython_vm::vm::VirtualMachine::with_frame_impl::hfb9ad1838e2f963d
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/mod.rs:1589:14
    23:     0x558c80636659 - rustpython_vm::vm::VirtualMachine::with_frame::h5aa392b2b8eab6da
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/mod.rs:1572:14
    24:     0x558c8008a353 - rustpython_vm::vm::VirtualMachine::run_frame::hadfdd6d19ac6ba8b
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/mod.rs:1206:20
    25:     0x558c8008a353 - rustpython_vm::builtins::function::<impl rustpython_vm::object::core::Py<rustpython_vm::builtins::function::PyFunction>>::invoke_with_locals::hd560793cc4f49ab4
                                 at /home/roryy/src/RustPython/crates/vm/src/builtins/function.rs:600:33
    26:     0x558c7fa7bb83 - rustpython_vm::builtins::function::<impl rustpython_vm::object::core::Py<rustpython_vm::builtins::function::PyFunction>>::invoke::hb2f14bd118523189
                                 at /home/roryy/src/RustPython/crates/vm/src/builtins/function.rs:614:14
    27:     0x558c7fa7bb83 - <rustpython_vm::builtins::function::PyFunction as rustpython_vm::types::slot::Callable>::call::hb01d88448a6e355a
                                 at /home/roryy/src/RustPython/crates/vm/src/builtins/function.rs:1095:14
    28:     0x558c803b504c - rustpython_vm::types::slot::Callable::slot_call::h73b1d41c4f85526e
                                 at /home/roryy/src/RustPython/crates/vm/src/types/slot.rs:1716:9
    29:     0x558c801bb523 - rustpython_vm::protocol::callable::PyCallable::invoke::h239bd01fec5ed8ae
                                 at /home/roryy/src/RustPython/crates/vm/src/protocol/callable.rs:78:20
    30:     0x558c80099169 - rustpython_vm::protocol::callable::<impl rustpython_vm::object::core::PyObject>::call_with_args::hf69f9126d932a6b1
                                 at /home/roryy/src/RustPython/crates/vm/src/protocol/callable.rs:34:18
    31:     0x558c80cbe21d - rustpython_vm::protocol::callable::<impl rustpython_vm::object::core::PyObject>::call::hc5fcc8cea075e08a
                                 at /home/roryy/src/RustPython/crates/vm/src/protocol/callable.rs:23:14
    32:     0x558c80b7ad59 - rustpython_vm::object::core::WeakRefList::clear::{{closure}}::h8abbfce39140754a
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:704:28
    33:     0x558c7f9ccb33 - rustpython_vm::vm::thread::with_vm::{{closure}}::{{closure}}::h0dcfccc8ed7f7be7
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:611:36
    34:     0x558c7f9c8cde - rustpython_vm::vm::thread::set_current_vm::{{closure}}::h749b486a8111273f
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:107:9
    35:     0x558c7f989721 - std::thread::local::LocalKey<T>::try_with::h77a82125cd80ee40
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:513:12
    36:     0x558c7f985fcf - std::thread::local::LocalKey<T>::with::h3f3f9419f30342ca
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:477:20
    37:     0x558c7f9c8964 - rustpython_vm::vm::thread::set_current_vm::h94fe2d1a90982e7d
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:102:14
    38:     0x558c7f9cbd69 - rustpython_vm::vm::thread::with_vm::{{closure}}::h0bc2a9f8d3584293
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:611:14
    39:     0x558c7f987721 - std::thread::local::LocalKey<T>::try_with::h0e49d9f88738f7c7
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:513:12
    40:     0x558c7f985ea9 - std::thread::local::LocalKey<T>::with::h351c64da86e936e1
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:477:20
    41:     0x558c7f9cba52 - rustpython_vm::vm::thread::with_vm::h1238fac720c54d50
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:597:14
    42:     0x558c8007005d - rustpython_vm::object::core::WeakRefList::clear::hab824a1bf21d8534
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:703:13
    43:     0x558c80b83d77 - rustpython_vm::object::core::PyObject::drop_slow_inner::h0f2225086edac94a
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1697:17
    44:     0x558c80b83d77 - rustpython_vm::object::core::default_dealloc::h396fec5c2fa0a7fe
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:160:30
    45:     0x558c80077e60 - rustpython_vm::object::core::PyObject::drop_slow::h3f712db8da39d909
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1707:18
    46:     0x558c7ff89b77 - <rustpython_vm::object::core::PyObjectRef as core::ops::drop::Drop>::drop::h13a640b305c7947c
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1891:22
    47:     0x558c7ff6588a - core::ptr::drop_in_place<rustpython_vm::object::core::PyObjectRef>::ha67c54f8f224a3aa
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:805:1
    48:     0x558c7ff69f47 - core::ptr::drop_in_place<rustpython_vm::builtins::function::PyBoundMethod>::h089d2e4d01acebb4
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:805:1
    49:     0x558c7ff46d40 - core::ptr::drop_in_place<rustpython_vm::object::core::PyInner<rustpython_vm::builtins::function::PyBoundMethod>>::h364c8cbce21fc991
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:805:1
    50:     0x558c80c944a9 - rustpython_vm::object::core::PyInner<T>::dealloc::hf1fbc9b2ae9c722b
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1032:17
    51:     0x558c80b8734d - rustpython_vm::object::core::default_dealloc::h485170c14d6fb585
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:213:18
    52:     0x558c80077e60 - rustpython_vm::object::core::PyObject::drop_slow::h3f712db8da39d909
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1707:18
    53:     0x558c7ff89b77 - <rustpython_vm::object::core::PyObjectRef as core::ops::drop::Drop>::drop::h13a640b305c7947c
                                 at /home/roryy/src/RustPython/crates/vm/src/object/core.rs:1891:22
    54:     0x558c7ff6588a - core::ptr::drop_in_place<rustpython_vm::object::core::PyObjectRef>::ha67c54f8f224a3aa
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:805:1
    55:     0x558c7ff686db - core::ptr::drop_in_place<rustpython_vm::function::protocol::ArgCallable>::h120663b694dfcff5
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:805:1
    56:     0x558c801ae9d4 - rustpython_vm::stdlib::_thread::_thread::start_joinable_thread::{{closure}}::h34f8a3c96ee45ced
                                 at /home/roryy/src/RustPython/crates/vm/src/stdlib/_thread.rs:1713:13
    57:     0x558c7f9cac4c - rustpython_vm::vm::thread::ThreadedVirtualMachine::run::{{closure}}::h70750d855805159b
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:655:25
    58:     0x558c7f9c8b4d - rustpython_vm::vm::thread::set_current_vm::{{closure}}::h0b0cdf12c10a6381
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:107:9
    59:     0x558c7f98b006 - std::thread::local::LocalKey<T>::try_with::hbe260099263bf5fc
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:513:12
    60:     0x558c7f985f4f - std::thread::local::LocalKey<T>::with::h389ee21345df2ff3
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:477:20
    61:     0x558c7f9c89de - rustpython_vm::vm::thread::set_current_vm::hd77e69f1d5dd6f73
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:102:14
    62:     0x558c7f9ccf66 - rustpython_vm::vm::thread::enter_vm::hb02bd28993050422
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:132:5
    63:     0x558c7f9caacc - rustpython_vm::vm::thread::ThreadedVirtualMachine::run::h445959a5464ea962
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:655:9
    64:     0x558c7f9ca9db - rustpython_vm::vm::thread::ThreadedVirtualMachine::make_spawn_func::{{closure}}::h77d674b8d9a47679
                                 at /home/roryy/src/RustPython/crates/vm/src/vm/thread.rs:635:22
    65:     0x558c80b1f8b7 - std::sys::backtrace::__rust_begin_short_backtrace::h4fc065878f08b018
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:166:18
    66:     0x558c7fd9717f - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::he687faa22c12cd6c
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/lifecycle.rs:91:13
    67:     0x558c804ae2e4 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4b5560f0771cb912
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
    68:     0x558c809d4674 - std::panicking::catch_unwind::do_call::h3c1aebc65ce5a775
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
    69:     0x558c7fd97dab - __rust_try
    70:     0x558c7fd96605 - std::panicking::catch_unwind::h6c8b91867e3dac8f
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
    71:     0x558c7fd96605 - std::panic::catch_unwind::h2c48a65fb5ddee86
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
    72:     0x558c7fd96605 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h2e6d34f44831ee59
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/lifecycle.rs:89:26
    73:     0x558c7fec241f - core::ops::function::FnOnce::call_once{{vtable.shim}}::h3d70846e68ab052d
                                 at /home/roryy/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
    74:     0x558c8143035f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
    75:     0x558c8143035f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
                                 at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
    76:     0x7f0d0dc27b7b - <unknown>
    77:     0x7f0d0dca57f8 - <unknown>
    78:                0x0 - <unknown>
  main done

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions