Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module specifier parsing failed in webgpu wpt tests #27061

Closed
CYBAI opened this issue Jun 23, 2020 · 10 comments
Closed

Module specifier parsing failed in webgpu wpt tests #27061

CYBAI opened this issue Jun 23, 2020 · 10 comments

Comments

@CYBAI
Copy link
Collaborator

@CYBAI CYBAI commented Jun 23, 2020

@jdm @CYBAI really appreciate you both helping me so much in my project! Thank you!

I replaced the optional-chaining syntax and tested on my local system with the dynamic-module branch rebase over latest master. gpu-test.js compiles successfully. But there is a different panic now (which is unrelated to dynamic module)-

assertion failed: url.is_ok() (thread ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }, at components/script/script_module.rs:1389)
   0: servo::backtrace::print
   1: servo::main::{{closure}}
   2: std::panicking::rust_panic_with_hook
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/libstd/panicking.rs:481
   3: std::panicking::begin_panic
   4: script::script_module::HostResolveImportedModule
   5: _ZN2js21CallModuleResolveHookEP9JSContextN2JS6HandleINS2_5ValueEEENS3_IP8JSStringEE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/ModuleObject.cpp:1698
      _ZN2js25FinishDynamicModuleImportEP9JSContextN2JS6HandleINS2_5ValueEEENS3_IP8JSStringEENS3_IP8JSObjectEE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/ModuleObject.cpp:1781
   6: <T as script::task::TaskBox>::run_box
   7: <script::script_module::ModuleHandler as script::dom::promisenativehandler::Callback>::callback
   8: script::dom::promise::native_handler_callback
   9: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:456
      _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:548
  10: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:634
  11: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_S5_NS2_13MutableHandleIS4_EE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.h:103
      _ZL18PromiseReactionJobP9JSContextjPN2JS5ValueE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/Promise.cpp:1813
  12: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:456
      _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:548
  13: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:634
  14: _Z20JS_CallFunctionValueP9JSContextN2JS6HandleIP8JSObjectEENS2_INS1_5ValueEEERKNS1_16HandleValueArrayENS1_13MutableHandleIS6_EE
             at /home/kunal/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/jsapi.cpp:2689
  15: script::dom::bindings::codegen::Bindings::PromiseBinding::PromiseJobCallback::Call
  16: script::dom::bindings::codegen::Bindings::PromiseBinding::PromiseJobCallback::Call_
  17: script::microtask::MicrotaskQueue::checkpoint
  18: script::script_thread::ScriptThread::handle_msgs
  19: profile_traits::mem::ProfilerChan::run_with_memory_reporting
  20: std::sys_common::backtrace::__rust_begin_short_backtrace
  21: core::ops::function::FnOnce::call_once{{vtable.shim}}
  22: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/liballoc/boxed.rs:1034
      <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/liballoc/boxed.rs:1034
      std::sys::unix::thread::Thread::new::thread_start
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/libstd/sys/unix/thread.rs:87
  23: start_thread
  24: __clone
[2020-06-23T10:41:24Z ERROR servo] assertion failed: url.is_ok()
assertion failed: *self.stack == self as *mut _ as usize as _ (thread ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }, at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/libstd/macros.rs:13)
   0: servo::backtrace::print
   1: servo::main::{{closure}}
   2: std::panicking::rust_panic_with_hook
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/libstd/panicking.rs:481
   3: std::panicking::begin_panic
   4: core::ptr::drop_in_place
   5: script::dom::bindings::codegen::Bindings::PromiseBinding::PromiseJobCallback::Call_
   6: script::microtask::MicrotaskQueue::checkpoint
   7: script::script_thread::ScriptThread::handle_msgs
   8: profile_traits::mem::ProfilerChan::run_with_memory_reporting
   9: std::sys_common::backtrace::__rust_begin_short_backtrace
  10: core::ops::function::FnOnce::call_once{{vtable.shim}}
  11: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/liballoc/boxed.rs:1034
      <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/liballoc/boxed.rs:1034
      std::sys::unix::thread::Thread::new::thread_start
             at /rustc/a74d1862d4d87a56244958416fd05976c58ca1a8/src/libstd/sys/unix/thread.rs:87
  12: start_thread
  13: __clone
[2020-06-23T10:41:24Z ERROR servo] assertion failed: *self.stack == self as *mut _ as usize as _
thread panicked while panicking. aborting.
Stack trace for thread "ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }"

I also realised that we already have test-suite under tests/wpt/web-platform-tests/webgpu. So I tried running them and most of them run successfully (i.e. they fail instead of throwing an Error) except a few that crash with the above panic. I noticed that the URL for those tests end with *.

Also I want to confirm one thing. The tests Fail (instead of Error) after removing the optional chaining operator. Will it be safe to say that there is no more unsupported syntax in the tests? (Also, I did not see any fail to compile module warning in the logs while running the live test, apart from the above panic)

Originally posted by @kunalmohan in #25439 (comment)

@jdm
Copy link
Member

@jdm jdm commented Jun 23, 2020

@kunalmohan Do you have any examples of the URLs that end in *? I haven't found any yet.

@CYBAI
Copy link
Collaborator Author

@CYBAI CYBAI commented Jun 23, 2020

I tried to reproduce this in my local and I found it's an intermittent panic

$ ./mach test-wpt --pref=dom.webgpu.enabled "tests/wpt/web-platform-tests/webgpu/cts.html?q=webgpu:api,validation,createPipelineLayout:*"

With running the test around 10 times, I only got the url.is_ok() once 🤔

@kunalmohan
Copy link
Collaborator

@kunalmohan kunalmohan commented Jun 23, 2020

It panics for me everytime and for the same tests :(
Also (just realised),

./mach test-wpt --pref=dom.webgpu.enabled "tests/wpt/web-platform-tests/webgpu/cts.html?q=webgpu:api,operation,buffers,map_oom:*"

works fine. So maybe it isn't related to *

Others URLs that panic-

/webgpu/cts.html?q=webgpu:api,operation,resource_init,copied_texture_clear:*
/webgpu/cts.html?q=webgpu:api,validation,createBindGroupLayout:*

Does the build profile make a difference? (ideally it should not)
I am running it on release build.

@CYBAI
Copy link
Collaborator Author

@CYBAI CYBAI commented Jun 23, 2020

Interesting! With adding some logs, I saw this while running the tests/wpt/web-platform-tests/webgpu/cts.html?q=webgpu:api,validation,createPipelineLayout:* test.

  │ Invalid specifier string: "\u{0}\u{0}\u{0}\u{0}\u{0}\u{0}\u{0} \u{0}\u{0}\u{0}\u{0}\u{0}\u{0}\u{0} \u{4}\u{0}alidation/createPipelineLayout.spec.js"
  │ parsed specifier: Err(InvalidDomainCharacter)

Also, I confirm this one is parsed by latin1_to_string.

@jdm
Copy link
Member

@jdm jdm commented Jun 24, 2020

I haven't been able to reproduce this problem when running ./mach test-wpt --pref=dom.webgpu.enabled "tests/wpt/web-platform-tests/webgpu/cts.html?q=webgpu:api,validation,createPipelineLayout:*" on a rebased dynamic-module branch with the ?. fixed.

Edit: nevermind, just reproduced it.

@jdm
Copy link
Member

@jdm jdm commented Jun 24, 2020

When I use a debugmozjs build, I see:

 0:07.82 pid:2358 Hit MOZ_CRASH(*** Zone mismatch 0x7f85719aac00 vs. 0xfffe2f2f2f2f2f2f at argument 0) at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:62

I strongly suspect we're holding on to a pointer that gets moved or freed by the GC somewhere.

0:30.86 pid:2358    7: _ZL9MOZ_CrashPKciS0_
 0:30.86 pid:2358              at /Users/jdm/src/master-servo/target/debug/build/mozjs_sys-a6cbd342791b3a7c/out/build/dist/include/mozilla/Assertions.h:332
 0:30.86 pid:2358       _ZN2js13ContextChecks4failEPN2JS4ZoneES3_i
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:61
 0:30.86 pid:2358    8: _ZN2js13ContextChecks5checkEPN2JS4ZoneEi
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:79
 0:30.86 pid:2358    9: _ZN2js13ContextChecks5checkEP8JSStringi
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:118
 0:30.86 pid:2358   10: _ZN9JSContext9checkImplIP8JSStringJEEEviRKT_DpRKT0_
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:202
 0:30.86 pid:2358   11: _ZN9JSContext5checkIJP8JSStringEEEvDpRKT_
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/JSContext-inl.h:210
 0:30.86 pid:2358   12: _Z32JS_GetLatin1StringCharsAndLengthP9JSContextRKN2JS15AutoRequireNoGCEP8JSStringPm
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/jsapi.cpp:4268
 0:30.86 pid:2358   13: mozjs::conversions::latin1_to_string
 0:30.86 pid:2358              at /Users/jdm/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/28248e1/src/conversions.rs:446
 0:31.48 pid:2358   14: script::dom::bindings::conversions::jsstring_to_str
 0:31.48 pid:2358              at /Users/jdm/src/master-servo/components/script/dom/bindings/conversions.rs:225
 0:32.78 pid:2358   15: script::script_module::ModuleTree::resolve_module_specifier
 0:32.78 pid:2358              at /Users/jdm/src/master-servo/components/script/script_module.rs:611
 0:32.78 pid:2358   16: script::script_module::HostResolveImportedModule
 0:32.78 pid:2358              at /Users/jdm/src/master-servo/components/script/script_module.rs:1403
 0:33.13 pid:2358   17: _ZN2js21CallModuleResolveHookEP9JSContextN2JS6HandleINS2_5ValueEEENS3_IP8JSStringEE
 0:33.13 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/ModuleObject.cpp:1698
 0:33.13 pid:2358   18: _ZN2js25FinishDynamicModuleImportEP9JSContextN2JS6HandleINS2_5ValueEEENS3_IP8JSStringEENS3_IP8JSObjectEE
 0:33.13 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/ModuleObject.cpp:1781
 0:33.68 pid:2358   19: _ZN2JS25FinishDynamicModuleImportEP9JSContextNS_6HandleINS_5ValueEEENS2_IP8JSStringEENS2_IP8JSObjectEE
 0:33.68 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Modules.cpp:82
 0:33.68 pid:2358   20: script::script_module::ModuleOwner::finish_dynamic_module
 0:33.68 pid:2358              at /Users/jdm/src/master-servo/components/script/script_module.rs:1027
 0:33.68 pid:2358   21: script::script_module::ModuleTree::append_dynamic_module_handler::{{closure}}
 0:33.68 pid:2358              at /Users/jdm/src/master-servo/components/script/script_module.rs:360
 0:33.68 pid:2358   22: <script::script_module::ModuleTree::append_dynamic_module_handler::fetched_resolve<F> as script::task::TaskOnce>::run_once
 0:33.68 pid:2358              at /Users/jdm/src/master-servo/components/script/task.rs:24
 0:33.68 pid:2358   23: <T as script::task::TaskBox>::run_box
 0:33.68 pid:2358              at /Users/jdm/src/master-servo/components/script/task.rs:57
 0:33.68 pid:2358   24: <script::script_module::ModuleHandler as script::dom::promisenativehandler::Callback>::callback
 0:33.68 pid:2358              at /Users/jdm/src/master-servo/components/script/script_module.rs:879
 0:34.32 pid:2358   25: script::dom::promisenativehandler::PromiseNativeHandler::callback
 0:34.32 pid:2358              at /Users/jdm/src/master-servo/components/script/dom/promisenativehandler.rs:52
 0:34.32 pid:2358   26: script::dom::promisenativehandler::PromiseNativeHandler::resolved_callback
 0:34.32 pid:2358              at /Users/jdm/src/master-servo/components/script/dom/promisenativehandler.rs:57
 0:34.32 pid:2358   27: script::dom::promise::native_handler_callback
 0:34.32 pid:2358              at /Users/jdm/src/master-servo/components/script/dom/promise.rs:309
 0:34.62 pid:2358   28: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE
 0:34.62 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:456
 0:34.62 pid:2358   29: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:34.62 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:548
 0:34.62 pid:2358   30: _ZL12InternalCallP9JSContextRKN2js13AnyInvokeArgsENS1_10CallReasonE
 0:34.62 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:617
 0:34.62 pid:2358   31: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
 0:34.62 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:634
 0:34.62 pid:2358   32: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_S5_NS2_13MutableHandleIS4_EE
 0:34.62 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.h:103
 0:34.89 pid:2358   33: _ZL18PromiseReactionJobP9JSContextjPN2JS5ValueE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/builtin/Promise.cpp:1813
 0:34.89 pid:2358   34: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:456
 0:34.89 pid:2358   35: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:548
 0:34.89 pid:2358   36: _ZL12InternalCallP9JSContextRKN2js13AnyInvokeArgsENS1_10CallReasonE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:617
 0:34.89 pid:2358   37: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/vm/Interpreter.cpp:634
 0:34.89 pid:2358   38: _Z20JS_CallFunctionValueP9JSContextN2JS6HandleIP8JSObjectEENS2_INS1_5ValueEEERKNS1_16HandleValueArrayENS1_13MutableHandleIS6_EE
 0:34.89 pid:2358              at /Users/jdm/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/9a6d8fc/mozjs/js/src/jsapi.cpp:2689
 0:35.33 pid:2358   39: mozjs::rust::wrappers::JS_CallFunctionValue
 0:35.33 pid:2358              at /Users/jdm/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/28248e1/src/rust.rs:1453
 0:35.76 pid:2358   40: script::dom::bindings::codegen::Bindings::PromiseBinding::PromiseJobCallback::Call
 0:35.76 pid:2358              at /Users/jdm/src/master-servo/target/debug/build/script-6d908596c4fcdce2/out/Bindings/PromiseBinding.rs:309
 0:35.76 pid:2358   41: script::dom::bindings::codegen::Bindings::PromiseBinding::PromiseJobCallback::Call_
 0:35.76 pid:2358              at /Users/jdm/src/master-servo/target/debug/build/script-6d908596c4fcdce2/out/Bindings/PromiseBinding.rs:293
 0:36.35 pid:2358   42: script::microtask::MicrotaskQueue::checkpoint
 0:36.35 pid:2358              at /Users/jdm/src/master-servo/components/script/microtask.rs:111
 0:36.75 pid:2358   43: script::script_thread::ScriptThread::perform_a_microtask_checkpoint
 0:36.75 pid:2358              at /Users/jdm/src/master-servo/components/script/script_thread.rs:3877
 0:36.75 pid:2358   44: script::script_thread::ScriptThread::handle_msgs
 0:36.75 pid:2358              at /Users/jdm/src/master-servo/components/script/script_thread.rs:1550
 0:36.75 pid:2358   45: script::script_thread::ScriptThread::start
 0:36.76 pid:2358              at /Users/jdm/src/master-servo/components/script/script_thread.rs:1356
@jdm
Copy link
Member

@jdm jdm commented Jun 24, 2020

I verified my theory by setting a breakpoint at the start of finish_dynamic_module and printing the module specifier data in the debugger (which showed expected values), setting a watchpoint on the string data in member and continuing. The watchpoint triggered in a GC that poisoned the string data which occurred while executing the module.

@jdm
Copy link
Member

@jdm jdm commented Jun 24, 2020

This will be fixed by updating to a version of mozjs that includes servo/mozjs#254.

@CYBAI
Copy link
Collaborator Author

@CYBAI CYBAI commented Jun 25, 2020

@jdm thanks for the fix! Just one question, does that mean the assertion thrown by debugmozjs is a debug_assert-like thing? so I won't get it if I don't set the flag 👀?

@jdm
Copy link
Member

@jdm jdm commented Jun 25, 2020

That is correct.

@jdm jdm mentioned this issue Jun 26, 2020
bors-servo added a commit that referenced this issue Jun 26, 2020
Update mozjs.

Fixes #27045. Fixes #27061.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

3 participants
You can’t perform that action at this time.