คำถามติดแท็ก segmentation-fault

2
ระบบปฏิบัติการตรวจพบการละเมิดการเข้าถึงหน่วยความจำอย่างไร
ระบบปฏิบัติการ (โดยเฉพาะ Linux) รู้ได้อย่างไรว่าคุณเข้าถึงตำแหน่งหน่วยความจำที่คุณไม่ได้รับอนุญาต คำถามนี้ได้รับแรงบันดาลใจจากพอยน์เตอร์เหล่านั้น! วิธีที่ฉันเห็นคือทุกอย่างในคอมพิวเตอร์นั้นเกี่ยวกับการประนีประนอมระหว่างความเร็วความปลอดภัยความซื่อสัตย์และสิ่งต่าง ๆ ฉันตระหนักดีถึงการแมปหน่วยความจำใน Linux แต่มันฟังดูไร้สาระสำหรับฉันที่เคอร์เนลตรวจสอบว่าตำแหน่งที่คุณพยายามเข้าถึงนั้นอยู่ในช่วงที่ถูกต้องทุกครั้งที่คุณทำการเข้าถึง ดูเหมือนว่าจะเสียเวลามากซึ่งอาจใช้เวลาในการทำสิ่งที่มีประสิทธิผลมากขึ้น (แต่อาจปลอดภัยน้อยกว่าโดยไม่มีการตรวจสอบ!) หรือบางทีมันอาจจะจำการเข้าถึงล่าสุดทั้งหมดและตรวจสอบพวกเขาในทุกติ๊กจับเวลาฮาร์ดแวร์? (แต่นั่นฟังดูไม่ปลอดภัยและช้าอีกครั้ง) ฉันประหลาดใจที่คำถามนี้ดูเหมือนจะไม่ได้ตอบทุกที่ มันเป็นสิ่งที่ฉันสงสัยมาตลอด มันทำให้ฉันคิดว่ามีส่วนหนึ่งของฮาร์ดแวร์ที่จะทำสิ่งนี้ในนามของระบบปฏิบัติการในระดับที่ดีและสะดวกสบาย แต่ถึงกระนั้นก็อาจจะต้องโหลดหน่วยความจำกระบวนการถัดไปแมปในทุกบริบทสลับซึ่งฟังดูช้า ดังนั้นใช่แล้วฉันกำลังจะไปสักหน่อย: ระบบปฏิบัติการตรวจพบการละเมิดหน่วยความจำได้อย่างไร ขอบคุณ

1
ระบบปฏิบัติการไม่ได้สร้างการถ่ายโอนข้อมูลหลักตามค่าเริ่มต้นเมื่อแอปพลิเคชันขัดข้อง
ฉันกำลังทำงานบน Linux Fedora เวอร์ชั่น: 2.6.31.5 ฉันตั้งข้อกำหนดก่อนหน้านี้ของขนาดดัมพ์หลักเป็น "ไม่ จำกัด " ปัญหาคือเมื่อใดก็ตามที่มีข้อยกเว้นเกิดขึ้นมันจะแสดงข้อความเช่น Segementaion fault (core dumped) และข้อความยกเว้นอื่น ๆ ที่เกี่ยวกับความเคารพของพวกเขา ..... แต่มันไม่ได้สร้างไฟล์ coredump ภายในไดเรกทอรีที่ฉันทำงานและไม่ได้ผลิตเลย ไฟล์ core dump ในไดเร็กทอรีใด ๆ ของระบบ แต่เมื่อฉันบังคับให้สร้างการถ่ายโอนข้อมูลหลักโดยใช้ "gcore -o corename PID" มันจะให้ coredump ชื่อ "corename.PID" ดังนั้นคำถามของฉันคือ "เหตุใดจึงไม่สร้างคอร์ดัมพ์ตามค่าเริ่มต้นเมื่อแอปพลิเคชันขัดข้อง" หากใครมี detais กรุณาแบ่งปันกับฉัน :) ขอขอบคุณล่วงหน้าไปยังทุก repliers ขอบคุณ vlc

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

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

1
X11 segfaults ใน fglrx-driver (ati) อย่างเป็นทางการบน arch linux
เมื่อหลายวันก่อนฉันติดตั้ง ArchLinux ใน HP 8200 Elite ของฉันเพราะเป็นหนึ่งใน distros ที่ใช้งานได้จริงกับฮาร์ดแวร์ใหม่ของฉัน ตอนนี้ฉันต้องการเรียกใช้เซิร์ฟเวอร์ Xorg ซึ่งทำงานได้อย่างสมบูรณ์แบบโดยใช้vesaเป็นไดร์เวอร์ แต่เนื่องจากฉันมี ATI Radeon HD 6570 ฉันจึงต้องการใช้ไดรเวอร์ที่เป็นกรรมสิทธิ์ดั้งเดิมจาก ATI ดังนั้นผมทำตามคำแนะนำบนวิกิพีเดีย Arch สำหรับ ATI Catalyst ในส่วนเกี่ยวกับเมล็ดที่กำหนดเอง สร้างและติดตั้งแพ็คเกจได้อย่างสมบูรณ์แบบโดยไม่มีข้อผิดพลาด สิ่งเดียวที่ฉันเปลี่ยนคือการสร้าง arch-kernel เดิมอีกครั้ง แต่เพิ่มไดรเวอร์เครือข่าย Intel นั่นคือเหตุผลที่ฉันต้องการเคอร์เนลที่กำหนดเอง การพยายามเริ่ม xserver ด้วย fglrx-driver ต้นฉบับจะสิ้นสุดลงใน segfault เมื่อทำงาน startx นี่คือฉัน/etc/X11/xorg.conf: Section "Monitor" Identifier "Monitor0" EndSection Section "Device" Identifier "Device0" …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.