버그 수정
- 힙을 손상시키고 다른 곳에서 크래시를 유발할 수 있는 수집 스레드의 크래시(
SessionAttributeManager::generateJSONObject의SIGSEGV또는SIGBUS)를 수정했습니다. 에이전트가 수집 중에 이를 보호하는 잠금을 유지하지 않고memUsageMb및lastInteraction와 같은 내부 세션 속성을 복사했기 때문에, 다른 스레드가 이를 업데이트하는 동안 에이전트가 해당 속성을 읽을 수 있었습니다. 이 문제는 7.7.8 및 이전 버전에서 발생했습니다. - 이벤트 버퍼가 가득 차고 앱이 계속해서 네트워크 requests를 수행할 때 메인 스레드가 차단되고 iOS 워치독(
0x8BADF00D)에 의해 앱이 종료되는 문제를 수정했습니다. 에이전트가 버퍼링된 이벤트의 디스크 복사본을 다시 쓰는 동안 잠금을 유지했으며, 메인 스레드를 포함하여 이벤트를 기록하는 스레드는 해당 잠금을 기다렸습니다. 가득 찬 버퍼에서 삭제된 이벤트도 해당 복사본에서 제거되지 않았으므로, 크기가 커지고 새로운 이벤트마다 전체가 다시 작성되었습니다. 이제 잠금을 유지하지 않고 쓰기가 발생하며, 일괄 처리되고 삭제된 이벤트는 제거됩니다. 이 문제는 7.7.8 및 이전 버전에 존재했습니다. - 에이전트가 수집을 위해 버퍼링된 이벤트를 가져오는 동시에 네트워크 요청 완료 등으로 인해 이벤트가 기록될 때, 간헐적으로 이벤트가 보고되지 않던 문제를 수정했습니다. 에이전트가 잠금을 해제한 후 버퍼를 한 번 더 비웠으며, 이로 인해 전송되기 전 그 사이에 추가된 모든 이벤트가 삭제되었습니다. 이 문제는 7.7.8 및 이전 버전에서 발생했습니다.
- 에이전트 자체의 JSON 작업이 앱 활동으로 기록되는 문제를 수정했습니다.
NSJSONSerialization은(는) 상호작용 추적을 위해 계측된 상태이며, 에이전트는 세션 속성 및 처리된 예외뿐만 아니라 모든 로그 메시지에 대해 이를 직접 호출했습니다. 이로 인해 에이전트의 내부 작업이 상호작용 추적에 추가되었으며, 앱이 과도하게 로그를 남길 경우 추적을 압도할 수 있었습니다. 이제 에이전트는 계측되지 않은 원래의 구현을 호출합니다. 이 문제는 7.7.8 및 이전 버전에 존재했습니다. - 애플리케이션 설정에 지정된 세션 리플레이 접근성 식별자 마스킹 규칙이 iOS에서 무시되는 문제를 수정했습니다. 뉴렐릭은 식별자
accessibilityIdentifier을(를) 사용하여 iOS 앱에 이러한 규칙을 전송하지만, 에이전트는tag만 인식했기 때문에 이러한 모든 규칙이 삭제되었습니다. 이제 두 값 모두 허용됩니다. 이제 모든 규칙을 삭제하거나 에이전트 크래시를 유발하는 대신, 잘못된 형식의 규칙은 경고와 함께 건너뜁니다. - 세션 리플레이 마스킹에서 발생할 수 있는 크래시를 수정했습니다. 프레임이 캡처되는 동안 캡처에 사용되는 잠금을 유지하지 않은 상태에서 재연결이나
addSessionReplayMaskedAccessibilityIdentifier:및 관련 API에 의해 마스킹 목록이 업데이트될 수 있었습니다.null와 같이NSUserDefaults에 저장할 수 없는 값을 포함하는 사용자 지정 마스킹 규칙은 에이전트가 설정을 저장할 때 앱을 중지시킬 수도 있었습니다. 이제 규칙은 저장되기 전에 정리되며, 마스킹 목록에 대한 모든 업데이트는 잠깁니다. - iOS 27 SDK로 빌드된 앱에서 URL 없이
WKWebView탐색이 보고되는 문제를 수정했습니다. 해당 SDK를 사용하면 탐색이 시작될 때WKWebView.URL이(가) 여전히nil일 수 있습니다. 이제 에이전트는decidePolicyForNavigationAction의 메인 프레임 요청 URL을 대신 사용합니다. addHTTPHeaderTrackingFor사용 시 발생할 수 있는 EXC_BAD_ACCESS 크래시를 수정했습니다.