v2.4.3 - getTopViewController Crash Hotfix
🔴 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.swiftinstrumentation/screen/ScreenLoadTracerEnhanced.swiftWhatapIOSAgent.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 설정으로 호출 빈도 감소 → 추가 안전성 확보.