ข้อผิดพลาด dtrace นี้หมายความว่าอย่างไร


15

เมื่อทำงานiotop -C 5 12กับ Macbook 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

สิ่งนี้มีผลข้างเคียงของการกรองข้อผิดพลาดอื่น ๆ ที่อาจเกิดขึ้น ฉันได้พบว่ามันเป็นการแลกเปลี่ยนที่ตกลงกันได้ทำให้ฉันสามารถอ่านเอาต์พุตของไอโซโทปได้

ฉันไม่แน่ใจว่าสาเหตุของข้อผิดพลาดคืออะไร ฉันค้นหาแล้ว แต่ยังไม่พบสิ่งใดเลย


1
นั่นเป็นเพียงการกวาดข้อผิดพลาดใต้พรมและแสร้งทำว่ามันไม่มีอยู่จริง! คำถามคือการถามว่าอะไรเป็นสาเหตุของพวกเขาและวิธีแก้ไขไม่ใช่ "ฉันจะเพิกเฉยได้อย่างไร"
markshep

5

กล่าวโดยย่อข้อผิดพลาดจะปรากฏขึ้นเมื่อพยายามติดตามกระบวนการที่ร้องขอไม่ให้ติดตาม

ข้อผิดพลาดไม่ได้เกิดจากทางเทคนิคโดย iTunes แต่เป็นกระบวนการที่ปิดใช้งานการติดตามโดยใช้รหัสดังนี้

ptrace(PT_DENY_ATTACH, 0, 0, 0);

รหัสนี้ตั้งค่าสถานะในกระบวนการในระดับเคอร์เนลซึ่งป้องกันการดีบักและติดตามของกระบวนการ

แอปพลิเคชันที่รู้จักกันดีที่สุดที่เกิดขึ้นเป็น iTunes ซึ่งเป็นแอปพลิเคชันที่ DRM API นี้อาจถูกคิดค้นขึ้นมา แต่ API นั้นพร้อมใช้งานสำหรับกระบวนการอื่น ฉันเคยเห็นแอปพลิเคชันบุคคลที่สามจำนวนหนึ่งใช้ API นี้

แน่นอนเช่นเดียวกับ DRM ทั้งหมดสามารถถูกทำลายได้ ตัวเลือกสำหรับการเลี่ยงผ่านคุณลักษณะการต่อต้านการติดตามและการดีบักช่วงจากการใช้ดีบักเกอร์เพื่อข้ามการเรียก API ไปยังส่วนขยายเคอร์เนลที่แพทช์คุณลักษณะออกในพื้นที่เคอร์เนล


1

นำมาจาก/unix//a/276219

สิ่งนี้อาจเกี่ยวข้องกับ El Capitan และ System Integrity Protection ( csrutil status) ซึ่งอาจมีผลต่อdtraceพฤติกรรม

การแก้ไขที่เป็นไปได้รวมถึงการรีบูตเครื่อง Mac เข้าสู่โหมดการกู้คืน ( - Rณ เวลาบูต) จากนั้นในการรันเทอร์มินัล:

csrutil enable --without dtrace

เพื่อให้ SIP เปิดใช้งาน แต่ปิดใช้งานข้อ จำกัด DTrace (หมายเหตุ: นี่คือพารามิเตอร์ที่ไม่มีเอกสาร )

หรือปิดใช้งาน SIP อย่างสมบูรณ์โดย:

csrutil disable # Not recommended.

ดู:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.