Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upassertion failed: RUST_JSID_IS_STRING(id) #18468
Comments
|
This triggers the assertion: <script>delete localStorage[5]</script> |
|
Given that the failing function is called |
|
@jdm I can take a look at this. |
|
Great! The code in question is generated from CodegenRust.py. please ask questions if anything is unclear! |
|
hi @jdm i am a bit lost and need guidance
also is there something that gives an overview of how the repo is organized and what its doing(purpose of codegen, why python, other relevant stuff for this issue) |
|
@jdm I am still not sure what the desired behavior should be.
|
|
This is the code that is generating the |
|
I recommend matching on the result of that and returning false if it's None. |
|
I think this is fixed. I created a test page with the source code |
|
@ysimonson what about |
|
Panic!
(For posterity: while the error message shows up immediately, the backtrace does not show up until you close the window.) |
|
Looks like that comes from this code. The equivalent Gecko code calls a function that indicates whether a symbol is present or not. |
|
We should probably make our implementation of jsid_to_string match Gecko's ConvertIdToString implementation. |
Found on 101xp.com, 100% reproducible (
currently reducing a testcasejdm found the issue immediately).Crashing JS snippet:
delete localStorage[5]- "deleting localStorage objects using a key that is not a string violates an assumption that we made" (Source: jdm on IRC)assertion failed: RUST_JSID_IS_STRING(id) (thread ScriptThread PipelineId { namespace_id: PipelineNamespaceId(0), index: PipelineIndex(0) }, at /shared/dev/rust/servo/components/script/dom/bindings/conversions.rs:144) stack backtrace: 0: 0x558367ec92e4 - backtrace::backtrace::libunwind::trace at /shared/dev/rust/servo/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/libunwind.rs:53 - backtrace::backtrace::trace<closure> at /shared/dev/rust/servo/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/mod.rs:42 1: 0x558367ec386f - backtrace::capture::{{impl}}::new at /shared/dev/rust/servo/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/capture.rs:64 2: 0x5583635f6ccc - servo::main::{{closure}} at /shared/dev/rust/servo/ports/servo/main.rs:130 3: 0x55836a8dd316 - std::panicking::rust_panic_with_hook at /checkout/src/libstd/panicking.rs:612 4: 0x5583660282d6 - std::panicking::begin_panic<&str> at /checkout/src/libstd/panicking.rs:572 5: 0x558365a98a21 - script::dom::bindings::conversions::string_jsid_to_string at /shared/dev/rust/servo/components/script/dom/bindings/conversions.rs:144 6: 0x558367ad5808 - script::dom::bindings::codegen::Bindings::StorageBinding::StorageBinding::delete::{{closure}} at /shared/dev/rust/servo/target/debug/build/script-d00ee28330b6ecd4/out/Bindings/StorageBinding.rs:990 7: 0x55836763163f - core::ops::function::FnOnce::call_once<closure,()> at /checkout/src/libcore/ops/function.rs:223 8: 0x5583672d4e75 - std::panic::{{impl}}::call_once<bool,closure> at /checkout/src/libstd/panic.rs:296 9: 0x5583661c0d94 - std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure>,bool> at /checkout/src/libstd/panicking.rs:480 10: 0x55836a8e43bc - panic_unwind::__rust_maybe_catch_panic at /checkout/src/libpanic_unwind/lib.rs:99 11: 0x558366106bd5 - std::panicking::try<bool,std::panic::AssertUnwindSafe<closure>> at /checkout/src/libstd/panicking.rs:459 12: 0x558367504749 - std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure>,bool> at /checkout/src/libstd/panic.rs:361 13: 0x5583673ab292 - js::panic::wrap_panic<std::panic::AssertUnwindSafe<closure>,bool> at /shared/dev/rust/servo/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/3de4ff3/src/panic.rs:22 14: 0x55836724056f - script::dom::bindings::codegen::Bindings::StorageBinding::StorageBinding::delete at /shared/dev/rust/servo/target/debug/build/script-d00ee28330b6ecd4/out/Bindings/StorageBinding.rs:989 15: 0x558368111d29 - _ZNK22ForwardingProxyHandler7delete_EP9JSContextN2JS6HandleIP8JSObjectEENS3_I4jsidEERNS2_14ObjectOpResultE at /shared/dev/rust/servo/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/3de4ff3/src/jsglue.cpp:410 16: 0x55836866a4a7 - _ZN2js5Proxy7delete_EP9JSContextN2JS6HandleIP8JSObjectEENS4_I4jsidEERNS3_14ObjectOpResultE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/proxy/Proxy.cpp:160 17: 0x55836866c6ea - _ZN2js20proxy_DeletePropertyEP9JSContextN2JS6HandleIP8JSObjectEENS3_I4jsidEERNS2_14ObjectOpResultE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/proxy/Proxy.cpp:602 18: 0x5583684fc972 - _ZN2js14DeletePropertyEP9JSContextN2JS6HandleIP8JSObjectEENS3_I4jsidEERNS2_14ObjectOpResultE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/jsobjinlines.h:225 19: 0x558368766aff - Interpret at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:2502 20: 0x55836875c055 - _ZN2js9RunScriptEP9JSContextRNS_8RunStateE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:399 21: 0x55836875c4a2 - _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:471 22: 0x55836875c6fa - InternalCall at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:498 23: 0x55836875c78c - _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:517 24: 0x55836856e384 - _ZN2js9fun_applyEP9JSContextjPN2JS5ValueE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/jsfun.cpp:1325 25: 0x55836878df7b - _ZN2js12CallJSNativeEP9JSContextPFbS1_jPN2JS5ValueEERKNS2_8CallArgsE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/jscntxtinlines.h:232 26: 0x55836875c3d3 - _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:453 27: 0x55836875c6fa - InternalCall at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:498 28: 0x55836875c724 - _ZN2js13CallFromStackEP9JSContextRKN2JS8CallArgsE at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/vm/Interpreter.cpp:504 29: 0x55836814b880 - DoCallFallback at /shared/dev/rust/servo/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/834ce35/mozjs/js/src/jit/BaselineIC.cpp:5970 30: 0x7f6fa993fe23 - <unknown> ERROR:servo: assertion failed: RUST_JSID_IS_STRING(id) Pipeline failed in hard-fail mode. Crashing!