App Crash Report에서 Concurrency 오류 발생
KakaoLogin시 간혈적으로 App Crash가 발생을 확인

다양한 ThirdPartyLogin을 위해 async/await을 사용하고 있었기때문에 withCheckedThrowingContinuation로 감싼 형태였고
특정 기기나 OS, 혹은 특정 유저마다 발생하는게 아니였고 같은 조건이여도 정상적으로 동작하는 경우가 있었고
CheckedContinuation.resume(returning:)
CheckedContinuation.resume(throwing:)
둘 모두에서 Crash가 발생하여 SDK에서 발생하는 문제임이라 생각하여 개발자 포럼에 확인 요청
- iOS SDK에서 Concurrency 사용시 app crash
iOS SDK에서 Concurrency 사용시 app crash
KakaoOpenSDK - 2.24.0 App ID - 573044 문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요. 앱에서 Concurrency 사용을 위해서 UserApi.shared.loginWithKakaoTalk 를 withCheckedThrowingContinuation로 감싸서
devtalk.kakao.com
@MainActor
func loginWithKakao() async throws -> OAuthToken {
try await UserApi.isKakaoTalkLoginAvailable() ? loginWithKakaoTalk() : loginWithKakaoAccount()
}
@MainActor
func loginWithKakaoTalk() async throws -> OAuthToken {
try await withCheckedThrowingContinuation { continuation in
UserApi.shared.loginWithKakaoTalk { oAuthToken, error in
if let error {
continuation.resume(throwing: error)
} else if let oAuthToken {
continuation.resume(returning: oAuthToken)
} else {
continuation.resume(throwing: KakaoLoginError.emptyData)
}
}
}
}
@MainActor
func loginWithKakaoAccount() async throws -> OAuthToken {
try await withCheckedThrowingContinuation { continuation in
UserApi.shared.loginWithKakaoAccount { oAuthToken, error in
if let error {
continuation.resume(throwing: error)
} else if let oAuthToken {
continuation.resume(returning: oAuthToken)
} else {
continuation.resume(throwing: KakaoLoginError.emptyData)
}
}
}
}
카카오 측에서 오류 확인, 수정 후 배포

수정 된 SDK로 버전 업을 하였는데 같은 크래시 발생 .... 그 전 보단 확실히 줄었지만 내쪽 코드가 문제인것 같은데 혹시나 해서 재 문의

SDK 담당자분과 소통하면서 원인을 찾아가던 중 하기와 같은 답변을 받자마자 원인 파악이 가능했다.

라이브러리나 SDK는 문제가 없을거라는 안일한 생각이 문제였던것 .....
보자마자 nslock을 사용하여 단일 실행을 보장하였고 그 뒤엔 관련 크래시가 발생하지 않았다 ...ㅎㅎㅎㅎ
'iOS > Trouble Shooting' 카테고리의 다른 글
| [iOS] gaurd let _ = try? await evaluateJavaScript 오류 (1) | 2025.05.11 |
|---|