TL;DR
- Firebase Analytics SDK 12.14.0이
sdk-exp응답을 처리한 직후 iOS 앱에서 발생하는 충돌이 여러 출시 빌드에서 급증함. - 2026년 9월 29일 00:41 UTC부터 첫 18분 동안 사용자 56명에게서 충돌 56건이 보고됐으며, 앱 업데이트는 배포되지 않음.
- 확인된 충돌 42건 모두
https://app-analytics-services.com/sdk-exp에 대한 HTTP 200 응답 직후 발생함. - 예외는
-[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil이며, 실험 응답이 nil 키로 파싱되는 문제일 가능성이 제기됨. - 재현 여부는 서버 응답에 달려 있으며, Firebase 팀은 문제를 인지하고 조사 중임.
문제 설명
- 2026년 9월 29일 00:41 UTC부터 프로덕션 iOS 앱의 충돌이 증가함. 첫 18분 동안 사용자 56명에게서 충돌 56건이 발생했으며, 앱 업데이트는 배포되지 않은 상태임.
- 이미 출시된 4개 빌드에서 같은 시각에 충돌이 시작됨.
- 예외 유형은
NSInvalidArgumentException이며, 오류 메시지는-[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil임. - 조사한 충돌 42건 모두
https://app-analytics-services.com/sdk-exp에 대한POST요청이 HTTP 200 응답을 받은 직후 발생함. - 충돌 시점에
APMExperimentWorkerQueue가 응답을 처리 중이며, 호출 흐름은 다음과 같음. -[GULMutableDictionary dictionary]-[APMEExperiment copyWithZone:]-[APMESnapshot initWithSDKName:experiments:]-[APMESnapshot initWithProtobuf:]-[APMETaskManager experimentSnapshotsFromExperimentResponse:]-[APMETaskManager handleFetchingExperimentsResponse:data:error:]__35-[APMETaskManager fetchExperiments]_block_invoke- 충돌 스레드에는
_dispatch_call_block_and_release에서-[__NSDictionaryM setObject:forKeyedSubscript:]로 이어지는 호출만 표시됨.GULMutableDictionary setObject:forKeyedSubscript:가dispatch_async를 통해 쓰기 작업을 수행해 호출자의 스택 프레임이 남지 않는 현상과 부합함. - 보고 내용은 00:41 UTC부터 제공된 실험 페이로드가 nil 키로 파싱되는 것으로 보인다며,
sdk-exp설정을 확인하고 롤백해 달라고 요청함.
재현 방법 및 환경
- 재현 여부는 서버 응답에 따라 달라짐. 앱을 실행하면 SDK가
sdk-exp를 가져오고, 1초 이내에 앱이 충돌함. - Firebase SDK 버전: 12.14.0
- Xcode 버전: 26.5
- 설치 방식: Swift Package Manager
- Firebase 제품: Analytics
- 대상 플랫폼: iOS
Firebase 팀의 답변
팀이 문제를 인지하고 조사 중임.
- 이슈는 2026년 9월 29일에 열렸으며,
api: analytics,priority: p0라벨이 지정됨.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요