2012-02-23 57 views
2

我正在使用分佈式對象在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。該方法適用於較少數量的消息。任何人都可以請幫忙?

回答

0

請考慮我在2016年在此處創建的this example的代碼的重做。也許這可以爲您提供一些穩定性。另外,你在2012年發佈了這個版本。OSX 10.5將會相當老舊 - 我編寫的大部分OSX應用程序現在都只支持OSX 10.8。與此同時,在崩潰事件中,最近我學到的是,如果您使用C API並且沒有正確分配內存,那麼您的代碼中可能出現奇怪的東西(錯誤的地方)。例如,如果你正在使用sprintf和其他* char函數來處理char的函數。最近,我用char *s;而不是char s[1000];,我的應用程序在IPC機制中崩潰,令我驚異!我在線程消息中遇到了BAD ACCESS。當我修正char聲明時,我的IPC突然開始正常工作,沒有崩潰。去搞清楚!

如果這樣不能解決您的問題,那麼您可能會看到您正在建立的連接數量不堪重負的套接字。爲此,您可能需要重新考慮如何構建解決方案並找到更少連接的更好策略。