Fix a segmentation fault caused by invalid log directory in InternalFlush().

PiperOrigin-RevId: 168557063
This commit is contained in:
Henry Tan 2017-09-13 10:19:44 -07:00 committed by TensorFlower Gardener
parent 009285c09f
commit b00b6d23c8
2 changed files with 13 additions and 0 deletions

View File

@ -24,6 +24,7 @@ from tensorflow.contrib.summary import summary_ops
from tensorflow.core.util import event_pb2
from tensorflow.python.eager import function
from tensorflow.python.eager import test
from tensorflow.python.framework import errors
from tensorflow.python.framework import test_util
from tensorflow.python.lib.io import tf_record
from tensorflow.python.platform import gfile
@ -32,6 +33,12 @@ from tensorflow.python.training import training_util
class TargetTest(test_util.TensorFlowTestCase):
def testInvalidDirectory(self):
logdir = '/tmp/apath/that/doesnt/exist'
self.assertFalse(gfile.Exists(logdir))
with self.assertRaises(errors.NotFoundError):
summary_ops.create_summary_file_writer(logdir, max_queue=0, name='t0')
def testShouldRecordSummary(self):
self.assertFalse(summary_ops.should_record_summaries().numpy())
summary_ops.always_record_summaries()

View File

@ -212,6 +212,7 @@ class SummaryWriterImpl : public SummaryWriterInterface {
public:
SummaryWriterImpl(int max_queue, int flush_millis)
: SummaryWriterInterface(),
is_initialized_(false),
max_queue_(max_queue),
flush_millis_(flush_millis) {}
@ -231,11 +232,15 @@ class SummaryWriterImpl : public SummaryWriterInterface {
return errors::Unknown("Could not initialize events writer.");
}
last_flush_ = Env::Default()->NowMicros();
is_initialized_ = true;
return Status::OK();
}
Status Flush() override {
mutex_lock ml(mu_);
if (!is_initialized_) {
return errors::FailedPrecondition("Class was not properly initialized.");
}
return InternalFlush();
}
@ -403,6 +408,7 @@ class SummaryWriterImpl : public SummaryWriterInterface {
return Status::OK();
}
bool is_initialized_;
const int max_queue_;
const int flush_millis_;
uint64 last_flush_;