12

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

4 に答える 4

3

「CoreBluetooth[ERROR] XPC connection interrupted, resetting」は、bluedBluetooth デーモンがクラッシュしたことを意味します。コンソールを開いてシステム ログと 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
于 2014-02-15T00:30:28.137 に答える
2

私にも起こります-特に、CMスキャンを停止して再開したときにCBCentralManager(CM)スキャンを開始すると、通常は解決されます。CoreBluetooth実装のバグだと思います

于 2013-03-18T11:09:04.557 に答える
0

このエラーの別の理由を偶然見つけました: USB ハブと接続不良または電源不良により、デバッグ環境が破損しました。エラーが不規則に報告されたことを意味します。

Odyssee の詳細: 通常、ビルド マシンに直接接続しますが、この問題が発生したときは、モニターの USB ハブ経由で接続していました。Xcode を再起動し、buildmachine を再起動しましたが成功しませんでした。面白い事実: 同じセットアップが 3 日間正常に機能していましたが、金曜日 (今日) にはデバッガーへの接続がうまくいきませんでした。

このヒントが 1 回限りの不思議でないことを願っています ;-)

于 2016-10-21T08:27:39.533 に答える
0

CBPeripheralManager にサービスを追加すると、このクラッシュが発生しました。特徴的な ID を取得するためのメソッドに厄介なタイプミス (コンパイラ エラーや警告はありません) があったことが判明しました。そのため、いくつかの特性が nil ID で作成されました。私が得たのは、iOS 7.1.1 のログにあるこのエラーだけで、デバイスのログを見ると BTServer のクラッシュ レポートが見つかりました。iOS 8.1.2 を搭載した私のデバイスはこれをコンソールに記録しなかったため、問題を見つけるのがさらに困難だった可能性があります。

于 2015-03-16T15:16:16.203 に答える