@cryptotaxi247 / netdata-1 / commits / 26e350920

keep errno in out of memory situations (#19984)

Costa Tsaousis committed Mar 27, 2025 at 15:23 UTC 26e350920cc6bea615b15b0c2d64ad7542b6bff1
2 files changed +4
src/libnetdata/memory/nd-mallocz.c
+2
@@ -23,6 +23,7 @@ uint64_t process_max_rss(void) {
23
24 ALWAYS_INLINE NORETURN
25 void out_of_memory(const char *call, size_t size, const char *details) {
26 + int errno_saved = errno;
27 exit_initiated_add(EXIT_REASON_OUT_OF_MEMORY);
28
29 if(out_of_memory_callback)
@@ -37,6 +38,7 @@ void out_of_memory(const char *call, size_t size, const char *details) {
38 size_snprintf(mem_available, sizeof(mem_available), sm.ram_available_bytes, "B", false);
39 size_snprintf(rss_used, sizeof(rss_used), max_rss, "B", false);
40
41 + errno = errno_saved;
42 fatal("Out of memory on %s(%zu bytes)!\n"
43 "System memory available: %s, while our max RSS usage is: %s\n"
44 "O/S mmap limit: %llu, while our mmap count is: %zu\n"
src/libnetdata/memory/nd-mmap.c
+2
@@ -183,6 +183,8 @@ void *nd_mmap_advanced(const char *filename, size_t size, int flags, int ksm, bo
183 int fd = -1;
184 void *mem = MAP_FAILED;
185
186 + errno_clear();
187 +
188 if(filename && *filename) {
189 // open/create the file to be used
190 fd = memory_file_open(filename, size);