nodejs / nodejs/node

Debugger crashes with assertion failure while using Chrome DevTools and remote debug

Aperta
#17,259 21 commenti 8 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

async_hooks inspector
Lingua principale
JavaScript
Stelle
122k
Fork
37.3k
Merge medio
4g 2h
PR unite (30g)
283

Descrizione

  • Version:
    8.9.1 LTS
  • Platform:
    macOS 10.13.1 (17B48) (Darwin Kernel Version 17.2.0)

Webstorm 2017.2.5
Chrome: 62.0.3202.94

No crash using Webstorm 2017.1.4

While using the Chrome DevTools and node --inspect, the node process crashes right after Chrome auto-detected the debug session as a network target.

/usr/local/bin/node[28426]: ../src/node.cc:1449:void node::InternalCallbackScope::Close(): Assertion `(env_->trigger_async_id()) == (0)' failed.
 1: node::Abort() [/usr/local/bin/node]
 2: node::(anonymous namespace)::DomainEnter(node::Environment*, v8::Local<v8::Object>) [/usr/local/bin/node]
 3: node::InternalCallbackScope::Close() [/usr/local/bin/node]
 4: node::InternalCallbackScope::~InternalCallbackScope() [/usr/local/bin/node]
 5: node::RunForegroundTask(v8::Task*) [/usr/local/bin/node]
 6: node::NodePlatform::FlushForegroundTasksInternal() [/usr/local/bin/node]
 7: node::inspector::NodeInspectorClient::runMessageLoopOnPause(int) [/usr/local/bin/node]
 8: v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, bool, bool) [/usr/local/bin/node]
 9: v8::internal::Debug::OnDebugBreak(v8::internal::Handle<v8::internal::FixedArray>) [/usr/local/bin/node]
10: v8::internal::Debug::Break(v8::internal::JavaScriptFrame*) [/usr/local/bin/node]
11: v8::internal::Runtime_DebugBreakOnBytecode(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x2fb5b0f842fd
13: 0x2fb5b108876c
14: 0x2fb5b103d1e0
nodejscrash

Reproduce:

  • Clone Demo Project: https://github.com/Microsoft/TypeScript-Node-Starter/
  • Install mongodb via homebrew
  • Start mongodb via mongod --config /usr/local/etc/mongod.conf
  • Open demo project in Webstorm, npm run build and configure a run configuration by adding Node.js Run Configuration and change JavaScript file to dist/server.js
  • Set breakpoint in src/controllers/user.ts Line 30
  • Start debugger with the Bug icon, right next to the run icon in Webstorm
  • Open client site in Chrome http://localhost:3000
  • Use the client site to trigger breakpoint (logged in as user)
  • Resume by clicking Step Out
  • Use the client site to trigger breakpoint again (logged in as user)
  • Chrome: Right-click, Inspect
  • Debugger crashes as shown

For me, this crash is only reproducible on one of three Mac systems with identical software versions.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo il crash con Node 8.9.1, WebStorm, Chrome DevTools e i passaggi di TypeScript-Node-Starter indicati nell'issue. Leggi l'assertion in src/node.cc in corrispondenza di InternalCallbackScope::Close e segui il percorso dello stack di NodeInspectorClient::runMessageLoopOnPause. Il lavoro è completato quando il debug remoto e Chrome DevTools non causano più il crash del processo Node.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, node.js
Ambito
backend, devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.