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

ความผิดพลาดในการแบ่งกลุ่มเกิดขึ้นเมื่อเข้าถึงหน่วยความจำซึ่งไม่ได้เป็นของกระบวนการของคุณ ใช้แท็กนี้ร่วมกับแท็กที่ระบุภาษาและแท็กที่ระบุระบบปฏิบัติการ ความผิดพลาดในการแบ่งกลุ่มมักเป็นผลมาจากการดำเนินการ dereference ด้วยตัวแปรตัวชี้ (ส่วนใหญ่มักมีที่อยู่ที่ไม่ถูกต้อง) หรือบัฟเฟอร์ล้น สาเหตุหลักของค่าตัวชี้ที่ไม่ถูกต้องอาจอยู่ไกลจากตำแหน่งที่สร้างข้อบกพร่องในการแบ่งส่วน


17
ทำไมฉันถึงได้รับข้อผิดพลาดในการแบ่งส่วนเมื่อเขียนถึง“ char * s” ที่เริ่มต้นด้วยตัวอักษรสตริง แต่ไม่ใช่“ char s []”
รหัสต่อไปนี้ได้รับ seg ข้อผิดพลาดในบรรทัด 2: char *str = "string"; str[0] = 'z'; // could be also written as *str = 'z' printf("%s\n", str); ขณะนี้ใช้งานได้ดีอย่างสมบูรณ์: char str[] = "string"; str[0] = 'z'; printf("%s\n", str); ทดสอบกับ MSVC และ GCC


23
สัญญาณ Android ร้ายแรง 11 (SIGSEGV) ที่ 0x636f7d89 (รหัส = 1) จะติดตามได้อย่างไร?
ฉันได้อ่านโพสต์อื่น ๆ เกี่ยวกับการติดตามเหตุผลในการรับSIGSEGVแอพ Android ฉันวางแผนที่จะทำให้แอพของฉันเป็นไปได้สำหรับ NullPointers ที่เกี่ยวข้องกับการใช้งาน Canvas แต่SIGSEGVbarfs ของฉันใช้ที่อยู่หน่วยความจำที่แตกต่างกันในแต่ละครั้ง พลัสผมเคยเห็นและcode=1 code=2หากที่อยู่หน่วยความจำเป็น0x00000000ฉันจะมีเงื่อนงำมันเป็น NullPointer คนสุดท้ายที่ฉันได้คือcode=2: A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2) มีข้อเสนอแนะเกี่ยวกับวิธีติดตามสิ่งนี้หรือไม่? ฉันมีผู้ต้องสงสัย แต่ฉันยังไม่กระตือรือร้นที่จะทดลองกับมัน แอพของฉันใช้ OSMDroid API สำหรับการทำแผนที่ออฟไลน์ คลาส OverlayItem แสดงถึงเครื่องหมาย / โหนดบนแผนที่ ฉันมีบริการที่รวบรวมข้อมูลผ่านเครือข่ายเพื่อเติมข้อมูล OverlayItem ซึ่งจะปรากฏบนแผนที่ ในความพยายามที่จะลดความซับซ้อนของการออกแบบของฉันฉันขยาย OverlayItem ลงในคลาส NodeOverlayItem ของฉันเองซึ่งรวมถึงคุณลักษณะเพิ่มเติมที่ฉันใช้ในกิจกรรม UI และในบริการ นี่เป็นจุดเดียวของข้อมูลรายการสำหรับ UI และบริการ ฉันใช้ Intents เพื่อออกอากาศไปยังกิจกรรมเพื่อรีเฟรชแผนที่ …

30
คำสั่งล้มเหลวเนื่องจากสัญญาณ: ข้อผิดพลาดในการแบ่งกลุ่ม: 11
ฉันได้รับข้อผิดพลาด ... คำสั่งล้มเหลวเนื่องจากสัญญาณ: ข้อผิดพลาดในการแบ่งกลุ่ม: 11 ... เมื่อพยายามรวบรวมแอพ Swift ของฉัน ฉันใช้ Xcode 6.1 พยายามสร้างสำหรับ iPhone 5 บน iOS 8.1 รหัสของฉัน import UIKit class ViewController: UIViewController { @IBOutlet weak var username: UITextField! @IBAction func signIn(sender: AnyObject) { PFUser.logInWithUsernameInBackground(username.text, password:"mypass") { (user: PFUser!, error: NSError!) -> Void in if user != nil { …

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

5
ความผิดพลาดในการแบ่งกลุ่มในขนาดอาร์เรย์ขนาดใหญ่
รหัสต่อไปนี้ทำให้ฉันมีข้อผิดพลาดในการแบ่งกลุ่มเมื่อทำงานบนเครื่อง 2Gb แต่ทำงานบนเครื่อง 4GB int main() { int c[1000000]; cout << "done\n"; return 0; } ขนาดของอาร์เรย์เป็นเพียง 4Mb มีการ จำกัด ขนาดของอาร์เรย์ที่สามารถใช้ใน c ++ หรือไม่?

3
เหตุใดโค้ดนี้จึง segfault บนสถาปัตยกรรม 64 บิต แต่ทำงานได้ดีบน 32 บิต
ฉันเจอปริศนา C ต่อไปนี้: ถาม: เหตุใดโปรแกรมต่อไปนี้จึง segfault บน IA-64 แต่ทำงานได้ดีบน IA-32 int main() { int* p; p = (int*)malloc(sizeof(int)); *p = 10; return 0; } ฉันรู้ว่าขนาดของintบนเครื่อง 64 บิตอาจไม่เหมือนกับขนาดของตัวชี้ ( intอาจเป็น 32 บิตและตัวชี้อาจเป็น 64 บิต) แต่ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับโปรแกรมข้างต้นอย่างไร ความคิดใด ๆ ?

6
แก้ไขข้อผิดพลาดการแบ่งกลุ่มใน C ++
ฉันกำลังเขียนโปรแกรม C ++ ข้ามแพลตฟอร์มสำหรับ Windows และ Unix ทางฝั่ง Window โค้ดจะคอมไพล์และรันได้อย่างไม่มีปัญหา ในด้าน Unix จะรวบรวมอย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ฉันได้รับข้อผิดพลาดในการแบ่งส่วน ลางสังหรณ์เริ่มต้นของฉันคือมีปัญหากับพอยน์เตอร์ อะไรคือวิธีการที่ดีในการค้นหาและแก้ไขข้อผิดพลาดในการแบ่งส่วน


4
ฉันจะตรวจจับ SIGSEGV (ข้อผิดพลาดในการแบ่งส่วน) และรับสแต็กติดตามภายใต้ JNI บน Android ได้อย่างไร
ฉันกำลังย้ายโปรเจ็กต์ไปยัง Android Native Development Kit (เช่น JNI) และฉันต้องการจับ SIGSEGV หากเกิดขึ้น (อาจเป็น SIGILL, SIGABRT, SIGFPE) เพื่อนำเสนอกล่องโต้ตอบการรายงานข้อขัดข้องที่ดีแทน (หรือก่อนหน้า) สิ่งที่เกิดขึ้นในปัจจุบัน: การเสียชีวิตอย่างไม่เป็นโรคในทันทีของกระบวนการและระบบปฏิบัติการอาจพยายามเริ่มต้นใหม่ ( แก้ไข: JVM / Dalvik VM จับสัญญาณและบันทึกการติดตามสแต็กและข้อมูลที่เป็นประโยชน์อื่น ๆ ฉันแค่ต้องการเสนอตัวเลือกให้ผู้ใช้ส่งอีเมลข้อมูลนั้นให้ฉันจริงๆ) สถานการณ์คือโค้ด C ขนาดใหญ่ที่ฉันไม่ได้เขียนทำงานส่วนใหญ่ในแอปพลิเคชันนี้ (ตรรกะของเกมทั้งหมด) และแม้ว่าจะผ่านการทดสอบอย่างดีบนแพลตฟอร์มอื่น ๆ มากมาย แต่ก็เป็นไปได้ทั้งหมดที่ฉันใน Android ของฉัน พอร์ตจะป้อนขยะและทำให้เกิดข้อผิดพลาดในโค้ดเนทีฟดังนั้นฉันต้องการให้การถ่ายโอนความผิดพลาด (ทั้งเนทีฟและ Java) ที่แสดงในบันทึกของ Android (ฉันเดาว่ามันน่าจะเป็น stderr ในสถานการณ์ที่ไม่ใช่ Android) ฉันมีอิสระที่จะแก้ไขทั้งรหัส C และ Java …

1
gcc-10.0.1 Segfault เฉพาะ
ฉันมีแพ็คเกจ R ที่มีโค้ดที่คอมไพล์ C ซึ่งค่อนข้างเสถียรมาระยะหนึ่งแล้วและได้รับการทดสอบกับแพลตฟอร์มและคอมไพเลอร์ที่หลากหลาย (windows / osx / debian / fedora gcc / clang) เมื่อเร็ว ๆ นี้มีการเพิ่มแพลตฟอร์มใหม่เพื่อทดสอบแพคเกจอีกครั้ง: Logs from checks with gcc trunk aka 10.0.1 compiled from source on Fedora 30. (For some archived packages, 10.0.0.) x86_64 Fedora 30 Linux FFLAGS="-g -O2 -mtune=native -Wall -fallow-argument-mismatch" CFLAGS="-g -O2 -Wall -pedantic …

7
Xcode 11.4 - โครงการเก็บถาวร - การแบ่งส่วนความผิดพลาด 11
ฉันเพิ่งอัปเดต Xcode เป็น 11.4 และเมื่อเก็บถาวรโครงการจะแสดง 'การแบ่งส่วนความผิดพลาด 11' โครงการนี้จะเก็บถาวรด้วย Xcode 11.3.1 แต่ตอนนี้มันไม่ได้ .. มีคนอื่นที่พบปัญหาเดียวกันหรือไม่ แก้ไข: 15 เมษายน 2020 Apple เพิ่งเปิดตัว Xcode 11.4.1

1
พฤติกรรมที่ไม่ได้กำหนดเป็นไปได้ในการใช้งาน static_vector ดั้งเดิม
tl; dr: ฉันคิดว่า static_vector ของฉันมีพฤติกรรมที่ไม่ได้กำหนด แต่ฉันหามันไม่พบ ปัญหานี้เกิดขึ้นกับ Microsoft Visual C ++ 17 ฉันมีการใช้งาน static_vector ที่เรียบง่ายและไม่สมบูรณ์เช่นเวกเตอร์ที่มีความจุคงที่ที่สามารถจัดสรรสแต็กได้ นี่คือโปรแกรม C ++ 17 โดยใช้ std :: aligned_storage และ std :: launder ฉันพยายามต้มลงไปด้านล่างเพื่อชิ้นส่วนที่ฉันคิดว่าเกี่ยวข้องกับปัญหา: template <typename T, size_t NCapacity> class static_vector { public: typedef typename std::remove_cv<T>::type value_type; typedef size_t size_type; typedef T* pointer; typedef const T* …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.