如何修复仅在MacOS High Sierra10.13.6上发生的malloc错误?

问题描述

过去几天,我一直在努力解决malloc错误,而我在解决方案上的想法已用尽。该项目(在C和SDL2中毁灭性毁灭的创建)在macOS Mojave和Catalina(精确版本为idk)上运行良好,但在我的OS(High Sierra 10.13.6)上崩溃。我们正在使用clang进行编译。

错误

doom(76767,0x7fff9d07c380) malloc: *** error for object 0x7fe50486b800: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
[1]    76767 abort      ./doom

我尝试确定发生错误的确切行,即使我摆脱了对free()的所有调用(出于测试目的),似乎在整个程序中都可以访问已释放的变量。那就是我开始变得绝望的地方。

这样的事情怎么发生?我在另一篇SO文章中读到,问题可能不是无效的免费,而是错误的malloc。你们将如何寻求解决方案?另外,为什么只在10.13而不是莫哈韦沙漠和卡塔琳娜州出现此问题?

由于没有一行引起问题的具体代码,因此很难张贴代码示例。如果您想看一下代码,我很乐意向您发送github链接

Valgrind输出

==81281== Command: ./doom
==81281==
--81281-- UNKNowN mach_msg unhandled MACH_SEND_TRAILER option
--81281-- UNKNowN mach_msg unhandled MACH_SEND_TRAILER option (repeated 2 times)
--81281-- UNKNowN mach_msg unhandled MACH_SEND_TRAILER option (repeated 4 times)
==81281== valgrind: Unrecognised instruction at address 0x103bd1b7b.
==81281==    at 0x103BD1B7B: _dispatch_kq_poll (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BD1741: _dispatch_kq_drain (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BD0B0F: _dispatch_kq_unote_update (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BCBE3E: _dispatch_source_refs_register (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BCBF68: _dispatch_source_finalize_activation (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BC4F54: _dispatch_queue_resume_finalize_activation (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103FFC581: _notify_lib_init (in /usr/lib/system/libsystem_notify.dylib)
==81281==    by 0x103FFCB89: notify_register_dispatch (in /usr/lib/system/libsystem_notify.dylib)
==81281==    by 0x10079BD07: CFUniCharPrecompose (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==81281==    by 0x103BB3DB7: _dispatch_client_callout (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x103BB3D6A: dispatch_once_f (in /usr/lib/system/libdispatch.dylib)
==81281==    by 0x10079BBBD: CFUniCharPrecompose (in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)