Що означає ця помилка dtrace?


15

Під час запуску iotop -C 5 12MacBook Pro наприкінці 2010 року (10.6.7) я отримую повторні випадки цієї помилки:

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.

Звичайно, як і всі 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.