Skip to content

Commit 05f06fa

Browse files
authored
Fix uninitialized LogConfig member variable (#12798)
Valgrind reported a conditional jump depending on an uninitialized value in Log::periodic_tasks(). The root cause was that roll_log_files_now was not initialized in LogConfig. While we're at it, I'm initializing m_partition_space_left in the member declaration as well. Fixed by adding default member initializers in the class definition, consistent with the other members. Valgrind report that reported this: Thread 30 [LOG_FLUSH]: Conditional jump or move depends on uninitialised value(s) at 0x68F310: Log::periodic_tasks(long) by 0x6901FF: Log::flush_thread_main(void*) by 0x695FEC: LoggingFlushContinuation::mainEvent(int, void*) by 0x883EA2: EThread::execute() by 0x87FD61: spawn_thread_internal(void*) Uninitialised value was created by a heap allocation at 0x4C2A593: operator new(unsigned long) by 0x695440: Log::init(int)
1 parent dbff9de commit 05f06fa

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

include/proxy/logging/LogConfig.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ class LogConfig : public ConfigInfo
163163
bool reconfiguration_needed = false;
164164
bool logging_space_exhausted = false;
165165
int64_t m_space_used = 0;
166-
int64_t m_partition_space_left;
167-
bool roll_log_files_now; // signal that files must be rolled
166+
int64_t m_partition_space_left = static_cast<int64_t>(UINT_MAX);
167+
bool roll_log_files_now = false; // signal that files must be rolled
168168

169169
LogObjectManager log_object_manager;
170170

src/proxy/logging/LogConfig.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ LogConfig::read_configuration_variables()
252252
-------------------------------------------------------------------------*/
253253

254254
// TODO: Is UINT_MAX here really correct?
255-
LogConfig::LogConfig() : m_partition_space_left(static_cast<int64_t>(UINT_MAX))
255+
LogConfig::LogConfig()
256256
{
257257
// Setup the default values for all LogConfig public variables so that
258258
// a LogConfig object is valid upon return from the constructor even

0 commit comments

Comments
 (0)