Bug fixes
- Fixed build-machine paths being included in the agent binary
- Fixed
.swiftinterfaceto be parseable by Xcode 26 when building with Xcode 27
버그 수정
- 힙을 손상시키고 다른 곳에서 크래시를 유발할 수 있는 수집 스레드의 크래시(
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 크래시를 수정했습니다.
Bug fixes
- Fixed an issue where calling
recordErrorunder low-memory conditions could terminate the host application. Error reports are now dropped and logged, and New Relic agent frames are trimmed from the top of the recorded stack. - Fixed a crash in
NRMALoggerBridge::logcaused by a missing argument in a log format string when removing session attributes. Corrected two additional invalid format strings in the same component. - Fixed an issue where distributed tracing timestamps (
tracestateand payloadti) were sent in seconds instead of milliseconds when using the new event system. - Fixed an issue where successful
MobileRequestevents lost all distributed tracing attributes when a cross-platform SDK passedtraceHeaders. - Updated the native agent to prevent adding duplicate distributed traces to requests reported with
traceHeadersby Flutter, React Native, or other hybrid agents. This applies to bothMobileRequestandMobileRequestErrorin both event systems. - Enforced minimum and maximum boundary limits for
MaxEventPoolSizeandMaxEventBufferTimeconfiguration settings (maximum buffer time capped at 600 seconds). - Updated
recordCustomEventto return a boolean indicating whether the event was successfully added when using the new event system, rather than always returningYES. - Updated React Native JavaScript error uploads to pass the correctly cased
ReactNativeplatform value, matching the Android agent behavior.
새로운 기능
- 문서화된 최소 플랫폼 요구 사항에 맞춰 iOS 15.0 및 tvOS 15.0의 최소 배포 버전을 타겟으로 하도록 XCFramework 빌드 설정을 업데이트했습니다.
버그 수정
수집 설정 읽기 중 발생하는 크래시(
objc_msgSend내의SIGSEGV)를 해결했습니다./connect응답 또는NSUserDefaults딕셔너리에서 자동 해제 풀이 비워진 후assign(으)로 선언된NRMAHarvesterConfiguration의 8개 객체 속성이 댕글링 포인터를 유지했습니다./connect응답에서at_capture속성이 누락된 경우 세션에 대한 모든 활동 트레이스가 삭제되는 문제를 해결했습니다.리액트 네이티브 오류와 함께 보고된
platform값을ReactNative(으)로 보고하도록 수정했습니다.호스트 플랫폼 버전 대신 iOS 에이전트 버전을 정확하게 보고하도록 JavaScript 오류 페이로드의
agentVersion필드를 수정했습니다.커스텀 속성 유효성 검사 업데이트:
NSArray또는NSDictionary객체를 이벤트 속성으로 전달하면 이제 일반적인"value must be an NSString, NSNumber, or BOOL"경고 메시지를 대체하여 지원되지 않는 유형을 식별하는 명시적 오류를 로그에 기록합니다.
이 릴리스에서 수정됨
세션 리플레이 이벤트가 Meta/FullSnapshot보다 먼저 정렬되는 문제를 수정했습니다.
NRMAExceptionMetaDataStore을(를) 다시 작성하여 잠재적인 데이터 누락 문제를 수정했습니다.RN 소스맵 업로드 스크립트를 수정했습니다.
checkAndHandleSessionTimeout에서 잠재적인 세션 재시작 문제를 수정했습니다.
이 릴리스에서 수정됨
nil로 setUserId를 호출할 때 항상 새 세션이 시작되는 버그를 수정했습니다.
이전 세션 리플레이 프레임이 새 세션과 함께 업로드되는 것을 방지했습니다.
도달 가능성이 매번 콜백을 호출하는 대신 변경 시 콜백을 업데이트하도록 변경했습니다.
16진수 무효화 충돌을 수정했습니다.
setUserId vendorId 충돌을 수정했습니다.
NRMA 트레이스 컬렉션 전반의 원자성을 수정했습니다.
setUserId가 동기식으로 유지되도록 수정했습니다.
세션 리플레이를 Timer에서 DispatchSourceTimer로 변경하여 크래시를 수정했습니다.
CoreData NRMAMethodProfiler 충돌을 수정했습니다.
sessionAttributeJSONString이 딕셔너리의 스냅샷을 가져오도록 하여 충돌을 수정했습니다.
SwiftUI 텍스트 너비 보정 오프셋을 콘텐츠에 고정하여 MSR 텍스트를 수정했습니다.
JSErrorController 메모리 누수를 수정했습니다.
이진 굵기 특성 대신 정확한 숫자 글꼴 굵기를 참조하여 MSR 텍스트를 수정했습니다.
dsym-upload-tools run-symbol-tool에 appVersion 매개변수를 추가하도록 dSYM 업로드 도구를 업데이트했습니다.
MSR에서 누락된 SwiftUI 모달을 수정했습니다.