Enable heap tracer and disallow free'ing unmanaged chunks 19/248819/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 2 Dec 2020 10:27:32 +0000 (19:27 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Wed, 2 Dec 2020 10:46:32 +0000 (19:46 +0900)
Change-Id: If153dcbe74fc218c1c06228e14a10019dbaaf9b3

plugins/wakeup-manager/src/heap_tracer.cpp

index acf5bc6..fc24d84 100644 (file)
@@ -18,7 +18,8 @@ const bool HEAP_TRACER_LOG_ENABLED = false
 ;
 
 #define DESCRIPTION_LENGTH 255
-//#define USE_HEAP_TRACER
+#define USE_HEAP_TRACER
+//#define ALLOW_FREE_UNMANAGED
 //#define RECORD_ALL_HISTORY
 
 void* vm_calloc(size_t nmemb, size_t size, const char *fmt, ...)
@@ -60,14 +61,24 @@ void vm_free(void *ptr, const char *fmt, ...)
                va_list argptr;
                va_start(argptr, fmt);
 
+               bool managed = true;
                char description[DESCRIPTION_LENGTH];
                vsnprintf(description, sizeof(description), fmt, argptr);
                if (false == _tracer.Delete(ptr, description)) {
+                       managed = false;
                        _tracer.Find(ptr);
                }
-               va_end(argptr);
+#ifdef ALLOW_FREE_UNMANAGED
+               free(ptr);
+#else
+               if (managed) {
+                       free(ptr);
+               }
 #endif
+               va_end(argptr);
+#else
                free(ptr);
+#endif
        } else {
                LOGD("Trying to free a null pointer");
        }