summaryrefslogtreecommitdiff
path: root/src/tracing/node_trace_writer.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-07-17 23:51:09 +0200
committerAnna Henningsen <anna@addaleax.net>2018-08-01 17:16:52 +0200
commiteb0cf667edbdb94ed44075b5850ee985311efe43 (patch)
treef1ef11af5a05407826ea9819881f84b1faeb83eb /src/tracing/node_trace_writer.cc
parent620e46c8b59b6269784ebba42b23f23897eeedb9 (diff)
downloadandroid-node-v8-eb0cf667edbdb94ed44075b5850ee985311efe43.tar.gz
android-node-v8-eb0cf667edbdb94ed44075b5850ee985311efe43.tar.bz2
android-node-v8-eb0cf667edbdb94ed44075b5850ee985311efe43.zip
src: fix tracing if cwd or file path is inaccessible
Otherwise this would have crashed the process. In particular, checking the return value of an libuv call against `-1` was invalid to begin with, as libuv uses it to propagate the error code. PR-URL: https://github.com/nodejs/node/pull/21867 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'src/tracing/node_trace_writer.cc')
-rw-r--r--src/tracing/node_trace_writer.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/tracing/node_trace_writer.cc b/src/tracing/node_trace_writer.cc
index a2f7bebfc7..5e3ddc633f 100644
--- a/src/tracing/node_trace_writer.cc
+++ b/src/tracing/node_trace_writer.cc
@@ -77,8 +77,13 @@ void NodeTraceWriter::OpenNewFileForStreaming() {
fd_ = uv_fs_open(tracing_loop_, &req, filepath.c_str(),
O_CREAT | O_WRONLY | O_TRUNC, 0644, nullptr);
- CHECK_NE(fd_, -1);
uv_fs_req_cleanup(&req);
+ if (fd_ < 0) {
+ fprintf(stderr, "Could not open trace file %s: %s\n",
+ filepath.c_str(),
+ uv_strerror(fd_));
+ fd_ = -1;
+ }
}
void NodeTraceWriter::AppendTraceEvent(TraceObject* trace_event) {
@@ -145,6 +150,7 @@ void NodeTraceWriter::Flush(bool blocking) {
}
void NodeTraceWriter::WriteToFile(std::string&& str, int highest_request_id) {
+ if (fd_ == -1) return;
WriteRequest* write_req = new WriteRequest();
write_req->str = std::move(str);
write_req->writer = this;