Repository navigation
Closed
Closed
Copy link
Labels
I-intermittentProblem reproduces intermittently.Problem reproduces intermittently.
Description
https://github.com/servo/servo/actions/runs/17525238532
▶ CRASH [expected TIMEOUT] /html/anonymous-iframe/indexeddb.tentative.https.window.html
│
│ called `Result::unwrap()` on an `Err` value: Disconnected (thread Script(1,1), at components/script/dom/idbtransaction.rs:117)
│ 0: servoshell::backtrace::print
│ 1: servoshell::panic_hook::panic_hook
│ 2: std::panicking::rust_panic_with_hook
│ 3: std::panicking::begin_panic_handler::{{closure}}
│ 4: std::sys::backtrace::__rust_end_short_backtrace
│ 5: __rustc::rust_begin_unwind
│ 6: core::panicking::panic_fmt
│ 7: core::result::unwrap_failed
│ 8: script::dom::idbtransaction::IDBTransaction::new
│ 9: <script::dom::idbdatabase::IDBDatabase as script_bindings::codegen::GenericBindings::IDBDatabaseBinding::IDBDatabase_Binding::IDBDatabaseMethods<script::dom::bindings::codegen::DomTypeHolder::DomTypeHolder>>::Transaction
│ 10: script_bindings::codegen::GenericBindings::IDBDatabaseBinding::IDBDatabase_Binding::transaction::{{closure}}
│ 11: mozjs::panic::wrap_panic
│ 12: script_bindings::codegen::GenericBindings::IDBDatabaseBinding::IDBDatabase_Binding::transaction
│ 13: CallJitMethodOp
│ 14: script_bindings::utils::generic_call
│ 15: script_bindings::utils::generic_method
│ 16: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
│ 17: _ZN2js9InterpretEP9JSContextRNS_8RunStateE
│ 18: _ZN2js9RunScriptEP9JSContextRNS_8RunStateE
│ 19: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
│ 20: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
│ 21: _ZN2js22CallSelfHostedFunctionEP9JSContextN2JS6HandleIPNS_12PropertyNameEEENS3_INS2_5ValueEEERKNS_13AnyInvokeArgsENS2_13MutableHandleIS7_EE
│ 22: _ZL19AsyncFunctionResumeP9JSContextN2JS6HandleIPN2js28AsyncFunctionGeneratorObjectEEE10ResumeKindNS2_INS1_5ValueEEE
│ 23: _ZL18PromiseReactionJobP9JSContextjPN2JS5ValueE
│ 24: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
│ 25: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
│ 26: _ZN2JS4CallEP9JSContextNS_6HandleINS_5ValueEEES4_RKNS_16HandleValueArrayENS_13MutableHandleIS3_EE
│ 27: script_bindings::codegen::GenericBindings::PromiseBinding::PromiseJobCallback<D>::Call_
│ 28: script::microtask::MicrotaskQueue::checkpoint
│ 29: script::dom::globalscope::GlobalScope::perform_a_microtask_checkpoint
│ 30: core::ptr::drop_in_place<script_bindings::settings_stack::GenericAutoEntryScript<script::dom::bindings::codegen::DomTypeHolder::DomTypeHolder>>
│ 31: core::ptr::drop_in_place<script_bindings::callback::CallSetup<script::dom::bindings::codegen::DomTypeHolder::DomTypeHolder>>
│ 32: script_bindings::codegen::GenericBindings::EventHandlerBinding::EventHandlerNonNull<D>::Call_
│ 33: script::dom::eventtarget::CompiledEventListener::call_or_handle_event
│ 34: script::dom::event::inner_invoke
│ 35: script::dom::event::invoke
│ 36: script::dom::event::Event::dispatch
│ 37: <script::dom::idbopendbrequest::IDBOpenDBRequest::dispatch_success::send_success_notification<F> as script::task::TaskOnce>::run_once
│ 38: <T as script::task::TaskBox>::run_box
│ 39: script::script_thread::ScriptThread::handle_msg_from_script
│ 40: script::script_thread::ScriptThread::profile_event
│ 41: script::script_thread::ScriptThread::handle_msgs
│ 42: script::script_thread::ScriptThread::start
│ 43: std::sys::backtrace::__rust_begin_short_backtrace
│ 44: core::ops::function::FnOnce::call_once{{vtable.shim}}
│ 45: std::sys::pal::unix::thread::Thread::new::thread_start
│ 46: <unknown>
└ 47: <unknown>
Metadata
Metadata
Assignees
Labels
I-intermittentProblem reproduces intermittently.Problem reproduces intermittently.
Activity
gterzian commentedon Sep 12, 2025
The panic results from the sender being dropped, which disconnects the receiver on which script is blocking.
Since the code handling the
SyncOperation::RegisterNewTxndrops the sender if there is no database:servo/components/net/indexeddb/idb_thread.rs
Line 432 in 965e87d
This looks like a race condition between sending
SyncOperation::RegisterNewTxnand creating or destroying the database.arihant2math commentedon Sep 12, 2025
That is a bug, thanks for pointing that out.
mrobinson commentedon Jul 20, 2026
Looks like this one isn't an issue any longer as we haven't seen this flake since March 16th.