YunDaeHyeon
← 미러링부스

공유 기능 구현 시 발생한 문제 정리

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 경고는 별개 문제로 보고, 렌더링 포맷에서 알파 채널을 제거해 따로 해결

관련 프로젝트