- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Linux、Solaris 和 AIX 上运行的 C 应用程序。我使用 Totalview 的 MemoryScape 等工具来追踪 Linux 上的内存泄漏,它是 100% 干净的。不过,我注意到 Solaris 上有一个小泄漏。
所以我一直在 Solaris 上使用“libumem”来尝试查找泄漏。
我的应用程序要么调用“用户退出”(通过子进程调用),要么不调用。
因此,如果我在没有用户退出的情况下运行应用程序(因此没有子进程调用),那么 libumem 可以 100% 工作......并且我仍然没有看到泄漏......
LD_PRELOAD=libumem.so UMEM_DEBUG=audit ./myapplication config.ini
但是当我打开用户退出调用以便主应用程序调用子进程时,子进程在运行时将以下内容打印到 STDOUT:
ld.so.1: userexit_proxy: fatal: libmapmalloc.so.1: 没有这样的文件或目录
请注意,如果我不使用“libumem”,那么应用程序将运行 100%...(仍然存在微小的内存泄漏)
现在我的应用程序是以 64 位编译的,我注意到/usr/lib/libmapmalloc.so.1 是 32 位,但这应该没有什么区别......
知道如何在也调用子进程的应用程序上使用 libumem 吗?
注意:我也尝试过将变量导出到整个环境,但仍然没有成功
导出 LD_PRELOAD=libumem.so导出 UMEM_DEBUG=审核
此外,如果我错了,请纠正我,但如果子进程完成,那么该子进程中的任何“泄漏内存”都会自动释放,对吧?所以我可以假设 Solaris 上的泄漏不会来自子进程调用?
在这方面的任何帮助将不胜感激
感谢您的帮助
林顿
最佳答案
当使用 dlerror 的代码错误地假定它返回非空值而 dlopen 成功时,已经观察到这种行为(请参阅此邮件: indiana discuss 。)我将首先跟踪您的应用程序以查看是否调用了这些函数,并且如何。
/usr/lib/libmapmalloc.so.1 确实是 32 位,但如果您的应用程序是 64 位,它会使用/usr/lib/amd64/libmapmalloc.so 或类似的内容。
您的说法是正确的,当(子)进程结束时,其所有内存分配都会被释放。
关于c - Solaris LIBUMEM : Get "libmapmalloc.so.1 not found" when C application executes SUBPROCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284156/
我想知道如何在 solaris 上使用 libumem。如果我关注http://www.unix.com/man-page/OpenSolaris/3malloc/umem_debug/并使用所有选项
我有一个应用程序,我一直在尝试“无内存泄漏”,我已经使用 Totalview 的 MemoryScape 在 Linux 上进行了可靠的测试,但没有发现泄漏。我已将该应用程序移植到 Solaris (
我有一个在 Linux、Solaris 和 AIX 上运行的 C 应用程序。我使用 Totalview 的 MemoryScape 等工具来追踪 Linux 上的内存泄漏,它是 100% 干净的。不过
我是一名优秀的程序员,十分优秀!