Apa artinya kesalahan dtrace ini?

15

Saat berjalan iotop -C 5 12pada Macbook Pro akhir 2010 saya (10.6.7) saya mendapatkan contoh kesalahan yang berulang:

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

Apa penyebabnya dan bagaimana cara memperbaikinya?

Chris R
sumber

Jawaban:

7

Menurut posting blog ini (dengan informasi lebih lanjut di sini ), itu disebabkan oleh iTunes, yang DTrace "filter" sehingga tidak dapat digunakan untuk mencoba memecahkan DRM iTunes.

Berhenti dari iTunes menyelesaikan kesalahan.

Daniel Serodio
sumber
14
Saya mendapatkan kesalahan ini bahkan ketika iTunes tidak berjalan.
studgeek
9

Kesalahan mendapatkan output ke stderr, dan dapat disaring dengan menjalankan perintah seperti itu:

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

Ini memang memiliki efek samping menyaring kesalahan lain yang mungkin muncul. Saya telah menemukan itu sebagai tradeoff ok, dalam hal itu membuat output iotop saya dapat dibaca.

Sayangnya, saya tidak yakin apa penyebab kesalahannya. Saya sudah mencari, tetapi belum dapat menemukan apa pun.

David Ludwig
sumber
1
Itu hanya menyapu kesalahan di bawah karpet dan berpura-pura tidak ada! Pertanyaannya adalah menanyakan apa yang menyebabkan mereka dan bagaimana cara memperbaikinya, bukan "bagaimana saya mengabaikannya?".
markshep
5

Singkatnya, kesalahan ditampilkan ketika mencoba untuk melacak proses yang meminta untuk tidak dilacak.

Kesalahan tidak secara teknis disebabkan oleh iTunes, tetapi oleh proses yang telah menonaktifkan penelusuran, menggunakan kode seperti berikut ini.

ptrace(PT_DENY_ATTACH, 0, 0, 0);

Kode ini menetapkan tanda pada proses di tingkat kernel, yang mencegah proses debug dan penelusuran proses.

Aplikasi paling terkenal yang melakukan hal ini adalah iTunes, aplikasi yang mungkin diciptakan DRM untuk API ini, tetapi API tersedia untuk proses lain. Saya telah melihat sejumlah aplikasi pihak ke-3 menggunakan API ini.

Tentu saja, seperti semua DRM itu bisa rusak. Opsi untuk mem-bypass fitur anti-tracing dan anti-debugging ini mulai dari menggunakan debugger untuk melewatkan panggilan API ke ekstensi kernel yang menambal fitur ini di ruang kernel.

Alexander O'Mara
sumber
1

Diambil dari /unix//a/276219

Ini berpotensi terkait dengan El Capitan dan Perlindungan Integritas Sistemnya ( csrutil status) yang dapat memengaruhi dtraceperilaku.

Perbaikan potensial termasuk me-reboot Mac ke mode pemulihan ( - Rsaat boot), kemudian di Terminal run:

csrutil enable --without dtrace

untuk tetap mengaktifkan SIP, tetapi nonaktifkan pembatasan DTrace (catatan: ini adalah parameter tidak berdokumen ).

Atau nonaktifkan SIP sepenuhnya dengan:

csrutil disable # Not recommended.

Lihat:

joeyhoer
sumber