ฉันหวังว่าบางคนสามารถให้ความรู้แก่ฉันเกี่ยวกับสิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้:
พยายามอ่านหรือเขียนหน่วยความจำที่ได้รับการป้องกัน นี่เป็นข้อบ่งชี้ว่าหน่วยความจำอื่นเสียหาย
ฉันไม่สามารถโพสต์รหัสได้เพราะข้อผิดพลาดนี้ดูเหมือนจะถูกโยนทิ้งในพื้นที่สุ่ม ๆ ของแอปพลิเคชัน แอปพลิเคชันจะทำงานที่ใดก็ได้จาก 12-48 ชั่วโมงก่อนที่จะเกิดข้อผิดพลาด บางครั้งมันจะหยุดในจุดสุ่มที่ดูเหมือนและโยนข้อผิดพลาดด้านบนครั้งอื่น ๆ ที่แอปพลิเคชันทั้งหมดหยุดและฉันได้รับหน้าจอที่มีข้อผิดพลาดที่บอกบางอย่างตามแนวของ "มีข้อผิดพลาดร้ายแรงใน ... บั๊กใน CLR หรือ ... "บางอย่างเกี่ยวกับ PInvoke หรือข้อมูลอื่น ๆ ที่ไม่เกี่ยวข้อง เมื่อสิ่งนี้เกิดขึ้นเธรดทั้งหมดจะถูกยกเลิกและไม่มีข้อมูลการดีบัก
สรุปนี่คือสิ่งที่แอปพลิเคชันทำ:
มันเป็นแอพพลิเคชันเซิร์ฟเวอร์แบบมัลติเธรดที่เขียนด้วยภาษา C # ทั้งหมด ลูกค้าเชื่อมต่อกับเซิร์ฟเวอร์ผ่านซ็อกเก็ต เซิร์ฟเวอร์จะใช้ "สภาพแวดล้อม" เสมือนจริงสำหรับลูกค้าที่พวกเขาสามารถโต้ตอบกันและสิ่งแวดล้อม ใช้หน่วยความจำไม่มาก แต่ฉันไม่เห็นว่ามันรั่ว โดยทั่วไปแล้วจะใช้ประมาณ 1.5GB ฉันไม่คิดว่ามันจะรั่วเพราะการใช้หน่วยความจำค่อนข้างคงที่ตลอดเวลาที่แอปพลิเคชันทำงานอยู่ มันใช้รหัสอย่างต่อเนื่องเพื่อรักษาสภาพแวดล้อมแม้ว่าลูกค้าจะไม่ทำอะไรเลย มันไม่ใช้ซอฟต์แวร์บุคคลที่สามหรือ API อื่น ๆ ทรัพยากรภายนอกเท่านั้นที่แอปพลิเคชันนี้ใช้คือการเชื่อมต่อซ็อกเก็ตและการเชื่อมต่อฐานข้อมูล SQL มันทำงานบนเซิร์ฟเวอร์ 64 บิต ฉันได้ลองแก้ไขข้อบกพร่องนี้ใน VS2008 & VS2010 โดยใช้. net 2.0, 3.5 และ 4
ฉันได้ลองปิดการปรับให้เหมาะสมของคอมไพเลอร์และการแก้ไขร้อนแรงของ Microsoft หลายประการ ดูเหมือนจะไม่มีอะไรทำให้ปัญหานี้หายไป มันจะได้รับการชื่นชมถ้าใครรู้สาเหตุที่เป็นไปได้หรือวิธีการระบุสิ่งที่ทำให้เกิดปัญหา