Безопасен ли поток ключей iOS API? Получение дубликатов исключений предметов - PullRequest
0 голосов
/ 01 февраля 2020

Я работаю над приложением iOS, где потенциально SDK может отправлять уведомления приложению одновременно во многих различных потоках и пытаться записать некоторые элементы в цепочку для ключей. Прежде чем добавить элемент в цепочку для ключей, мой код (очевидно) проверяет, присутствует ли элемент в цепочке для ключей, и если да, то он генерирует исключение errSecDuplicateItem дублирующийся элемент.

Не поздно, я заметил сбои относящийся к исключению дублирующегося элемента, в то время как некоторый процесс пытается добавить / записать значение в цепочку для ключей.

Теперь мой вопрос, AFAIK, API цепочки для ключей являются поточно-ориентированными и реентерабельными по своей природе.

https://developer.apple.com/documentation/security/certificate_key_and_trust_services/working_with_concurrency

Однако, поскольку исключение в моем случае выбрасывается errSecDuplicateItem, это определенно похоже на проблему syn c потока. Возможно, даже если сами API цепочки для ключей являются поточно-ориентированными, поток использования (вещи, происходящие в разных потоках и т. Д. c.) В моем случае может вызвать проблему syn c. На данный момент я решил, что было бы неплохо рассматривать добавление элемента в цепочку для ключей как критическую секцию (поэтому у меня есть только весь код внутри @synchronized(self) {}) и посмотреть, сможем ли мы снова воспроизвести ошибку.

Я на правильном пути?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...