Skip to content

v2.4.3 - getTopViewController Crash Hotfix

Choose a tag to compare

@devload devload released this 14 Apr 01:36
· 17 commits to main since this release

🔴 Critical Hotfix — Infinite Recursion Crash

Fixes stack overflow crash reported in WKWebView + SPA environments (React, Vue, Angular 등).

Root Cause

UINavigationController.visibleViewController가 다음 상황에서 nil을 반환:

  • 빈 NavigationController (viewControllers.isEmpty)
  • Push/pop 애니메이션 transition 중간 상태
  • 빈 modal이 상위 nav에 present된 순간 (nil 전파)

기존 getTopViewController는 종료 조건 없이 재귀하여 nil을 계속 전달 → connectedScenes를 재호출 → 동일한 nav 반환 → 무한 재귀 → EXC_BAD_ACCESS (stack overflow).

Fix — 3-Layer Defense

Layer 방어 대상
1. Depth limit (20) 모든 형태의 과도한 재귀
2. Cycle detection ObjectIdentifier Set 기반 순환 감지
3. Nil-safe traversal 빈 nav 즉시 반환 (이번 버그 직격)

Verification

WebViewStressApp T10 시나리오로 재현 및 검증:

  • Before: depth=200 overflow=true (crash)
  • After: depth=1 overflow=false ✅

Modified Files

  • exporter/WhatapSpanProcessor.swift
  • instrumentation/screen/ScreenLoadTracerEnhanced.swift
  • WhatapIOSAgent.swift

Artifact

  • XCFramework: https://repo.whatap-mobile-agent.io/uploads/2.4.3/WhatapAgent.xcframework.zip
  • Checksum (SHA-256): a5118aa2014642d2837b4370fa7892d77ec58d626cca665c01a81fc6283e9f72

Upgrade

.package(url: "https://github.com/whatap/WhatapIOSAgent-Release", .upToNextMajor(from: "2.4.3"))

추가 권장: WebView 사용 시 setupWebViewBridge 설정으로 호출 빈도 감소 → 추가 안전성 확보.