Bug fixes
- Fixed build-machine paths being included in the agent binary
- Fixed
.swiftinterfaceto be parseable by Xcode 26 when building with Xcode 27
Corrección de errores
- Se solucionó un cierre inesperado (
SIGSEGVoSIGBUSenSessionAttributeManager::generateJSONObject) en el hilo de recolección, que también podía corromper el montón y causar cierres inesperados en otros lugares. El agente copió sus atributos de sesión internos, comomemUsageMbylastInteraction, durante una recolección sin mantener el bloqueo que los protege, por lo que podía leerlos mientras otro hilo los estaba actualizando. Este problema estaba presente en la versión 7.7.8 y anteriores. - Se solucionó el bloqueo del hilo principal y la finalización de las aplicaciones por parte del guardián de iOS (
0x8BADF00D), una vez que el búfer de eventos estaba lleno y la aplicación seguía realizando requests de red. El agente mantenía un bloqueo mientras reescribía su copia en disco de los eventos almacenados en el búfer, y los hilos que registraban eventos, incluido el hilo principal, esperaban ese bloqueo. Los eventos descartados de un búfer lleno tampoco se eliminaban nunca de esa copia, por lo que crecía y se reescribía por completo para cada nuevo evento. Las escrituras ahora se realizan sin mantener el bloqueo, se procesan por lotes y se eliminan los eventos descartados. Este problema estaba presente en la versión 7.7.8 y anteriores. - Se solucionó un problema por el cual los eventos ocasionalmente no se reportaban cuando se registraban, por ejemplo, al finalizar una solicitud de red, en el mismo momento en que el agente recopilaba los eventos almacenados en el búfer para una recolección. El agente vaciaba el búfer por segunda vez después de liberar su bloqueo, lo que descartaba cualquier evento agregado en ese lapso antes de que se enviara. Este problema estaba presente en la versión 7.7.8 y anteriores.
- Se solucionó que el propio trabajo JSON del agente se registrara como actividad de la aplicación.
NSJSONSerializationestá instrumentado para trazas de interacción, y el agente lo llamaba directamente para cada mensaje de log, así como para los atributos de sesión y las excepciones controladas. Eso añadía el trabajo interno del agente a las trazas de interacción y, cuando la aplicación registraba muchos logs, podía sobrecargar el rastreo. El agente ahora llama a la implementación original no instrumentada. Este problema estaba presente en la versión 7.7.8 y anteriores. - Se solucionó que las reglas de enmascaramiento del identificador de accesibilidad de Session Replay establecidas en la configuración de la aplicación se ignoraran en iOS. New Relic envía estas reglas a las aplicaciones de iOS con el identificador
accessibilityIdentifier, pero el agente solo reconocíatag, por lo que se descartaban todas esas reglas. Ahora se aceptan ambos valores. Ahora se omite una regla mal formada con una advertencia en lugar de descartar todas las reglas o provocar el cierre inesperado del agente. - Se solucionaron posibles cierres inesperados en el enmascaramiento de Session Replay. Las listas de enmascaramiento podían actualizarse mediante una reconexión, o mediante
addSessionReplayMaskedAccessibilityIdentifier:y las API relacionadas, mientras se capturaba un fotograma, sin mantener el bloqueo que utiliza la captura. Las reglas de enmascaramiento personalizadas que contenían valores que no se pueden guardar enNSUserDefaults, comonull, también podían detener la aplicación cuando el agente guardaba su configuración. Las reglas ahora se limpian antes de almacenarse, y cada actualización de las listas de enmascaramiento se bloquea. - Se solucionó que las navegaciones de
WKWebViewse reportaran sin una URL en las aplicaciones compiladas con el SDK de iOS 27. Con ese SDK,WKWebView.URLaún puede sernilcuando se inicia una navegación. El agente ahora recurre a la URL de solicitud del marco principal dedecidePolicyForNavigationAction. - Se solucionó un posible fallo de EXC_BAD_ACCESS al usar
addHTTPHeaderTrackingFor.
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.
Nueva característica
- Se actualizó la configuración de compilación de XCFramework para apuntar a una versión de despliegue mínima de iOS 15.0 y tvOS 15.0, en consonancia con los requisitos mínimos de plataforma documentados.
Corrección de errores
Se resolvió un bloqueo (
SIGSEGVdentro deobjc_msgSend) que ocurría durante las lecturas de configuración de harvest. Ocho propiedades de objeto enNRMAHarvesterConfigurationdeclaradas comoassignretenían punteros colgantes después del vaciado del autorelease pool de la respuesta/connecto del diccionarioNSUserDefaults.Se resolvió un problema en el que se descartaban todas las trazas de actividad de una sesión cuando la respuesta
/connectomitía el atributoat_capture.Se corrigió el valor
platformreportado con errores de React Native para que se reporte comoReactNative.Se corrigió el campo
agentVersionen la carga de errores de JavaScript para informar con precisión la versión del agente de iOS en lugar de la versión de la plataforma del host.Se actualizó la validación del atributo personalizado: pasar un objeto
NSArrayoNSDictionarycomo atributo de evento ahora registra un error explícito que identifica el tipo no compatible, reemplazando el mensaje de advertencia genérico"value must be an NSString, NSNumber, or BOOL".
Corregido en esta versión
Se corrigió el orden de los eventos de Session Replay antes de Meta/FullSnapshot.
se corrigió la posible pérdida de datos al reescribir
NRMAExceptionMetaDataStore.Se corrigió el script de carga de sourcemap de RN.
Se corrigió un posible problema de reinicio de sesión en
checkAndHandleSessionTimeout.
Corregido en esta versión
Se corrigió un error en el que llamar a setUserId con nil siempre iniciaba una nueva sesión.
Se evitó que los fotogramas antiguos de Session Replay se cargaran con una nueva sesión.
Se cambió reachability para actualizar una devolución de llamada en caso de cambio en lugar de llamarla cada vez.
Se corrigió un fallo de invalidación hexadecimal.
Se corrigió un fallo de vendorId de setUserId.
Se corrigió la atomicidad en las colecciones de traza de NRMA.
Se corrigió setUserId para que se mantenga sincrónico.
Se corrigió un fallo al cambiar Session Replay de un Timer a un DispatchSourceTimer.
Se corrigió un fallo de NRMAMethodProfiler de CoreData.
Se corrigió un fallo al hacer que sessionAttributeJSONString tome una instantánea de los diccionarios.
Se corrigió el texto de MSR al limitar el desplazamiento de compensación de ancho del texto de SwiftUI a su contenido.
Se corrigió una fuga de memoria de JSErrorController.
Se corrigió el texto de MSR al hacer referencia al peso de fuente numérico preciso en lugar del atributo binario de negrita.
Se actualizaron las herramientas de carga de dSYM para agregar el parámetro appVersion a dsym-upload-tools run-symbol-tool.
Se corrigieron los modales de SwiftUI faltantes en MSR.