[
https://issues.apache.org/jira/browse/TS-4072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15240090#comment-15240090
]
ASF GitHub Bot commented on TS-4072:
------------------------------------
Github user jpeach commented on a diff in the pull request:
https://github.com/apache/trafficserver/pull/568#discussion_r59632436
--- Diff: lib/ts/Diags.cc ---
@@ -816,29 +820,39 @@ Diags::set_stdout_output(const char *_bind_stdout)
if (strcmp(_bind_stdout, "") == 0)
return false;
- if (stdout_log) {
- delete stdout_log;
- stdout_log = NULL;
- }
-
- // create backing BaseLogFile for stdout
- stdout_log = new BaseLogFile(_bind_stdout);
+ BaseLogFile *old_stdout_log = stdout_log;
+ BaseLogFile *new_stdout_log = new BaseLogFile(_bind_stdout);
// on any errors we quit
- if (!stdout_log || stdout_log->open_file() !=
BaseLogFile::LOG_FILE_NO_ERROR) {
+ if (!new_stdout_log || new_stdout_log->open_file() !=
BaseLogFile::LOG_FILE_NO_ERROR) {
fprintf(stderr, "[Warning]: unable to open file=%s to bind stdout
to\n", _bind_stdout);
- delete stdout_log;
+ fprintf(stderr, "[Warning]: stdout is currently not bound to
anything\n");
--- End diff --
This would be better as ``log_log_error()``.
> Diagnostic log rolling races
> ----------------------------
>
> Key: TS-4072
> URL: https://issues.apache.org/jira/browse/TS-4072
> Project: Traffic Server
> Issue Type: Bug
> Components: Logging
> Reporter: James Peach
> Assignee: Daniel Xu
> Fix For: 6.2.0
>
>
> When diagnostic logs are rolled, {{Diags::diags_log}} is deleted and replaced
> with a new log object. Since the global {{diags}} points to a a single
> {{Diags}} object there is nothing to prevent a different thread logging
> through this object at the time it is deleted.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)