O que esse erro dtrace significa?


15

Ao executar iotop -C 5 12no meu Macbook Pro de final de 2010 (10.6.7), recebo instâncias repetidas desse erro:

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 é a causa disso e como corrigi-lo?

Respostas:


7

De acordo com este post do blog (com mais informações aqui ), é causado pelo iTunes, que o DTrace "filtra" para que não possa ser usado para tentar quebrar o DRM do iTunes.

Sair do iTunes resolve o erro.


14
Eu recebo esse erro mesmo quando o iTunes não está sendo executado.
studgeek

9

Os erros estão obtendo saída para o stderr e podem ser filtrados executando o comando da seguinte maneira:

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

Isso tem o efeito colateral de filtrar outros erros que possam surgir. Descobri que é uma troca aceitável, na medida em que torna minha saída iotop legível.

Infelizmente, não sei qual é a causa dos erros. Eu pesquisei, mas ainda não consegui encontrar nada.


1
Isso é apenas varrer os erros para debaixo do tapete e fingir que eles não existem! A questão era perguntar o que os causou e como corrigi-los, não "como os ignoro?".
markshep

5

Em resumo, o erro é mostrado ao tentar rastrear um processo que solicitou não ser rastreado.

Tecnicamente, o erro não é causado pelo iTunes, mas por um processo que desativou o rastreamento, usando um código como o seguinte.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Esse código define um sinalizador no processo no nível do kernel, o que impede a depuração e o rastreamento do processo.

O aplicativo mais conhecido que faz isso é o iTunes, o aplicativo para o qual DRM esta API provavelmente foi inventada, mas a API está disponível para outros processos. Eu já vi vários aplicativos de terceiros usarem essa API.

Obviamente, como todo DRM, ele pode ser quebrado. As opções para ignorar esse recurso anti-rastreamento e anti-depuração variam do uso de um depurador para ignorar a chamada da API para extensões do kernel que corrigem o recurso no espaço do kernel.


1

Retirado de /unix//a/276219

Isso está potencialmente relacionado ao El Capitan e sua System Integrity Protection ( csrutil status), que podem afetar o dtracecomportamento.

A possível correção inclui reiniciar o Mac no modo de recuperação ( - Rno momento da inicialização) e, em seguida, na execução do Terminal:

csrutil enable --without dtrace

para manter o SIP ativado, mas desative as restrições do DTrace (nota: este é um parâmetro não documentado ).

Ou desative completamente o SIP:

csrutil disable # Not recommended.

Vejo:

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.