@cryptotaxi247 / netdata-1 / commits / 1024b6995

Fix initialization handling in `GetHardwareInfo` function (#21885)

- Add checks for uninitialized `cpus` and `cpus_lock` in `netdata_loop_cpu_chart` to prevent potential issues. - Introduce `init_failed` flag to handle initialization failures gracefully and prevent redundant attempts.

Stelios Fragkakis committed Mar 4, 2026 at 15:47 UTC 1024b6995a93c76217bf66f8730990b230c331a2
1 file changed +10 -1
src/collectors/windows.plugin/GetHardwareInfo.c
+10 -1
@@ -366,6 +366,9 @@ static RRDSET *netdata_publish_cpu_chart(int update_every)
366
367 static void netdata_loop_cpu_chart(int update_every)
368 {
369 + if (unlikely(!cpus_lock_initialized || !cpus))
370 + return;
371 +
372 RRDSET *chart = netdata_publish_cpu_chart(update_every);
373
374 EnterCriticalSection(&cpus_lock);
@@ -391,11 +394,17 @@ static void netdata_loop_cpu_chart(int update_every)
394 int do_GetHardwareInfo(int update_every, usec_t dt __maybe_unused)
395 {
396 static bool initialized = false;
397 + static bool init_failed = false;
398 +
399 + if (unlikely(init_failed))
400 + return -1;
401 +
402 if (unlikely(!initialized)) {
395 - initialized = true;
403 if (initialize()) {
404 + init_failed = true;
405 return -1;
406 }
407 + initialized = true;
408 }
409
410 netdata_loop_cpu_chart(update_every);