안녕하세요. iOS 앱에서 지도 렌더링 도중 메인 스레드가 크래시되어 문의드립니다.
1. 환경
- KakaoMapsSDK 2.12.14 (2.12.11 에서도 동일 스택 확인)
- iOS / Firebase Crashlytics 수집
- 최초 관측 : 2026년 8월 초
2. 크래시 스택
Crashed: com.apple.main-thread
0 KakaoMapsSDK kakao::scene::layer::K3gSubLayer::extractVisibleShape(…) + 160
1 KakaoMapsSDK kakao::scene::DefaultSceneManager::extractScene(…) + 52
2 KakaoMapsSDK kakao::view::RenderView::draw(bool) + 76
3 KakaoMapsSDK kakao::app::MTLAppEngine::render() + 280
4 QuartzCore CA::Display::DisplayLinkItem::dispatch_(…) + 64
전체 스레드 덤프는 첨부하였습니다.
3. 확인된 사항
- 서로 다른 세션·날짜의 크래시가 오프셋(+160)까지 동일합니다. 단일 경로로 보입니다.
- SDK 버전(2.12.11 / 2.12.14), 앱 화면과 무관하게 발생합니다.
- 며칠간 0건이다가 특정 일자에 집중되는 산발적 패턴입니다.
- 확인한 모든 크래시 세션에서 크래시 시점에 SDK 가 리소스를 받는 중이었습니다.
kakao::base::io::net::Http2Connector::handle_perform_multi(...)
kakao::content::AsyncDownloaderManager::start()::$\_0
Curl_getaddrinfo_ex / getaddrinfo_thread
메인 스레드가 씬을 순회하는 동안 다운로더 스레드가 씬/리소스를 갱신하면서
발생하는 문제가 아닌지 의심하고 있습니다. 산발적 발생도 네트워크 타이밍
의존으로 설명이 됩니다.
4. 당사 사용 방식
- 모든 지도 API 는 메인 스레드에서만 호출합니다.
- ShapeManager 의 addShapeLayer / removeShapeLayer,
addPolygonStyleSet, addMapPolygonShape / removeMapPolygonShape 사용
- RouteManager 의 addRouteLayer 로 경로선 표출
- 화면 전환·백그라운드 복귀 시 레이어를 일괄 제거 후 같은 런루프에서 재생성
- 포그라운드 복귀 시 activate() 직후 shape 갱신
5. 문의 사항
(1) 해당 크래시가 알려진 이슈인지, 2.12.x 중 관련 수정이 반영된 버전이 있는지
확인 부탁드립니다.
(2) ID 재사용 관련하여 아래가 안전한지 확인 부탁드립니다.
- 이미 등록된 styleSetID 로 addPolygonStyleSet 재호출
(기존 스타일셋을 참조 중인 shape 이 남아 있는 경우 포함)
- removeShapeLayer 직후 같은 런루프에서 동일 layerID 로 addShapeLayer
- 이전에 사용한 shapeID 재사용
추가로, removeShapeLayer 시 스타일셋도 함께 정리되는지, 스타일셋만
개별 제거하는 API 가 있는지 알려주시면 감사하겠습니다.
(3) shape 추가·제거의 안전한 호출 시점 가이드가 있나요?
메인 스레드 호출만으로 충분한지, activate() 직후 바로 조작해도 되는지
궁금합니다.
(4) 리소스 다운로드 중 씬 갱신과 렌더링이 동기화되는지 확인 부탁드립니다.
앱 측에서 제어 가능한 부분이 있다면 안내 부탁드립니다.
-
첨부로 파이어베이스 crashlyttics 파일 2개 올려 드립니다.
kakaomap_case1.txt (19.0 KB)
kakaomap_case2.txt (19.0 KB)
감사합니다.