diff --git a/src/environment_data.cc b/src/environment_data.cc index fdde742..7140534 100644 --- a/src/environment_data.cc +++ b/src/environment_data.cc @@ -51,6 +51,12 @@ EnvironmentData::EnvironmentData(v8::Isolate* isolate, uv_loop_t* loop) void EnvironmentData::AtExit(void* arg) { // TODO(legendecas): environment registry. + // The log_by_pass thread should not be bound to a single environment data. + // For now we just destroy the log_by_pass thread since this is the last env. + if (per_process::process_data.log_by_pass != nullptr) { + per_process::process_data.log_by_pass->Join(); + per_process::process_data.log_by_pass.reset(); + } per_process::process_data.environment_data.reset(); } diff --git a/src/logbypass/log.cc b/src/logbypass/log.cc index ea70691..145d6b3 100644 --- a/src/logbypass/log.cc +++ b/src/logbypass/log.cc @@ -23,7 +23,7 @@ void LogByPass::ThreadEntry(uv_loop_t* loop) { CHECK_EQ(0, uv_timer_init(loop, &cpu_interval_)); CHECK_EQ(0, uv_timer_init(loop, &log_interval_)); - CHECK_EQ(0, uv_timer_start(&cpu_interval_, OnCpuInterval, 1000, true)); + CHECK_EQ(0, uv_timer_start(&cpu_interval_, OnCpuInterval, 1000, 1000)); CHECK_EQ(0, uv_timer_start(&log_interval_, OnLogInterval, GetLogInterval() * 1000, false)); } @@ -85,4 +85,4 @@ void RunLogBypass(const FunctionCallbackInfo& info) { info.GetReturnValue().Set(True()); } -} // namespace xprofiler +} // namespace xprofiler \ No newline at end of file