diff --git a/components/esp8266/include/esp_wifi_os_adapter.h b/components/esp8266/include/esp_wifi_os_adapter.h
index d91ac19c..1605197c 100644
--- a/components/esp8266/include/esp_wifi_os_adapter.h
+++ b/components/esp8266/include/esp_wifi_os_adapter.h
@@ -80,11 +80,11 @@ typedef struct {
     bool (*timer_stop)(void *timer, uint32_t ticks);
     bool (*timer_delete)(void *timer, uint32_t ticks);
 
-    void *(*malloc)(uint32_t size, uint32_t cap);
-    void *(*zalloc)(uint32_t size, uint32_t cap);
-    void *(*realloc)(void *ptr, uint32_t size, uint32_t cap);
-    void *(*calloc)(uint32_t cnt, uint32_t size, uint32_t cap);
-    void (*free)(void *p);
+    void *(*malloc)(uint32_t size, uint32_t cap, const char *file, size_t line);
+    void *(*zalloc)(uint32_t size, uint32_t cap, const char *file, size_t line);
+    void *(*realloc)(void *ptr, uint32_t size, uint32_t cap, const char *file, size_t line);
+    void *(*calloc)(uint32_t cnt, uint32_t size, uint32_t cap, const char *file, size_t line);
+    void (*free)(void *p, const char *file, size_t line);
     uint32_t (*get_free_heap_size)(void);
 
     void (*srand)(uint32_t seed);
diff --git a/components/esp8266/include/esp_wifi_osi.h b/components/esp8266/include/esp_wifi_osi.h
index 763d6f28..f780d85e 100644
--- a/components/esp8266/include/esp_wifi_osi.h
+++ b/components/esp8266/include/esp_wifi_osi.h
@@ -126,19 +126,19 @@ extern wifi_osi_funcs_t s_wifi_osi_funcs;
     s_wifi_osi_funcs.timer_delete(t, tk)
 
 #define wifi_malloc(s, c) \
-    s_wifi_osi_funcs.malloc(s, c)
+    s_wifi_osi_funcs.malloc(s, c, __FILE__, __LINE__)
 
 #define wifi_zalloc(s, c) \
-    s_wifi_osi_funcs.zalloc(s, c)
+    s_wifi_osi_funcs.zalloc(s, c, __FILE__, __LINE__)
 
 #define wifi_calloc(cnt, s, c) \
-    s_wifi_osi_funcs.calloc(cnt, s, c)
+    s_wifi_osi_funcs.calloc(cnt, s, c, __FILE__, __LINE__)
 
 #define wifi_realloc(ptr, s, c) \
-    s_wifi_osi_funcs.realloc(ptr, s, c)
+    s_wifi_osi_funcs.realloc(ptr, s, c, __FILE__, __LINE__)
 
 #define wifi_free(p) \
-    s_wifi_osi_funcs.free(p)
+    s_wifi_osi_funcs.free(p, __FILE__, __LINE__)
 
 #define wifi_get_free_heap_size() \
     s_wifi_osi_funcs.get_free_heap_size()
diff --git a/components/esp8266/lib/VERSION b/components/esp8266/lib/VERSION
index 95fa0c1b..30e0d49c 100644
--- a/components/esp8266/lib/VERSION
+++ b/components/esp8266/lib/VERSION
@@ -1,9 +1,9 @@
 gwen:
-    core:       b55a74f
-    net80211:   b55a74f
-    pp:         b55a74f
-    smartconfig:103fbb8
-    wpa:        103fbb8
-    espnow:     103fbb8
-    wps:        103fbb8
+    core:       01980e2
+    net80211:   01980e2
+    pp:         01980e2
+    smartconfig:01980e2
+    wpa:        01980e2
+    espnow:     01980e2
+    wps:        01980e2
     phy:	1055_8
diff --git a/components/esp8266/lib/libcore.a b/components/esp8266/lib/libcore.a
index a2cbd42d..774c934c 100644
Binary files a/components/esp8266/lib/libcore.a and b/components/esp8266/lib/libcore.a differ
diff --git a/components/esp8266/lib/libespnow.a b/components/esp8266/lib/libespnow.a
index 9a99a2d2..b400ebf4 100644
Binary files a/components/esp8266/lib/libespnow.a and b/components/esp8266/lib/libespnow.a differ
diff --git a/components/esp8266/lib/libnet80211.a b/components/esp8266/lib/libnet80211.a
index ebd3a21c..39984de7 100644
Binary files a/components/esp8266/lib/libnet80211.a and b/components/esp8266/lib/libnet80211.a differ
diff --git a/components/esp8266/lib/libpp.a b/components/esp8266/lib/libpp.a
index 0bd49659..decc95e6 100644
Binary files a/components/esp8266/lib/libpp.a and b/components/esp8266/lib/libpp.a differ
diff --git a/components/esp8266/lib/libsmartconfig.a b/components/esp8266/lib/libsmartconfig.a
index badcf14d..6e1ad7eb 100644
Binary files a/components/esp8266/lib/libsmartconfig.a and b/components/esp8266/lib/libsmartconfig.a differ
diff --git a/components/esp8266/lib/libwpa.a b/components/esp8266/lib/libwpa.a
index 1d6f85c3..84fdce06 100644
Binary files a/components/esp8266/lib/libwpa.a and b/components/esp8266/lib/libwpa.a differ
diff --git a/components/esp8266/lib/libwps.a b/components/esp8266/lib/libwps.a
index 55bfc4cb..02b4ca80 100644
Binary files a/components/esp8266/lib/libwps.a and b/components/esp8266/lib/libwps.a differ
diff --git a/components/esp8266/source/esp_wifi_os_adapter.c b/components/esp8266/source/esp_wifi_os_adapter.c
index bf6ddfaf..519dc899 100644
--- a/components/esp8266/source/esp_wifi_os_adapter.c
+++ b/components/esp8266/source/esp_wifi_os_adapter.c
@@ -272,63 +272,57 @@ static bool timer_delete_wrapper(void *timer, uint32_t ticks)
     return xTimerDelete(timer, ticks);
 }
 
-static void *malloc_wrapper(uint32_t s, uint32_t cap)
+static void *malloc_wrapper(uint32_t s, uint32_t cap, const char *file, size_t line)
 {
     uint32_t os_caps;
-    void *return_addr = (void *)__builtin_return_address(0);
 
     if (cap & (OSI_MALLOC_CAP_8BIT | OSI_MALLOC_CAP_DMA))
         os_caps = MALLOC_CAP_8BIT | MALLOC_CAP_DMA;
     else
         os_caps = MALLOC_CAP_32BIT;
 
-    return _heap_caps_malloc(s, os_caps, return_addr, 0);
+    return _heap_caps_malloc(s, os_caps, file, line);
 }
 
-static void *zalloc_wrapper(uint32_t s, uint32_t cap)
+static void *zalloc_wrapper(uint32_t s, uint32_t cap, const char *file, size_t line)
 {
     uint32_t os_caps;
-    void *return_addr = (void *)__builtin_return_address(0);
 
     if (cap & (OSI_MALLOC_CAP_8BIT | OSI_MALLOC_CAP_DMA))
         os_caps = MALLOC_CAP_8BIT | MALLOC_CAP_DMA;
     else
         os_caps = MALLOC_CAP_32BIT;
 
-    return _heap_caps_zalloc(s, os_caps, return_addr, 0);
+    return _heap_caps_zalloc(s, os_caps, file, line);
 }
 
-static void *realloc_wrapper(void *ptr, uint32_t s, uint32_t cap)
+static void *realloc_wrapper(void *ptr, uint32_t s, uint32_t cap, const char *file, size_t line)
 {
     uint32_t os_caps;
-    void *return_addr = (void *)__builtin_return_address(0);
 
     if (cap & (OSI_MALLOC_CAP_8BIT | OSI_MALLOC_CAP_DMA))
         os_caps = MALLOC_CAP_8BIT | MALLOC_CAP_DMA;
     else
         os_caps = MALLOC_CAP_32BIT;
 
-    return _heap_caps_realloc(ptr, s, os_caps, return_addr, 0);
+    return _heap_caps_realloc(ptr, s, os_caps, file, line);
 }
 
-static void *calloc_wrapper(uint32_t cnt, uint32_t s, uint32_t cap)
+static void *calloc_wrapper(uint32_t cnt, uint32_t s, uint32_t cap, const char *file, size_t line)
 {
     uint32_t os_caps;
-    void *return_addr = (void *)__builtin_return_address(0);
 
     if (cap & (OSI_MALLOC_CAP_8BIT | OSI_MALLOC_CAP_DMA))
         os_caps = MALLOC_CAP_8BIT | MALLOC_CAP_DMA;
     else
         os_caps = MALLOC_CAP_32BIT;
 
-    return _heap_caps_calloc(cnt , s, os_caps, return_addr, 0);
+    return _heap_caps_calloc(cnt , s, os_caps, file, line);
 }
 
-static void free_wrapper(void *ptr)
+static void free_wrapper(void *ptr, const char *file, size_t line)
 {
-    void *return_addr = (void *)__builtin_return_address(0);
-
-    _heap_caps_free(ptr, return_addr, 0);
+    _heap_caps_free(ptr, file, line);
 }
 
 static void srand_wrapper(uint32_t seed)