Skip to content

v12: hangs on calling console.log with large object #29646

Description

@pimlie
  • Version: v12.10.0
  • Platform: Linux x64
  • Subsystem:

Unfortunately I was unable to reproduce this with a small circular object, I think at least it has something to do with circularity, no idea what else could cause this.

Reproduction is here, this tries to log a full VueComponent: https://github.com/pimlie/node-v12-util-inspect-issue

Steps:

  • clone & install
  • run: node --inspect ./node_modules/.bin/nuxt
  • attach debugger
  • browse to http://localhost:3000
  • node now hangs, webpage never loads
  • If you now try to record a CPU profile it will kill node and log the error below

Tested v10.16.3 and v8.16.1 which both work fine. Possibly related to #29592?

internal/util/inspect.js:423
function getCtxStyle(value, constructor, tag) {
                    ^

RangeError: Maximum call stack size exceeded
    at getCtxStyle (internal/util/inspect.js:423:21)
    at formatRaw (internal/util/inspect.js:764:29)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at inspect (internal/util/inspect.js:221:10)
    at getConstructorName (internal/util/inspect.js:375:49)
    at formatRaw (internal/util/inspect.js:573:23)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
    at formatRaw (internal/util/inspect.js:761:9)
    at formatValue (internal/util/inspect.js:567:10)
    at formatProperty (internal/util/inspect.js:1371:11)
FATAL ERROR: 
node::inspector::Agent::ToggleAsyncHook Cannot toggle Inspector's AsyncHook, please report this.
 1: 0x9bcb80 node::Abort() [node]
 2: 0x9bdd16 node::OnFatalError(char const*, char const*) [node]
 3: 0x9bde09  [node]
 4: 0xa90108  [node]
 5: 0x116f8c4 v8_inspector::V8Debugger::setAsyncCallStackDepth(v8_inspector::V8DebuggerAgentImpl*, int) [node]
 6: 0x1178361 v8_inspector::V8DebuggerAgentImpl::disable() [node]
 7: 0x125a268 v8_inspector::protocol::Debugger::DispatcherImpl::disable(int, v8_inspector::String16 const&, v8_inspector::protocol::ProtocolMessage const&, std::unique_ptr<v8_inspector::protocol::DictionaryValue, std::default_delete<v8_inspector::protocol::DictionaryValue> >, v8_inspector::protocol::ErrorSupport*) [node]
 8: 0x1268978 v8_inspector::protocol::Debugger::DispatcherImpl::dispatch(int, v8_inspector::String16 const&, v8_inspector::protocol::ProtocolMessage const&, std::unique_ptr<v8_inspector::protocol::DictionaryValue, std::default_delete<v8_inspector::protocol::DictionaryValue> >) [node]
 9: 0x124c1e2 v8_inspector::protocol::UberDispatcher::dispatch(int, v8_inspector::String16 const&, std::unique_ptr<v8_inspector::protocol::Value, std::default_delete<v8_inspector::protocol::Value> >, v8_inspector::protocol::ProtocolMessage const&) [node]
10: 0x1190682 v8_inspector::V8InspectorSessionImpl::dispatchProtocolMessage(v8_inspector::StringView const&) [node]
11: 0xa8b74e  [node]
12: 0xaac94d  [node]
13: 0xaaaece  [node]
14: 0xaab242  [node]
15: 0xc7405b v8::internal::Isolate::InvokeApiInterruptCallbacks() [node]
16: 0xc61165 v8::internal::StackGuard::HandleInterrupts() [node]
17: 0xfc9417 v8::internal::Runtime_StackGuard(int, unsigned long*, v8::internal::Isolate*) [node]
18: 0x134e879  [node]

Activity

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

    utilIssues and PRs related to the built-in util module.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions