Skip to content

Intermittent CRASH in /html/anonymous-iframe/indexeddb.tentative.https.window.html #39254

Closed

Description

@arihant2math

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>

Activity

  1. gterzian commented on Sep 12, 2025

    @gterzian
    Member

    The panic results from the sender being dropped, which disconnects the receiver on which script is blocking.

    Since the code handling the SyncOperation::RegisterNewTxn drops the sender if there is no database:

    SyncOperation::RegisterNewTxn(sender, origin, db_name) => {

    This looks like a race condition between sending SyncOperation::RegisterNewTxn and creating or destroying the database.

  2. arihant2math commented on Sep 12, 2025

    @arihant2math
    ContributorAuthor

    Since the code handling the SyncOperation::RegisterNewTxn drops the sender if there is no database:

    That is a bug, thanks for pointing that out.

  3. mrobinson commented on Jul 20, 2026

    @mrobinson
    Member

    Looks like this one isn't an issue any longer as we haven't seen this flake since March 16th.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-intermittentProblem reproduces intermittently.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions