Что означает эта ошибка dtrace?


15

При работе iotop -C 5 12на моем MacBook Pro (10.6.7), выпущенном в конце 2010 года, я неоднократно получал эту ошибку:

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

В чем причина этого и как я могу это исправить?

Ответы:


7

Согласно этому сообщению в блоге (с дополнительной информацией здесь ), это вызвано iTunes, который DTrace «фильтрует», поэтому его нельзя использовать для попытки сломать DRM iTunes.

Выход из iTunes устраняет ошибку.


14
Я получаю эту ошибку, даже когда iTunes не работает.
Studgeek

9

Ошибки выводятся в stderr, и их можно отфильтровать, выполнив команду следующим образом:

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

Это имеет побочный эффект фильтрации любых других ошибок, которые могут возникнуть. Я нашел, что это был хороший компромисс, потому что он сделал мой вывод iotop читабельным.

Я не уверен, в чем причина ошибок, к сожалению. Я искал, но пока не смог ничего найти.


1
Это просто скрывает ошибки и делает вид, что их не существует! Вопрос был в том, что их вызвало и как их исправить, а не «как их игнорировать?».
отмечается

5

Короче говоря, ошибка отображается при попытке отследить процесс, который запросил, чтобы он не отслеживался.

Технически ошибка вызвана не iTunes, а процессом, который отключил трассировку с использованием кода, подобного следующему.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Этот код устанавливает флаг процесса на уровне ядра, что предотвращает отладку и отслеживание процесса.

Самым известным приложением, которое делает это, является iTunes, приложение, для которого DRM этот API, вероятно, был изобретен, но API доступен для других процессов. Я видел множество сторонних приложений, использующих этот API.

Конечно, как и все DRM, его можно сломать. Варианты обхода этой функции защиты от трассировки и отладки варьируются от использования отладчика для пропуска вызова API до расширений ядра, которые исправляют эту функцию в пространстве ядра.


1

Взято с /unix//a/276219

Это потенциально связано с El Capitan и его Системной защитой целостности ( csrutil status), которая может повлиять на dtraceповедение.

Возможное исправление включает в себя перезагрузку Mac в режиме восстановления ( - Rво время загрузки), а затем в терминале запустить:

csrutil enable --without dtrace

оставить SIP включенным, но отключить ограничения DTrace (примечание: это недокументированный параметр ).

Или полностью отключите SIP:

csrutil disable # Not recommended.

Видеть:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.