Skip to content

require.resolve crashes if first param is a relative path and the paths array contains an object #47698

Closed
@nicolo-ribaudo

Description

@nicolo-ribaudo

Version

18.16.0, 20.0.0

Platform

Darwin Nics-Air.home 22.4.0 Darwin Kernel Version 22.4.0: Mon Mar 6 21:01:02 PST 2023; root:xnu-8796.101.5~3/RELEASE_ARM64_T8112 arm64

Subsystem

No response

What steps will reproduce the bug?

node -e "require.resolve('./a', { paths: [{}] })"

How often does it reproduce? Is there a required condition?

Always

What is the expected behavior? Why is that the expected behavior?

It should report a JS error, not crash

What do you see instead?

node[38018]: ../src/node_file.cc:1103:void node::fs::InternalModuleStat(const FunctionCallbackInfo<v8::Value> &): Assertion `args[0]->IsString()' failed.
 1: 0x1002c94fc node::Abort() [/usr/local/bin/node]
 2: 0x1002c92c8 node::PrintCaughtException(v8::Isolate*, v8::Local<v8::Context>, v8::TryCatch const&) [/usr/local/bin/node]
 3: 0x1002d87fc node::fs::Stat(v8::FunctionCallbackInfo<v8::Value> const&) [/usr/local/bin/node]
 4: 0x10048fa1c v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [/usr/local/bin/node]
 5: 0x10048f518 v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [/usr/local/bin/node]
 6: 0x10048ed44 v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
 7: 0x100c7d18c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit [/usr/local/bin/node]
 8: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
 9: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
10: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
11: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
12: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
13: 0x100c064d0 Builtins_JSEntryTrampoline [/usr/local/bin/node]
14: 0x100c06164 Builtins_JSEntry [/usr/local/bin/node]
15: 0x10054b85c v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/usr/local/bin/node]
16: 0x10054ba30 v8::internal::Execution::CallScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) [/usr/local/bin/node]
17: 0x1004270f8 v8::Script::Run(v8::Local<v8::Context>, v8::Local<v8::Data>) [/usr/local/bin/node]
18: 0x1002be510 node::contextify::ContextifyScript::EvalMachine(v8::Local<v8::Context>, node::Environment*, long long, bool, bool, bool, std::__1::shared_ptr<v8::MicrotaskQueue>, v8::FunctionCallbackInfo<v8::Value> const&) [/usr/local/bin/node]
19: 0x1002bdea0 node::contextify::ContextifyScript::RunInContext(v8::FunctionCallbackInfo<v8::Value> const&) [/usr/local/bin/node]
20: 0x10048fa1c v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [/usr/local/bin/node]
21: 0x10048f518 v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [/usr/local/bin/node]
22: 0x10048ed44 v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
23: 0x100c7d18c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit [/usr/local/bin/node]
24: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
25: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
26: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
27: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
28: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
29: 0x100c08198 Builtins_InterpreterEntryTrampoline [/usr/local/bin/node]
30: 0x100c064d0 Builtins_JSEntryTrampoline [/usr/local/bin/node]
31: 0x100c06164 Builtins_JSEntry [/usr/local/bin/node]
32: 0x10054b85c v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/usr/local/bin/node]
33: 0x10054ad90 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) [/usr/local/bin/node]
34: 0x10043b124 v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) [/usr/local/bin/node]
35: 0x100336290 node::Realm::ExecuteBootstrapper(char const*, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value>>>*) [/usr/local/bin/node]
36: 0x1002932a8 node::StartExecution(node::Environment*, char const*) [/usr/local/bin/node]
37: 0x1002931f0 node::StartExecution(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) [/usr/local/bin/node]
38: 0x10021c698 node::LoadEnvironment(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) [/usr/local/bin/node]
39: 0x1003068bc node::NodeMainInstance::Run() [/usr/local/bin/node]
40: 0x100296028 node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResult const*) [/usr/local/bin/node]
41: 0x1002962b4 node::Start(int, char**) [/usr/local/bin/node]
42: 0x19b34bf28 start [/usr/lib/dyld]

Additional information

This bug seems simple enough that I would like to try opening a PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions