Bug fixes
- Fixed build-machine paths being included in the agent binary
- Fixed
.swiftinterfaceto be parseable by Xcode 26 when building with Xcode 27
Bug fixes
- Fixed a crash (
SIGSEGVorSIGBUSinSessionAttributeManager::generateJSONObject) on the harvest thread, which could also corrupt the heap and cause crashes elsewhere. The agent copied its internal session attributes, such asmemUsageMbandlastInteraction, during a harvest without holding the lock that guards them, so it could read them while another thread was updating them. This issue was present in 7.7.8 and earlier. - Fixed the main thread blocking, and apps being terminated by the iOS watchdog (
0x8BADF00D), once the event buffer was full and the app kept making network requests. The agent held a lock while it rewrote its on-disk copy of buffered events, and threads recording events, including the main thread, waited on that lock. Events dropped from a full buffer were also never removed from that copy, so it grew and was rewritten in full for every new event. Writes now happen without holding the lock, are batched, and dropped events are removed. This issue was present in 7.7.8 and earlier. - Fixed events occasionally going unreported when they were recorded, for example by a network request finishing, at the same moment the agent collected buffered events for a harvest. The agent cleared the buffer a second time after releasing its lock, which discarded any event added in between before it was sent. This issue was present in 7.7.8 and earlier.
- Fixed the agent's own JSON work being recorded as app activity.
NSJSONSerializationis instrumented for interaction traces, and the agent called it directly for every log message as well as for session attributes and handled exceptions. That added the agent's internal work to interaction traces and, when the app logged heavily, could overwhelm tracing. The agent now calls the original, uninstrumented implementation. This issue was present in 7.7.8 and earlier. - Fixed Session Replay accessibility identifier masking rules set in Application Settings being ignored on iOS. New Relic sends these rules to iOS apps with the identifier
accessibilityIdentifier, but the agent only recognizedtag, so every such rule was dropped. Both values are now accepted. A malformed rule is now skipped with a warning instead of discarding every rule or crashing the agent. - Fixed possible crashes in Session Replay masking. Masking lists could be updated by a reconnect, or by
addSessionReplayMaskedAccessibilityIdentifier:and related APIs, while a frame was being captured, without holding the lock that capture uses. Custom masking rules containing values that can't be saved toNSUserDefaults, such asnull, could also stop the app when the agent saved its configuration. Rules are now cleaned before they are stored, and every update to the masking lists is locked. - Fixed
WKWebViewnavigations being reported without a URL in apps built with the iOS 27 SDK. With that SDK,WKWebView.URLcan still benilwhen a navigation starts. The agent now falls back to the main-frame request URL fromdecidePolicyForNavigationAction. - Fixed possible EXC_BAD_ACCESS crash when using
addHTTPHeaderTrackingFor.
Débogage
- Correction d’un problème où l’appel de
recordErrordans des conditions de faible mémoire pouvait terminer l’application hôte. Les rapports d’erreurs sont désormais rejetés et consignés dans le log, et les frames de l’agent New Relic sont retirées du haut de la stack enregistrée. - Correction d'un plantage dans
NRMALoggerBridge::logcausé par un argument manquant dans une chaîne de format de log lors de la suppression des attributs de session. Correction de deux autres chaînes de format non valides dans le même composant. - Correction d’un problème où les horodatages de tracing distribué (
tracestateet la chargeti) étaient envoyés en secondes au lieu de millisecondes lors de l’utilisation du nouveau système d’événements. - Correction d’un problème où les événements
MobileRequestréussis perdaient tous les attributs de tracing distribué lorsqu’un SDK multiplateforme passaittraceHeaders. - Mise à jour de l'agent natif pour empêcher l'ajout de traces distribuées en double aux requests signalées avec
traceHeaderspar Flutter, React Native, ou d'autres agents hybrides. Cela s'applique à la fois àMobileRequestet àMobileRequestErrordans les deux systèmes d'événements. - Application des limites minimales et maximales pour les paramètres de configuration
MaxEventPoolSizeetMaxEventBufferTime(durée maximale de mise en mémoire tampon plafonnée à 600 secondes). - Mise à jour de
recordCustomEventpour renvoyer un booléen indiquant si l’événement a été ajouté avec succès lors de l’utilisation du nouveau système d’événements, plutôt que de toujours renvoyerYES. - Mise à jour des envois d'erreurs JavaScript React Native pour transmettre la valeur de plateforme
ReactNativeavec la casse correcte, afin de correspondre au comportement de l'agent Android.
Nouvelle fonctionnalité
- Mise à jour de la configuration de build XCFramework pour cibler une version de déploiement minimale d’iOS 15.0 et de tvOS 15.0, en s’alignant sur les exigences minimales documentées de la plateforme.
Débogage
Résolution d'un plantage (
SIGSEGVdansobjc_msgSend) survenant lors des lectures de configuration de la collecte. Huit propriétés d'objet surNRMAHarvesterConfigurationdéclarées commeassignconservaient des pointeurs pendants après le vidage du pool d'autorelease de la réponse/connectou du dictionnaireNSUserDefaults.Résolution d’un problème où toutes les traces d’activité étaient abandonnées pour une session lorsque la réponse
/connectomettait l’attributat_capture.Correction de la valeur
platformsignalée avec les erreurs React Native pour qu’elle soit signalée commeReactNative.Correction du champ
agentVersiondans la charge d’erreur JavaScript pour signaler avec précision la version de l’agent iOS plutôt que la version de la plateforme hôte.Mise à jour de la validation de l’attribut personnalisé : le passage d’un objet
NSArrayouNSDictionaryen tant qu’attribut d’événement enregistre désormais un log d’erreur explicite identifiant le type non pris en charge, remplaçant le message d’avertissement générique"value must be an NSString, NSNumber, or BOOL".
Corrigé dans cette sortie
Correction du tri des événements Session Replay avant Meta/FullSnapshot.
Correction de données manquantes potentielles en réécrivant
NRMAExceptionMetaDataStore.Correction du script de téléversement de sourcemap RN.
Correction d'un problème potentiel de redémarrage de session dans
checkAndHandleSessionTimeout.
Corrigé dans cette sortie
Correction d’un bug où l’appel de setUserId avec nil démarrait toujours une nouvelle session.
A empêché le téléchargement d’anciennes frames de Session Replay avec une nouvelle session.
A modifié reachability pour mettre à jour un rappel lors d’un changement au lieu de l’appeler à chaque fois.
Correction d'un plantage lié à l'invalidation hexadécimale.
A corrigé le plantage de setUserId vendorId.
Correction de l’atomicité dans les collections de traces NRMA.
Correction de setUserId pour qu’il reste synchrone.
Correction d'un plantage en faisant passer Session Replay d'un Timer à un DispatchSourceTimer.
Correction d’un plantage de CoreData NRMAMethodProfiler.
Correction d’un plantage en faisant en sorte que sessionAttributeJSONString prenne un instantané des dictionnaires.
Correction du texte MSR en limitant le décalage de compensation de largeur du texte SwiftUI à son contenu.
Correction d’une fuite de mémoire de JSErrorController.
Correction du texte MSR en faisant référence à la graisse de police numérique précise au lieu du trait de gras binaire.
A mis à jour les outils de téléchargement dSYM pour ajouter le paramètre appVersion à dsym-upload-tools run-symbol-tool.
A corrigé les modales SwiftUI manquantes dans MSR.