Cosa significa questo errore dtrace?


15

Durante l'esecuzione iotop -C 5 12sul mio Macbook Pro (10.6.7) di fine 2010 ricevo ripetute istanze di questo errore:

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

Qual è la causa di questo e come posso risolverlo?

Risposte:


7

Secondo questo post del blog (con maggiori informazioni qui ), è causato da iTunes, che DTrace "filtra", quindi non può essere utilizzato per tentare di interrompere il DRM di iTunes.

La chiusura di iTunes risolve l'errore.


14
Ottengo questo errore anche quando iTunes non è in esecuzione.
Studgeek

9

Gli errori stanno ottenendo l'output su stderr e possono essere filtrati eseguendo il comando come tale:

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

Ciò ha l'effetto collaterale di filtrare eventuali altri errori che potrebbero presentarsi. Ho trovato un buon compromesso, in quanto ha reso leggibile l'output di iotop.

Purtroppo non sono sicuro di quale sia la causa degli errori. Ho cercato, ma non sono ancora riuscito a trovare nulla.


1
Questo è solo spazzare gli errori sotto il tappeto e fingere che non esistano! La domanda era: cosa li ha causati e come risolverli, non "come posso ignorarli?".
Marksp

5

In breve, l'errore viene visualizzato quando si tenta di tracciare un processo che ha richiesto di non essere rintracciato.

L'errore non è tecnicamente causato da iTunes, ma da un processo che ha disabilitato la traccia, usando un codice come il seguente.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Questo codice imposta un flag sul processo a livello di kernel, che impedisce il debug e la traccia del processo.

L'applicazione più nota che fa questo è iTunes, l'applicazione per cui probabilmente è stata inventata questa API per DRM, ma l'API è disponibile per altri processi. Ho visto un numero di applicazioni di terze parti utilizzare questa API.

Naturalmente, come tutti i DRM, può essere rotto. Le opzioni per bypassare questa funzionalità anti-traccia e anti-debug vanno dall'uso di un debugger per saltare la chiamata API alle estensioni del kernel che correggono la funzionalità nello spazio del kernel.


1

Tratto da /unix//a/276219

Ciò è potenzialmente correlato a El Capitan e al suo System Integrity Protection ( csrutil status) che possono influire sul dtracecomportamento.

La potenziale soluzione include il riavvio del Mac in modalità di ripristino ( - Rall'avvio), quindi in Esecuzione terminale:

csrutil enable --without dtrace

per mantenere abilitato SIP, ma disabilitare le restrizioni DTrace (nota: questo è un parametro non documentato ).

O disabilitare completamente SIP:

csrutil disable # Not recommended.

Vedere:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.