Samsung Galaxy S9 และ Galaxy S9+ เปิดตัวในตลาดหลายแห่ง รวมถึงสหรัฐอเมริกา ฮ่องกง และบางส่วนของละตินอเมริกา ด้วยระบบบนชิป Qualcomm Snapdragon 845 บริษัท GraphicsFuzz ในสหราชอาณาจักรค้นพบข้อบกพร่องด้านความเสถียรของ GPU ที่สามารถนำไปใช้เพื่อกระตุ้นให้มีการรีบูต/ขัดข้องของโทรศัพท์ระยะไกล
ใหม่ ซัมซุงกาแล็คซี่ S9 รวมถึงระบบบนชิป Qualcomm Snapdragon 845 รุ่นล่าสุดสำหรับตลาดหลายแห่ง รวมถึงฮ่องกง สหรัฐอเมริกา แคนาดา และบางส่วนของละตินอเมริกา Samsung มักจะเลือก Qualcomm Snapdragon SoC ซึ่งเป็นเรือธงรุ่นล่าสุด มากกว่า Exynos SoC ของบริษัทในบางตลาด โดยปกติจะเป็นกรณีนี้ในสหรัฐอเมริกา ยกเว้น Samsung Galaxy S6 สำหรับผู้บริโภคทั่วไป รุ่น Exynos 9810 และ Snapdragon 845 มีความแตกต่างเล็กน้อย อย่างไรก็ตาม ความแตกต่างในชิปเซ็ตอาจนำไปสู่ประสบการณ์ที่แตกต่างอย่างมาก
อนันทเทคการตรวจสอบ Snapdragon Galaxy S9 และ Exynos Galaxy S9 เผยให้เห็นความแตกต่างอย่างสิ้นเชิงในด้านประสิทธิภาพ และอายุการใช้งานแบตเตอรี่ของทั้งสองรุ่น โดยรุ่น Snapdragon มีประสิทธิภาพเหนือกว่ารุ่น Exynos ได้อย่างง่ายดาย ด้วยชิปเซ็ตที่แตกต่างกันอย่างมากทั้งสองนี้ ความแตกต่างในด้านประสิทธิภาพดูเหมือนจะไม่ได้เป็นเพียงข้อกังวลเพียงอย่างเดียวในเวลานี้ ตามที่บริษัทในสหราชอาณาจักรชื่อ
กราฟิกฟัซ. กราฟิกฟัซ เป็นบริษัทสตาร์ทอัพที่เชี่ยวชาญด้านการทดสอบความน่าเชื่อถือของ GPU บนอุปกรณ์ พวกเขาพัฒนาการทดสอบเพื่อค้นหาจุดบกพร่องในไดรเวอร์กราฟิก และเสนอความช่วยเหลือในการวินิจฉัยสาเหตุที่แท้จริงของปัญหาใดๆ ที่พวกเขาค้นพบ ตัวอย่างเช่น ทีมงานค้นพบปัญหาด้านความปลอดภัย ส่งผลต่อไดรเวอร์ ARM สำหรับ Samsung Galaxy S6ซึ่งพวกเขาได้รับรางวัลค่าหัวจากข้อบกพร่องจาก Google ในระหว่างการทดสอบ Snapdragon Samsung Galaxy S9 กราฟิกฟัซ พบข้อผิดพลาดในไดรเวอร์กราฟิกของ Adreno 630 ที่อนุญาต ทริกเกอร์การรีบูตโทรศัพท์ทั้งหมด ผ่านหน้าอินเทอร์เน็ต WebGL ที่ถูกต้องเมื่อเรียกดูด้วยเบราว์เซอร์อินเทอร์เน็ต Samsung ที่มีอยู่โดยเฉพาะอย่างยิ่ง มีข้อผิดพลาดในการเรนเดอร์ของเชเดอร์ที่ซับซ้อนแต่ถูกต้องของ Adreno 630 ซึ่งสามารถนำไปใช้เพื่อทำให้อุปกรณ์ค้างแล้วรีบูตในที่สุด Shader เป็นเพียงโปรแกรมที่ช่วยให้ GPU เรนเดอร์รูปภาพได้ กราฟิกฟัซ ไม่ได้ออกแบบเพจ WebGL ด้วยเจตนาร้ายเพื่อกระตุ้นจุดบกพร่องนี้ แต่กลับบอกว่ามีการค้นพบโดยบังเอิญในระหว่างการทดสอบมาตรฐานความเสถียรของ GPU ของอุปกรณ์ เมื่อพวกเขาค้นพบว่าความผิดพลาดจากระยะไกลนี้สามารถเกิดขึ้นซ้ำได้ บริษัทจึงติดต่อไป XDA-นักพัฒนา เพื่ออำนวยความสะดวกในกระบวนการเปิดเผยข้อมูลกับทั้ง Qualcomm และ Samsung
การสร้างข้อขัดข้องของ WebGL บน Snapdragon Samsung Galaxy S9
ก่อนที่เราจะติดต่อตัวแทนจากบริษัทใดบริษัทหนึ่ง เราได้ตรวจสอบแล้ว กราฟิกฟัซการค้นพบบนอุปกรณ์ของเราเอง กราฟิกฟัซ ตั้งค่าหน้าเว็บพิเศษให้เราทดสอบ และเราเลือกอินเทอร์เน็ตเบราว์เซอร์ยอดนิยม 5 อันดับใน Google Play Store เพื่อดูว่าจะเกิดอะไรขึ้น ตารางด้านล่างแสดงผลของการเรนเดอร์เชเดอร์ที่ซับซ้อนบนเว็บเบราว์เซอร์ที่แตกต่างกัน 5 แบบ
ทดสอบอุปกรณ์แล้ว: วอลคอมม์ Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)
ระบบปฏิบัติการ: ระบบปฏิบัติการ Android 8.0.0 โอรีโอ SM-G965U
เว็บเบราว์เซอร์ |
ผลลัพธ์ |
---|---|
กูเกิล โครม v65.0.3325.109 |
ค้างประมาณ ~2 วินาทีเท่านั้น |
ซัมซุงอินเทอร์เน็ต v7.0.10.46 |
ค้างจากนั้นจะทำให้เกิดการรีบูตแบบเต็มในที่สุด |
โอเปร่า v45.1.2246.125351 |
ค้างโทรศัพท์ |
ไมโครซอฟต์ขอบ v1.0.0.1726 |
ค้างประมาณ ~3 วินาทีเท่านั้น |
ไฟร์ฟอกซ์ v59.0.2 |
เบราว์เซอร์ขัดข้อง |
ทั้ง Google Chrome และ Microsoft Edge จะหยุดโทรศัพท์สักครู่และสร้างข้อผิดพลาด WebGL แต่ในที่สุดอุปกรณ์ก็จะเรียบร้อยดี กราฟิกฟัซ รายงานกับเราว่าพวกเขาได้หารือกับทีมงาน Google Chrome มาระยะหนึ่งแล้วและได้เรียนรู้แล้ว Chrome ใช้กลไกที่สิ้นสุดกระบวนการ GPU หลังจากช่วงระยะเวลาหนึ่งเพื่อป้องกันโทรศัพท์เต็ม ชน. Opera ค้างโทรศัพท์ แต่ไม่ได้ทำให้เกิดการรีบูต แอพ Firefox เองขัดข้อง แต่โทรศัพท์ยังใช้งานได้ดี สุดท้ายนี้ การเข้าถึงเพจผ่านอินเทอร์เน็ตของ Samsung จะทำให้โทรศัพท์ช้าลงจนทำการรวบรวมข้อมูลก่อนที่จะรีบูทโทรศัพท์โดยสมบูรณ์
นี่คือวิดีโอสาธิตการชน:
คำอธิบายโดยละเอียดของข้อผิดพลาด
กราฟิกฟัซ ดำเนินการตรวจสอบเชิงลึกเพิ่มเติมซึ่งบ่งชี้ว่าปัญหาที่ทำให้โทรศัพท์รีบูตคือ ในไดรเวอร์ GPU สำหรับ Qualcomm Adreno 630 ซึ่งเป็นส่วนหนึ่งของ Qualcomm Snapdragon 845 ระบบบนชิป กราฟิกฟัซ รวบรวมบันทึกข้อขัดข้อง ซึ่งเราได้ฝังไว้ด้านล่าง เพื่อให้สรุปสั้นๆ เกี่ยวกับสิ่งที่เกิดขึ้น เมื่อโทรศัพท์เรนเดอร์เชดเดอร์ที่ซับซ้อน GPU จะตั้งค่า สิ่งที่เรียกว่า "รั้ว" รั้วใช้เพื่อประสานการเข้าถึงหน่วยความจำที่ใช้ร่วมกันระหว่าง CPU และจีพียู GPU มือถือต่างจากเดสก์ท็อปตรงที่สามารถเข้าถึง RAM เดียวกันกับ CPU ดังนั้นเมื่อมีการเล่นเกมหรือแสดงผลอย่างอื่น GPU จะใช้รั้วกั้นเพื่อเข้าถึงหน่วยความจำที่ใช้ร่วมกันนั้น บนอุปกรณ์ที่มีกราฟิกแยก GPU เองก็มีหน่วยความจำของตัวเอง โทรศัพท์มือถือในปัจจุบันทั้งหมดใช้หน่วยความจำวิดีโอและหน่วยความจำเข้าถึงโดยสุ่มร่วมกับพื้นที่เก็บข้อมูลแฟลชของ RAM ปัญหาที่นี่คือรั้วไม่สามารถดำเนินการให้เสร็จสิ้นได้ซึ่งทำให้เกิดความตื่นตระหนกของเคอร์เนลและทำให้โทรศัพท์รีบูต
ทำ Kernel Panic ให้สมบูรณ์ก่อนที่จะรีบูต
[12681.035590] [2:crtc_commit: 117: 433] kgsl kgsl-3d0: |a6xx_snapshot_gmu| set FENCE toALLOWmode:0
[12681.035839] [2:crtc_commit: 117: 433] kgsl kgsl-3d0: |kgsl_device_snapshot| snapshot created at pa 0x000000016e500000 size 927400
[12681.035993] [0: kworker/u16:5:27740] kgsl kgsl-3d0: |kgsl_snapshot_save_frozen_<wbr />objs| kgsl_snapshot_save_frozen_objs start
[12681.036085][2:crtc_commit: 117: 433]Kernelpanic-notsyncing: !!!FENCETIMEOUT
[12681.036156][2:crtc_commit: 117: 433]CPU: 2 PID: 433 Comm: crtc_commit:117Tainted: GW 4.9.65-13087505#1
[12681.036248][2:crtc_commit: 117: 433]Hardwarename: SamsungSTARQLTEPROJECTRev14 (DT)
[12681.036319][2:crtc_commit: 117: 433]Calltrace:
[12681.036368] [2:crtc_commit: 117: 433] [] dump_backtrace+0x0/0x248
[12681.036438] [2:crtc_commit: 117: 433] [] show_stack+0x18/0x28
[12681.036509] [2:crtc_commit: 117: 433] [] dump_stack+0x98/0xc0
[12681.036578] [2:crtc_commit: 117: 433] [] panic+0x1e0/0x44c
[12681.036646] [2:crtc_commit:117: 433] [] sde_plane_wait_input_fence+<wbr />0x174/0x28c
[12681.036727] [2:crtc_commit:117: 433] [] sde_crtc_atomic_flush+0x1c4/<wbr />0x5e8
[12681.036807] [2:crtc_commit: 117: 433] [] drm_atomic_helper_commit_<wbr />planes+0x19c/0x1fc
[12681.036891] [2:crtc_commit: 117: 433] [] complete_commit+0x74/0x6a4
[12681.036960] [2:crtc_commit:117: 433] [] _msm_drm_commit_work_cb+0x48/<wbr />0x1c4
[12681.037038] [2:crtc_commit: 117: 433] [] kthread_worker_fn+0x78/0x194
[12681.037108] [2:crtc_commit: 117: 433] [] kthread+0xd8/0xf0
[12681.037172] [2:crtc_commit: 117: 433] [] ret_from_fork+0x10/0x20
[12681.037239][2:crtc_commit: 117: 433]Kernelloadedat: 0x800a0000, offsetfromcompile-timeaddress 20000
[12681.037331][2:crtc_commit: 117: 433]SMP: stoppingsecondaryCPUs
อ่านเพิ่มเติม
กราฟิกฟัซ เชื่อว่าสาเหตุที่ปัญหานี้เกิดขึ้นบนอินเทอร์เน็ตเบราว์เซอร์ของ Samsung เท่านั้นคือสาเหตุจากผู้ดูแล GPU บางครั้ง GPU อาจค้างบนเชเดอร์ที่ทำงานเป็นเวลานาน ซึ่งในกรณีนี้เบราว์เซอร์หรือระบบปฏิบัติการมักจะมีโปรแกรมควบคุม GPU ที่บังคับให้รีสตาร์ทไดรเวอร์กราฟิกที่ไม่ตอบสนอง ที่ กราฟิกฟัซ test shader มี for loop หลายอันที่อาจทำให้ใช้เวลาในการเรนเดอร์นานขึ้น แต่ก็ยังเป็น shader ที่ถูกต้อง อุปกรณ์อื่นๆ อีกหลายตัว รวมถึง Exynos 9810 Samsung Galaxy S9 ที่มี Mali-G72 GPU สามารถจัดการเรนเดอร์เชเดอร์นี้ได้ ดังนั้นทางทีมงานที่ กราฟิกฟัซ ได้ข้อสรุปว่าข้อผิดพลาดนี้เกิดขึ้นเนื่องจากไดรเวอร์ GPU ผิดพลาดสำหรับ Adreno 630
Google Pixel 2 XL พร้อม Adreno 540 GPU ของ Qualcomm Snapdragon 835 ที่ใช้อินเทอร์เน็ตเบราว์เซอร์ Samsung เวอร์ชันเดียวกันทำให้การรวบรวมข้อมูลช้าลง ซึ่งหมายความว่าข้อผิดพลาดนี้อาจเป็นปัญหากับไดรเวอร์ Qualcomm GPU ที่แสดงเชดเดอร์และโปรแกรมควบคุมเบราว์เซอร์ Samsung ไม่สิ้นสุด บริการ.
หวังว่า Qualcomm จะสามารถวินิจฉัยปัญหาที่ซ่อนอยู่ในไดรเวอร์ GPU ที่ทำให้เกิดการรีบูตและมอบไดรเวอร์ที่แก้ไขให้กับ Samsung ในไม่ช้า แน่นอนว่าอาจใช้เวลาสักระยะก่อนที่การอัปเดตนี้จะเผยแพร่ไปยังผู้ใช้ปลายทาง ในระหว่างนี้ เราคาดว่า Samsung จะผลักดันการอัปเดตไปยังเว็บเบราว์เซอร์อินเทอร์เน็ตของ Samsung เพื่อบรรเทาผลกระทบ ปัญหา (อย่างน้อยก็ป้องกันไม่ให้ถูกหาประโยชน์ผ่านหน้าเว็บ) ซึ่งสอดคล้องกับพฤติกรรมของ Google โครเมียม. แม้ว่าปัญหานี้จะส่งผลต่อ Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+ แต่ก็อาจส่งผลกระทบต่ออุปกรณ์อื่นๆ ที่ใช้ Snapdragon 845 อีกด้วย
หากคุณสนใจที่จะทดสอบความน่าเชื่อถือของ GPU ของอุปกรณ์มือถือหรือเดสก์ท็อปของคุณเอง ทีมงานที่ กราฟิกฟัซ ได้รวบรวมการสาธิตเว็บแอปที่ให้คุณเรียกใช้เชเดอร์ที่ถูกต้องบนอุปกรณ์ของคุณ คุณสามารถเข้าถึงหน้าเว็บนั้นได้โดย ตามลิงค์นี้.
ไทม์ไลน์การเปิดเผยข้อมูล
- วันที่ 28 มีนาคม 2018: กราฟิกฟัซ เอื้อมมือออกไป XDA-นักพัฒนา แจ้งให้เราทราบถึงปัญหา XDA-นักพัฒนา ทำให้เกิดปัญหาซ้ำใน Samsung Galaxy S9+ (SM-G965U) ของเราเอง
- วันที่ 29 มีนาคม 2018: กราฟิกฟัซ ติดต่อรายละเอียดเพิ่มเติมและตั้งค่าหน้าเว็บพิเศษสำหรับพนักงาน Qualcomm และ Samsung เพื่อสร้างข้อผิดพลาด
- วันที่ 30 มีนาคม 2018: XDA-นักพัฒนา ติดต่อทั้ง Samsung และ Qualcomm พร้อมรายละเอียดทั้งหมดของรายงาน ผู้ติดต่อ Qualcomm ของเราติดต่อกลับเพื่อยืนยันว่าได้รับข้อความของเราแล้ว
- วันที่ 2 เมษายน 2018: ผู้ติดต่อ Samsung ของเราติดต่อกลับเพื่อยืนยันว่าได้รับข้อความของเราแล้ว
- วันที่ 4 เมษายน 2018: ผู้ติดต่อ Samsung ของเราแนะนำให้เรายื่นรายงานที่ Samsung's การรายงานความปลอดภัย หน้าหนังสือ. XDA-นักพัฒนา ยื่นรายงานและมอบหมายวิศวกรของ Samsung ให้กับรายงาน