Crash log: Increase length limit for desync/inconsistency logs
Allocate buffer instead of using stack
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
#include "thread.h"
|
||||
#include "debug_desync.h"
|
||||
#include "event_logs.h"
|
||||
#include "scope.h"
|
||||
|
||||
#include "ai/ai_info.hpp"
|
||||
#include "game/game.hpp"
|
||||
@@ -760,7 +761,14 @@ bool CrashLog::MakeCrashLog()
|
||||
bool CrashLog::MakeDesyncCrashLog(const std::string *log_in, std::string *log_out, const DesyncExtraInfo &info) const
|
||||
{
|
||||
char filename[MAX_PATH];
|
||||
char buffer[65536 * 2];
|
||||
|
||||
const size_t length = 65536 * 16;
|
||||
char * const buffer = MallocT<char>(length);
|
||||
auto guard = scope_guard([=]() {
|
||||
free(buffer);
|
||||
});
|
||||
const char * const last = buffer + length - 1;
|
||||
|
||||
bool ret = true;
|
||||
|
||||
const char *mode = _network_server ? "server" : "client";
|
||||
@@ -771,13 +779,13 @@ bool CrashLog::MakeDesyncCrashLog(const std::string *log_in, std::string *log_ou
|
||||
strftime(name_buffer_date, lastof(name_buffer) - name_buffer_date, "%Y%m%dT%H%M%SZ", gmtime(&cur_time));
|
||||
|
||||
printf("Desync encountered (%s), generating desync log...\n", mode);
|
||||
char *b = this->FillDesyncCrashLog(buffer, lastof(buffer), info);
|
||||
char *b = this->FillDesyncCrashLog(buffer, last, info);
|
||||
|
||||
if (log_out) log_out->assign(buffer);
|
||||
|
||||
if (log_in && !log_in->empty()) {
|
||||
b = strecpy(b, "\n", lastof(buffer), true);
|
||||
b = strecpy(b, log_in->c_str(), lastof(buffer), true);
|
||||
b = strecpy(b, "\n", last, true);
|
||||
b = strecpy(b, log_in->c_str(), last, true);
|
||||
}
|
||||
|
||||
bool bret = this->WriteCrashLog(buffer, filename, lastof(filename), name_buffer, info.log_file);
|
||||
@@ -824,7 +832,14 @@ bool CrashLog::MakeDesyncCrashLog(const std::string *log_in, std::string *log_ou
|
||||
bool CrashLog::MakeInconsistencyLog(const InconsistencyExtraInfo &info) const
|
||||
{
|
||||
char filename[MAX_PATH];
|
||||
char buffer[65536 * 2];
|
||||
|
||||
const size_t length = 65536 * 16;
|
||||
char * const buffer = MallocT<char>(length);
|
||||
auto guard = scope_guard([=]() {
|
||||
free(buffer);
|
||||
});
|
||||
const char * const last = buffer + length - 1;
|
||||
|
||||
bool ret = true;
|
||||
|
||||
char name_buffer[64];
|
||||
@@ -833,7 +848,7 @@ bool CrashLog::MakeInconsistencyLog(const InconsistencyExtraInfo &info) const
|
||||
strftime(name_buffer_date, lastof(name_buffer) - name_buffer_date, "%Y%m%dT%H%M%SZ", gmtime(&cur_time));
|
||||
|
||||
printf("Inconsistency encountered, generating diagnostics log...\n");
|
||||
this->FillInconsistencyLog(buffer, lastof(buffer), info);
|
||||
this->FillInconsistencyLog(buffer, last, info);
|
||||
|
||||
bool bret = this->WriteCrashLog(buffer, filename, lastof(filename), name_buffer);
|
||||
if (bret) {
|
||||
|
Reference in New Issue
Block a user