objective-c - 分布式对象崩溃

标签 objective-c macos cocoa ipc distributed-objects

我正在根据给定的内容使用分布式对象在两个进程之间进行通信。 here

每当我尝试在短时间内发送许多消息时,我都会观察到以下崩溃。它仅发生在 MAC OS 10.5 上。它似乎在 10.6/10.7 上运行良好

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000001
Crashed Thread:  26




    Thread 26 Crashed:
        0   libSystem.B.dylib               0x9453d2ee ConnectionResponse + 100
        1   libSystem.B.dylib               0x9453d114 DNSServiceProcessResult + 754
        2   com.apple.CFNetwork             0x929566b1 _SocketCallBack_NetService(__CFSocket*, unsigned long, __CFData const*, void const*, void*) + 43
        3   com.apple.CoreFoundation        0x92a5a6f0 __CFSocketDoCallback + 640
        4   com.apple.CoreFoundation        0x92a5bd35 __CFSocketPerformV0 + 133
        5   com.apple.CoreFoundation        0x92a513c5 CFRunLoopRunSpecific + 3141
        6   com.apple.CoreFoundation        0x92a51aa8 CFRunLoopRunInMode + 88
        7   com.apple.Foundation            0x9156c869 -[NSSocketPortNameServer portForName:host:nameServerPortNumber:] + 457
        8   com.apple.Foundation            0x9156c4c8 -[NSSocketPortNameServer portForName:host:] + 56
        9   com.apple.Foundation            0x91446a68 +[NSConnection connectionWithRegisteredName:host:usingNameServer:] + 56
        10  ...yyyyyyyyyy.xxxxxxxx          0x00110bbe -[MessageSendingModule sendMessageInternal:] + 617

这是否是由于同时向 mDNSresponder 发出许多请求而导致的。该方法适用于较少数量的消息。有人可以帮忙吗???

最佳答案

考虑使用 this example 重新编写代码这是我在 2016 年创建的。也许这可以为您提供一些稳定性。另外,您早在 2012 年就发布了此内容。OSX 10.5 已经相当老了——我正在编写的大多数 OSX 应用程序现在只支持 OSX 10.8。同时,关于崩溃,我最近了解到,如果您使用 C API 并且没有正确分配内存,那么奇怪的东西可能会出现在代码中的错误位置(用词不当)。例如,如果您使用 sprintf 等函数和其他 *f C 函数来处理 char 的内容。最近,我使用 char *s; 而不是 char s[1000];,我的应用程序在 IPC 机制中崩溃了,这让我大吃一惊!我在线程消息上遇到错误访问。当我修复 char 声明时,我的 IPC 突然开始正常工作,没有崩溃。去算算吧!

如果这不能解决您的问题,那么您可能会看到套接字被您所建立的连接数量淹没。为此,您可能需要重新思考如何构建解决方案,并找到一种减少连接频率的更好策略。

关于objective-c - 分布式对象崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412097/

相关文章:

ios - 如何设置 UITextField 的十进制值?

macos - 在 osx 10.9 (Mavericks) 上获取 glsl 330 上下文

ios - 如何在 Swift 3 中将 NSMapTable 与字符串键一起使用?

xcode - 代码签名的应用程序与其 Blessed Helper 的代码签名不匹配

objective-c - NSTask 和 Git -- 权限问题

python - 如何在 PyObjC 中正确构建主菜单?

iphone - 将 UILabel 添加到 UIImageView

ios - 使用 withParentRev 使用 Dropbox API for Objective-C 覆盖文件

iphone - 委托(delegate)方法协议(protocol)不工作 - Objective-C

objective-c - OSX - 如何实现像 Preview.app 这样的导出窗口?