Débogage
- Correction de l’inclusion des chemins de la machine de build dans le binaire de l’agent
- Correction de
.swiftinterfacepour qu’il soit analysable par Xcode 26 lors de la compilation avec Xcode 27
Débogage
- Correction d'un plantage (
SIGSEGVouSIGBUSdansSessionAttributeManager::generateJSONObject) sur le thread de collecte, qui pouvait également corrompre le tas, et causer des plantages ailleurs. L'agent copiait ses attributs de session internes, tels quememUsageMbetlastInteraction, pendant une collecte sans détenir le verrou qui les protège, de sorte qu'il pouvait les lire pendant qu'un autre thread les mettait à jour. Ce problème était présent dans la version 7.7.8 et les versions antérieures. - Correction du blocage du thread principal, et de la fermeture des applications par le watchdog iOS (
0x8BADF00D), une fois que le tampon d’événements était plein, et que l’application continuait à effectuer des requests réseau. L’agent maintenait un verrou pendant qu’il réécrivait sa copie sur disque des événements mis en mémoire tampon, et les threads enregistrant les événements, y compris le thread principal, attendaient ce verrou. Les événements rejetés d’un tampon plein n’étaient pas non plus supprimés de cette copie, elle augmentait donc de volume, et était entièrement réécrite pour chaque nouvel événement. Les écritures se produisent désormais sans maintenir le verrou, sont regroupées par lots, et les événements rejetés sont supprimés. Ce problème était présent dans la version 7.7.8, et les versions antérieures. - Correction d’événements qui n’étaient parfois pas signalés lorsqu’ils étaient enregistrés, par exemple par la fin d’une requête réseau, au même moment où l’agent collectait les événements mis en mémoire tampon pour une récolte. L’agent vidait la mémoire tampon une seconde fois après la sortie de son verrou, ce qui supprimait tout événement ajouté entre-temps avant qu’il ne soit envoyé. Ce problème était présent dans la version 7.7.8 et les précédentes.
- Correction du problème où le propre travail JSON de l’agent était enregistré comme activité de l’application.
NSJSONSerializationest instrumenté pour les traces d’interaction, et l’agent l’appelait directement pour chaque message de log, ainsi que pour les attributs de session, et les exceptions gérées. Cela ajoutait le travail interne de l’agent aux traces d’interaction, et, lorsque l’application générait beaucoup de logs, pouvait saturer le tracing. L’agent appelle désormais l’implémentation d’origine, non instrumentée. Ce problème était présent dans la version 7.7.8, et les versions antérieures. - Correction d'un problème où les règles de masquage de l'identifiant d'accessibilité de Session Replay définies dans les paramètres de l'application étaient ignorées sur iOS. New Relic envoie ces règles aux applications iOS avec l'identifiant
accessibilityIdentifier, mais l'agent ne reconnaissait quetag, ce qui entraînait le rejet de toutes ces règles. Les deux valeurs sont désormais acceptées. Une règle mal formée est désormais ignorée avec un avertissement, au lieu de rejeter toutes les règles, ou de faire planter l'agent. - Correction d'éventuels plantages lors du masquage de Session Replay. Les listes de masquage pouvaient être mises à jour par une reconnexion, ou par
addSessionReplayMaskedAccessibilityIdentifier:et les API associées, pendant qu’une trame était en cours de capture, sans maintenir le verrou que la capture utilise. Les règles de masquage personnalisées contenant des valeurs qui ne peuvent pas être enregistrées dansNSUserDefaults, telles quenull, pouvaient également arrêter l’application lorsque l’agent enregistrait sa configuration. Les règles sont désormais nettoyées avant d’être stockées, et chaque mise à jour des listes de masquage est verrouillée. - Correction des navigations
WKWebViewsignalées sans URL dans les applications compilées avec le SDK iOS 27. Avec ce SDK,WKWebView.URLpeut toujours êtrenillorsqu’une navigation commence. L’agent se rabat désormais sur l’URL de la request du cadre principal à partir dedecidePolicyForNavigationAction. - Correction d’un plantage EXC_BAD_ACCESS possible lors de l’utilisation de
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.