When I am trying to connect with Bluetooth LE with my iphone application. It gives CoreBluetooth[ERROR] XPC connection interrupted, resetting. Why is it.?
4 に答える
「CoreBluetooth[ERROR] XPC connection interrupted, resetting」は、blued
Bluetooth デーモンがクラッシュしたことを意味します。コンソールを開いてシステム ログと DiagnosticReports を調べると、詳細を確認できる場合があります。
私の場合、どこかで SerialNumber が nil になっているために blued 内で例外が発生しているようです。回避策がなく、bugreport.apple.com に報告しました (バグ 16075785)。
実際に例外を発生させる方法は決定論的ですが、コンピューターによって異なります。Bluetooth 4.0 チップを内蔵した 1 台のコンピュータでは、 への呼び出し-[CBPeripheral discoverCharacteristics:forService:]
です。Bluetooth 4.0 USB アダプターを備えた別のコンピューターでは、-[CBPeripheral writeValue:forCharacteristic:type:]
またはへの呼び出しです。-[CBPeripheral setNotifyValue:forCharacteristic:]
'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: SerialNumber)'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff91b1141c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff9231de75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff91a0c62e -[__NSDictionaryM setObject:forKey:] + 1102
3 blued 0x0000000103d5d422 blued + 336930
4 blued 0x0000000103d4b115 blued + 262421
5 IOBluetooth 0x00007fff97354093 -[IOBluetoothL2CAPChannel processIncomingData:] + 576
6 IOBluetooth 0x00007fff97353e3c -[IOBluetoothL2CAPChannel handleMachMessage:] + 45
7 Foundation 0x00007fff94d98e35 __NSFireMachPort + 94
8 CoreFoundation 0x00007fff91a42d04 __CFMachPortPerform + 388
9 CoreFoundation 0x00007fff91a42b69 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
編集 2014-02-27: デバイスの GATT テーブルに、サービス 180A «デバイス情報» 内の特性 2A25 «シリアル番号文字列» の無効な非 UTF8 値が含まれており、blued デーモンがそれから NSString* を作成しているために、特定のクラッシュが発生します。そしてそれをNSMutableDictionaryに入れます。一時的な回避策は、最も近い ret コマンドにジャンプして、setObject:forKey: が blued 内で失敗しないようにすることです。
sudo /Applications/Xcode.app/Contents/Developer/usr/bin/lldb <<PID of blued>>
breakpoint set --fullname "-[__NSDictionaryM setObject:forKey:]" --condition "$rdx == 0"
breakpoint command add 1
register write pc `$pc+967`
continue
DONE
私にも起こります-特に、CMスキャンを停止して再開したときにCBCentralManager(CM)スキャンを開始すると、通常は解決されます。CoreBluetooth実装のバグだと思います
このエラーの別の理由を偶然見つけました: USB ハブと接続不良または電源不良により、デバッグ環境が破損しました。エラーが不規則に報告されたことを意味します。
Odyssee の詳細: 通常、ビルド マシンに直接接続しますが、この問題が発生したときは、モニターの USB ハブ経由で接続していました。Xcode を再起動し、buildmachine を再起動しましたが成功しませんでした。面白い事実: 同じセットアップが 3 日間正常に機能していましたが、金曜日 (今日) にはデバッガーへの接続がうまくいきませんでした。
このヒントが 1 回限りの不思議でないことを願っています ;-)
CBPeripheralManager にサービスを追加すると、このクラッシュが発生しました。特徴的な ID を取得するためのメソッドに厄介なタイプミス (コンパイラ エラーや警告はありません) があったことが判明しました。そのため、いくつかの特性が nil ID で作成されました。私が得たのは、iOS 7.1.1 のログにあるこのエラーだけで、デバイスのログを見ると BTServer のクラッシュ レポートが見つかりました。iOS 8.1.2 を搭載した私のデバイスはこれをコンソールに記録しなかったため、問題を見つけるのがさらに困難だった可能性があります。