[英]Wrapping calls to malloc()/realloc()… is this a good idea?
[英]malloc calls realloc, then crashes
我正在使用 linux 嵌入式設備中的守護程序,該守護程序在運行時隨機崩潰,通常是在啟動幾個小時后。 我調查了崩潰報告(堆棧轉儲)並檢測到它在 2 種情況下崩潰,請遵循以下調用跟蹤:
我讀了這個鏈接,我的問題似乎是由於堆損壞為什么我得到 C malloc 斷言失敗? .
我為內存分配函數(malloc、calloc、realloc 和 free)制作了自己的包裝器版本,以在分配的內存周圍附加圍欄並通過哈希表監視它們,因此我可以檢測緩沖區溢出或釋放兩次。 然而,它仍然崩潰,我的圍欄沒有任何內存沖突。
所以我想問2個問題:
我的同事找到了根本原因(通過調查核心轉儲文件和 libc malloc 的源代碼),有一點是因為鏈表的刪除函數中的錯誤 => 內存損壞 => calloc 崩潰,所以它寫入已釋放的內存。
實際上malloc不調用realloc , malloc調用__malloc_consolidate代替。 在 libc 的 obj 轉儲文件中, __malloc_consolidate'的 asm 代碼在realloc的 asm 代碼下,所以我雖然malloc調用realloc 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.