Yur*_*hev 6 c linux memory heap-corruption
我的 C 应用程序中面临着非常智能的内存损坏。
高负载时会发生损坏。
所以我尝试了purify、valgrind、mprotected,还尝试编写自己的简单保护机制。
Purify / Valgrind - 没有帮助,因为它降低了我的应用程序的性能并且问题没有重现。
mprotected使用只是将损坏移动到其他内存位置。(因为它需要将内存与页面大小对齐)。
我的简单保护机制不起作用,因为它还降低了性能。
如何在不降低性能的情况下调试我的应用程序?
如果您有 64 位,则可以在同一内存上使用malloc()始终执行此操作的自定义程序以及执行此操作的mmap()自定义程序和另一个自定义程序。使用互斥体保护这些东西,以避免致命的竞争状况。这会将首次访问已释放内存时出现故障的行为更改为错误。free()munmap()mmap()
如果没有找到,请调整自定义malloc()以将分配的缓冲区移动到映射区域中尽可能高的位置。
请注意,您无法在 32 位中执行此操作,因为这会疯狂地消耗地址空间。