summaryrefslogtreecommitdiffstats
path: root/runtime/trace.cc
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-11-06 01:00:46 -0800
committerAndreas Gampe <agampe@google.com>2014-11-18 17:26:06 -0800
commit4303ba97313458491e038d78efa041d41cf7bb43 (patch)
tree5a5873651db918416c9ff63f4bb06b6eb7f4c71a /runtime/trace.cc
parenta971100be7870544360fa8a46311ef7f5adb6902 (diff)
downloadart-4303ba97313458491e038d78efa041d41cf7bb43.tar.gz
art-4303ba97313458491e038d78efa041d41cf7bb43.tar.bz2
art-4303ba97313458491e038d78efa041d41cf7bb43.zip
ART: Track Flush & Close in FdFile
Implement a check that aborts when a file hasn't been explicitly flushed and closed when it is destructed. Add WARN_UNUSED to FdFile methods. Update dex2oat, patchoat, scoped_flock and some gtests to pass with this. (cherry picked from commit 9433ec60b325b708b9fa87e699ab4a6565741494) Change-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4
Diffstat (limited to 'runtime/trace.cc')
-rw-r--r--runtime/trace.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/trace.cc b/runtime/trace.cc
index 29c01e4d47..2cc50b3732 100644
--- a/runtime/trace.cc
+++ b/runtime/trace.cc
@@ -431,6 +431,15 @@ void Trace::Stop() {
instrumentation::Instrumentation::kMethodExited |
instrumentation::Instrumentation::kMethodUnwind);
}
+ if (the_trace->trace_file_.get() != nullptr) {
+ // Do not try to erase, so flush and close explicitly.
+ if (the_trace->trace_file_->Flush() != 0) {
+ PLOG(ERROR) << "Could not flush trace file.";
+ }
+ if (the_trace->trace_file_->Close() != 0) {
+ PLOG(ERROR) << "Could not close trace file.";
+ }
+ }
delete the_trace;
}
runtime->GetThreadList()->ResumeAll();