¿Qué significa este error dtrace?

15

Cuando ejecuto iotop -C 5 12mi Macbook Pro de finales de 2010 (10.6.7) recibo instancias repetidas de este error:

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

¿Cuál es la causa de esto y cómo lo soluciono?

Chris R
fuente

Respuestas:

7

Según esta publicación de blog (con más información aquí ), es causada por iTunes, que DTrace "filtra", por lo que no se puede usar para intentar romper el DRM de iTunes.

Salir de iTunes resuelve el error.

Daniel Serodio
fuente
14
Recibo este error incluso cuando iTunes no se está ejecutando.
studgeek
9

Los errores se están enviando a stderr y se pueden filtrar ejecutando el comando como tal:

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

Esto tiene el efecto secundario de filtrar cualquier otro error que pueda surgir. He encontrado que es una compensación aceptable, ya que ha hecho que mi salida de iotop sea legible.

No estoy seguro de cuál es la causa de los errores, desafortunadamente. He buscado, pero todavía no he podido encontrar nada.

David Ludwig
fuente
1
¡Eso es solo barrer los errores debajo de la alfombra y pretender que no existen! La pregunta era qué los causó y cómo solucionarlos, no "¿cómo los ignoro?".
markshep
5

En resumen, el error se muestra al intentar rastrear un proceso que ha solicitado no rastrearse.

El error no es técnicamente causado por iTunes, sino por un proceso que ha deshabilitado el rastreo, utilizando un código como el siguiente.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Este código establece un indicador en el proceso en el nivel del núcleo, lo que evita la depuración y el seguimiento del proceso.

La aplicación más conocida que hace esto es iTunes, la aplicación cuyo DRM probablemente inventó esta API, pero la API está disponible para otros procesos. He visto varias aplicaciones de terceros usar esta API.

Por supuesto, como todo DRM, puede romperse. Las opciones para omitir esta característica de anti-rastreo y anti-depuración van desde el uso de un depurador para omitir la llamada API a las extensiones del kernel que parchean la característica en el espacio del kernel.

Alexander O'Mara
fuente
1

Tomado de /unix//a/276219

Esto está potencialmente relacionado con El Capitán y su Protección de integridad del sistema ( csrutil status) que puede afectar el dtracecomportamiento.

La solución potencial incluye reiniciar Mac en modo de recuperación ( - Ren el momento del arranque), luego en la ejecución de Terminal:

csrutil enable --without dtrace

para mantener SIP habilitado, pero deshabilitar las restricciones de DTrace (nota: este es un parámetro no documentado ).

O deshabilite SIP por completo:

csrutil disable # Not recommended.

Ver:

joeyhoer
fuente