- ในแอป Apple Photos เกิดอาการไฟล์ภาพเสียหายเมื่อ import รูปจากกล้อง
- ผู้ใช้พบว่าเมื่อใช้ตัวเลือก "ลบหลังนำเข้า" จำนวนรูปที่สูญหายเพิ่มขึ้นอย่างมาก และสูญเสียรูปไปราว 30%
- แม้จะเปลี่ยนฮาร์ดแวร์หลายอย่าง (กล้อง, การ์ด SD, โน้ตบุ๊ก, สายเคเบิล ฯลฯ) ก็ยังยืนยันได้ว่าปัญหายังคงเกิดขึ้นเหมือนเดิม
- จึงสรุปว่าสาเหตุไม่ใช่ฮาร์ดแวร์ แต่เป็นบั๊กของซอฟต์แวร์ และวิเคราะห์ว่าไฟล์เสียหายแบบสุ่ม
- หลังจากนั้นจึงเปลี่ยน workflow ไปใช้ Darktable เพื่อหลีกเลี่ยงปัญหา
ภาพรวมของปัญหา
- พบว่าเมื่อ import รูปจากกล้องเข้าแอป Apple Photos บางครั้งจะเกิดอาการไฟล์ภาพเสียหาย
- แม้จะมีการพูดถึงปัญหาคล้ายกันบนออนไลน์อยู่บ้าง แต่ส่วนใหญ่ยอมแพ้กับการแก้ปัญหาหรือไม่ได้ลอง debug อย่างจริงจัง
การนำเข้ารูปและลักษณะการเกิดปัญหา
- ใช้กล้อง OM System OM-1 และถ่ายด้วยฟอร์แมต RAW + jpg
- ก่อนหน้านี้เลือกตัวเลือก "ลบหลังนำเข้า" ในแอป Photos เพื่อเคลียร์การ์ด SD
- การใช้ตัวเลือกนี้กลายเป็นความผิดพลาดครั้งใหญ่
สถานการณ์ที่ภาพเสียหาย
- อาการเสียหายเกิดซ้ำเฉพาะกับรูปเพียงบางส่วน
- หลังถ่ายภาพจำนวนมากในงานแต่งงานของครอบครัว พบว่ารูปที่นำเข้ามาสูญหายไปราว 30%
- แอป Photos แสดงไฟล์ RAW + jpg เป็นรูปเดียว และโดยปกติจะแสดง jpg เป็นค่าเริ่มต้น
- ในบางกรณี jpg เสียหาย, บางกรณี RAW เสียหาย, และบางครั้งเสียหายทั้งคู่
- เมื่อใช้ตัวเลือก "ลบหลังนำเข้า" ไฟล์บนการ์ด SD ของกล้องจะถูกลบทันที ทำให้ตรวจสอบความเสียหายล่วงหน้าไม่ได้
การวิเคราะห์สาเหตุของปัญหา
- กังวลว่าอาจเป็นความผิดปกติของฮาร์ดแวร์ จึงเปลี่ยนฮาร์ดแวร์ทั้งหมด เช่น สายเคเบิล, การ์ด SD, กล้อง, โน้ตบุ๊ก แล้วก็ยังพบอาการเดิม
- เปลี่ยนสาย USB-C
- ซื้อการ์ด SD ใหม่จากผู้ผลิตอย่างเป็นทางการ
- เปลี่ยนเป็นถ่าย RAW อย่างเดียว
- เปลี่ยนโน้ตบุ๊ก
- เปลี่ยนรุ่นกล้อง (OM System OM-1 MKii)
- แม้จะค่อย ๆ เปลี่ยนทีละตัวแปรในแต่ละขั้นตอน แต่อาการไฟล์เสียหายก็ยังเกิดขึ้นอย่างต่อเนื่อง
สรุปว่าเป็นปัญหาซอฟต์แวร์
- หลังจากเปลี่ยนฮาร์ดแวร์ทั้งหมดแล้ว จึงสรุปว่าเป็นบั๊กของซอฟต์แวร์ในแอป Photos เอง
- ปิดตัวเลือก "ลบหลังนำเข้า" แล้วเปลี่ยนมาใช้วิธีตรวจสอบว่าไฟล์เสียหายหรือไม่ก่อนค่อยฟอร์แมตการ์ด SD ซึ่งในช่วงนั้นไม่พบความเสียหาย
- มีการตั้งข้อสังเกตว่าในสถานการณ์เฉพาะบางแบบ เช่น การคัดลอกไฟล์และลบไฟล์พร้อมกัน อาจมีปัญหาซอฟต์แวร์อย่าง race condition เกิดขึ้น
- หลังจากนั้นก็ยังมีกรณีที่ไฟล์เสียหายแบบสุ่มเกิดขึ้นอีก
- ไฟล์ต้นฉบับบนการ์ด SD กับไฟล์ที่เสียหายมีขนาดเท่ากัน แต่ข้อมูลไบต์ภายใน (checksum) ต่างกัน
- ผู้เขียนได้วิเคราะห์ binary diff ของไฟล์ดังกล่าว
การนำ workflow ใหม่มาใช้
- แทนที่จะเสียเวลาเพิ่มกับการแก้ปัญหา จึงเปลี่ยน workflow ไปใช้ Darktable
- ใช้ Darktable ในการ import รูป, ลบรูปที่ไม่ต้องการ, แก้ไขและ export รูปที่ต้องการ จากนั้นค่อยนำเข้าไปยังแอป Photos
- ยืนยันได้ว่าเมื่อใช้ Darktable แล้วไม่พบอาการไฟล์เสียหาย
- ปัจจุบันจะคัดเลือกรูปและประมวลผลใน Darktable ก่อนค่อยย้ายเข้า Photos ทำให้ปัญหาลดลง
- แม้จะเสียเวลาและค่าใช้จ่ายไปมากในการวิเคราะห์ปัญหา แต่สุดท้ายก็กลายเป็นว่าต้องมีฮาร์ดแวร์สำรองซ้ำอีกชุด
ยังไม่มีความคิดเห็น