13bf4f38c6
The callback IsolateData::ModuleResolveCallback, used by the fuzzer,
can return an empty MaybeLocal.
In this case v8::internal::SourceTextModule::PrepareInstantiate expects
it to have thrown an exception, and DCHECKs.
The fuzzer can hit this case because it doesn't load the entire module
graph before starting to tell V8 to instantiate modules. So if a module
fails to compile or load, another module trying to import it will hit
this DCHECK because we didn't bail out prior to module instantiation
like we should have.
This doesn't happen in Chromium because Blink loads the entire module
graph before trying to instantiate/link modules, ensuring that the
'real' ModuleRecord::ResolveModuleCallback never fails; indeed this is
mandated by the spec (see
https://html.spec.whatwg.org/#fetch-the-descendants-of-and-link-a-module-script).
To satisfy the fuzzer, this change makes
IsolateData::ModuleResolveCallback throw if it can't find the module.
Note, the bug's testcase doesn't involve import assertions. I don't
think this issue is new with my change
|
||
---|---|---|
.. | ||
console | ||
counters | ||
cpu-profiler | ||
debugger | ||
heap-profiler | ||
regress | ||
runtime | ||
runtime-call-stats | ||
sessions | ||
type-profiler | ||
BUILD.gn | ||
DEPS | ||
DIR_METADATA | ||
frontend-channel.h | ||
inspector-test.cc | ||
inspector.status | ||
isolate-data.cc | ||
isolate-data.h | ||
json-parse-expected.txt | ||
json-parse.js | ||
OWNERS | ||
print-method-not-found-expected.txt | ||
print-method-not-found.js | ||
protocol-test.js | ||
task-runner.cc | ||
task-runner.h | ||
tasks.cc | ||
tasks.h | ||
testcfg.py | ||
utils.cc | ||
utils.h | ||
wasm-inspector-test.js |