Que signifie cette erreur de trace?

15

Lors de l'exécution iotop -C 5 12sur mon Macbook Pro fin 2010 (10.6.7), je reçois des instances répétées de cette erreur:

dtrace: error on enabled probe ID 5 (ID 19507: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0

Quelle est la cause de cela et comment puis-je y remédier?

Chris R
la source

Réponses:

7

Selon cet article de blog (avec plus d'informations ici ), cela est dû à iTunes, que DTrace "filtre" afin qu'il ne puisse pas être utilisé pour essayer de casser le DRM d'iTunes.

Quitter iTunes résout l'erreur.

Daniel Serodio
la source
14
J'obtiens cette erreur même lorsque iTunes n'est pas en cours d'exécution.
studgeek
9

Les erreurs sont envoyées à stderr et peuvent être filtrées en exécutant la commande en tant que telle:

sudo iotop -C 5 12 2>/dev/null

Cela a pour effet secondaire de filtrer toutes les autres erreurs qui pourraient survenir. J'ai trouvé que c'était un bon compromis, en ce sens que ma sortie iotop était lisible.

Je ne suis pas sûr de la cause des erreurs, malheureusement. J'ai cherché, mais je n'ai encore rien trouvé.

David Ludwig
la source
1
C'est simplement balayer les erreurs sous le tapis et prétendre qu'elles n'existent pas! La question était de savoir ce qui les avait causés et comment les corriger, et non "comment les ignorer?".
markshep
5

En bref, l'erreur s'affiche lorsque vous tentez de tracer un processus qui a demandé à ne pas être tracé.

L'erreur n'est pas techniquement causée par iTunes, mais par un processus qui a désactivé le traçage, en utilisant du code comme le suivant.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Ce code définit un indicateur sur le processus au niveau du noyau, ce qui empêche le débogage et le traçage du processus.

L'application la plus connue qui le fait est justement iTunes, l'application dont le DRM pour lequel cette API a probablement été inventée, mais l'API est disponible pour d'autres processus. J'ai vu un certain nombre d'applications tierces utiliser cette API.

Bien sûr, comme tous les DRM, il peut être brisé. Les options pour contourner cette fonctionnalité anti-traçage et anti-débogage vont de l'utilisation d'un débogueur pour ignorer l'appel d'API aux extensions du noyau qui corrigent la fonctionnalité dans l'espace du noyau.

Alexander O'Mara
la source
1

Tiré de /unix//a/276219

Cela est potentiellement lié à El Capitan et à sa protection d'intégrité du système ( csrutil status) qui peuvent affecter le dtracecomportement.

Le correctif potentiel comprend le redémarrage de Mac en mode de récupération ( - Rau démarrage), puis dans l'exécution du terminal:

csrutil enable --without dtrace

pour garder SIP activé, mais désactivez les restrictions DTrace (remarque: il s'agit d'un paramètre non documenté ).

Ou désactivez complètement SIP en:

csrutil disable # Not recommended.

Voir:

joeyhoer
la source