Skip to content

Commit

Permalink
report: include information about event loop itself
Browse files Browse the repository at this point in the history
PR-URL: #25906
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
addaleax committed Feb 6, 2019
1 parent 197efb7 commit 6c51ec3
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
5 changes: 5 additions & 0 deletions doc/api/report.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,11 @@ is provided below for reference.
"is_referenced": false,
"address": "0x000000010188f2e0",
"details": ""
},
{
"type": "loop",
"is_active": true,
"address": "0x000055fc7b2cb180"
}
],
"environmentVariables": {
Expand Down
11 changes: 10 additions & 1 deletion src/node_report.cc
Original file line number Diff line number Diff line change
Expand Up @@ -311,9 +311,18 @@ static void WriteNodeReport(Isolate* isolate,
#endif

writer.json_arraystart("libuv");
if (env != nullptr)
if (env != nullptr) {
uv_walk(env->event_loop(), WalkHandle, static_cast<void*>(&writer));

writer.json_start();
writer.json_keyvalue("type", "loop");
writer.json_keyvalue("is_active",
static_cast<bool>(uv_loop_alive(env->event_loop())));
writer.json_keyvalue("address",
ValueToHexString(reinterpret_cast<int64_t>(env->event_loop())));
writer.json_end();
}

writer.json_arrayend();

// Report operating system information
Expand Down
9 changes: 8 additions & 1 deletion src/node_report.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,15 @@ void GetNodeReport(v8::Isolate* isolate,
void ReportEndpoints(uv_handle_t* h, std::ostringstream& out);
void WalkHandle(uv_handle_t* h, void* arg);
std::string EscapeJsonChars(const std::string& str);

template <typename T>
std::string ValueToHexString(T value);
std::string ValueToHexString(T value) {
std::stringstream hex;

hex << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex <<
value;
return hex.str();
}

// Function declarations - export functions in src/node_report_module.cc
void TriggerReport(const v8::FunctionCallbackInfo<v8::Value>& info);
Expand Down
9 changes: 0 additions & 9 deletions src/node_report_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -214,15 +214,6 @@ void WalkHandle(uv_handle_t* h, void* arg) {
writer->json_end();
}

template <typename T>
std::string ValueToHexString(T value) {
std::stringstream hex;

hex << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex <<
value;
return hex.str();
}

std::string EscapeJsonChars(const std::string& str) {
const std::string control_symbols[0x20] = {
"\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005",
Expand Down

0 comments on commit 6c51ec3

Please sign in to comment.