← 미러링부스
공유 기능 구현 시 발생한 문제 정리
2026.01.27적용 완료
지속적인 크래시 원인을 추적해 렌더링 로직이 아닌 Xcode 디버그 옵션과 Metal 검증 레이어 간 충돌임을 규명했습니다.
시도한 것
- ImageRenderer 교체
- UIGraphicsImageRenderer 전환
- 임시 파일 공유 방식
- CoreGraphics 직접 렌더링
- PNG 무손실 변환
- 재비트맵화
- ShareLink → UIActivityViewController 전환
- (모두 동일한 크래시가 재현됨)
판단과 발견
- 렌더링 경로와 공유 경로를 모두 바꿔도 같은 크래시가 재현됨 → 원인이 이미지 처리 코드 밖에 있다는 단서로 해석
- 크래시 로그의 MTLDebugBuffer를 조사해, Metal 엔진에 실제로 존재하는 객체가 아니라 Metal API Validation을 켰을 때만 끼어드는 Xcode 디버그 전용 검증 래퍼임을 확인
- 즉 이미지 자체가 잘못된 것이 아니라, 검증 레이어가 만든 텍스처와 실제 버퍼의 resourceOptions가 어긋나 assertion이 걸리는 상황으로 정리
확인한 것
- 검증 옵션을 끈 상태에서 Debug와 Release 양쪽 모두 크래시가 재현되지 않는 것을 확인
- 같은 증상을 겪은 외부 사례들과 대조해, 디버그 전용 옵션이라는 해석이 맞는지 교차 확인
- TestFlight 외부 테스트에서 테스터 25명이 설치한 기간 동안 크래시 리포트 0건
남긴 것
- 옵션을 끈 뒤에도 남는 AlphaPremulLast 경고는 별개 문제로 보고, 렌더링 포맷에서 알파 채널을 제거해 따로 해결