我有一個在Linux,Solaris和AIX上運行的C應用程序。我已經使用Totalview的MemoryScape等工具來追蹤Linux上的內存泄漏,並且它100%清潔。但是,我注意到了Solaris上的一個小漏洞。Solaris LIBUMEM:C應用程序執行SUBPROCESS時,是否找到「libmapmalloc.so.1 not found」?
所以我一直在Solaris上使用「libumem」來試圖找到泄漏。
我的應用程序或者調用「用戶出口」(通過子進程調用)或不調用。
所以,如果我運行沒有用戶退出(因此沒有子調用),然後使用libumem工程100%......,我看沒有泄漏仍然是應用...
LD_PRELOAD = libumem.so UMEM_DEBUG =審計./myapplication的config.ini
但是,當我打開用戶退出調用,這樣主應用程序調用的子過程,然後我得到以下運行時打印到stdout由子:
ld.so .1:userexit_proxy:致命的:libmapmalloc.so.1:沒有這樣的文件或目錄
請注意,如果我做不使用「使用libumem」,那麼應用程序運行100%...(只是一個很小的內存泄漏仍然)
現在我的應用程序在64位編譯,我注意到/usr/lib/libmapmalloc.so.1是32位的,但這不應該有所作爲......
任何想法如何在還調用子進程的應用程序上使用libumem?
注:我也曾嘗試將變量導出到整個環境中,仍然沒有運氣
出口LD_PRELOAD = libumem.so 出口UMEM_DEBUG =審計
另外,請糾正我,如果我我錯了,但如果一個子進程完成,那麼子進程中的任何「泄漏內存」都會自動釋放對嗎?所以我可以假設Solaris上沒有泄漏來自子進程調用?
在這方面的任何幫助,將使用dlerror獲得代碼時,不勝感激
感謝您的幫助
林頓