分布式对象崩溃

Posted

技术标签:

【中文标题】分布式对象崩溃【英文标题】:Crash with Distributed Objects 【发布时间】:2012-02-23 11:25:15 【问题描述】:

根据给定的内容,我正在使用分布式对象在 2 个进程之间进行通信。 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 的许多同时请求引起的。该方法适用于较少数量的消息。谁能帮忙???

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于分布式对象崩溃的主要内容,如果未能解决你的问题,请参考以下文章

## 分布式事务面试官问我:MySQL中的XA事务崩溃了如何恢复??

从 B 站崩溃报告看分布式系统的技术栈

从 B 站崩溃报告看分布式系统的技术栈

8 年 Java 开发含泪刷题,架构岗现在好难进,有点崩溃

ZooKeeper ZAB协议:崩溃恢复消息广播

ZooKeeper ZAB协议:崩溃恢复消息广播