Το Snapdragon Samsung Galaxy S9 έχει ένα σφάλμα σταθερότητας GPU που μπορεί να εκμεταλλευτεί για την ενεργοποίηση απομακρυσμένων επανεκκινήσεων

click fraud protection

Τα Samsung Galaxy S9 και Galaxy S9+ κυκλοφόρησαν σε πολλές αγορές, συμπεριλαμβανομένων των ΗΠΑ, του Χονγκ Κονγκ και σε μέρη της Λατινικής Αμερικής με το σύστημα Qualcomm Snapdragon 845-on-chip. Η βρετανική εταιρεία GraphicsFuzz ανακάλυψε ένα σφάλμα σταθερότητας GPU που μπορεί να εκμεταλλευτεί για την ενεργοποίηση απομακρυσμένων επανεκκινήσεων/σφαλμάτων του τηλεφώνου.

Το νέο Samsung Galaxy S9 περιλαμβάνει το πιο πρόσφατο Qualcomm Snapdragon 845 system-on-chip για πολλές αγορές, όπως το Χονγκ Κονγκ, τις Ηνωμένες Πολιτείες, τον Καναδά και μέρη της Λατινικής Αμερικής. Η Samsung έχει συχνά επιλέξει το πιο πρόσφατο κορυφαίο Qualcomm Snapdragon SoC έναντι του εσωτερικού Exynos SoC σε ορισμένες αγορές. Αυτό συμβαίνει συνήθως στις Ηνωμένες Πολιτείες, με εξαίρεση το Samsung Galaxy S6. Για τον μέσο καταναλωτή, υπάρχει μικρή διαφορά μεταξύ των παραλλαγών Exynos 9810 και Snapdragon 845. Κάτω από την κουκούλα, ωστόσο, η διαφορά στα chipsets μπορεί να οδηγήσει σε πολύ διαφορετικές εμπειρίες.

AnandtechΗ κριτική του Snapdragon Galaxy S9 και του Exynos Galaxy S9 αποκάλυψε έντονες διαφορές στην απόδοση και διάρκεια μπαταρίας μεταξύ των δύο μοντέλων, με το μοντέλο Snapdragon να ξεπερνά εύκολα το μοντέλο Exynos. Με αυτά τα δύο πολύ διαφορετικά chipset, η διαφορά στην απόδοση δεν φαίνεται να είναι η μόνη ανησυχία αυτή τη φορά, σύμφωνα με μια εταιρεία με έδρα το Ηνωμένο Βασίλειο που ονομάζεται 

GraphicsFuzz. GraphicsFuzz είναι μια start-up εταιρεία που ειδικεύεται στη δοκιμή αξιοπιστίας GPU σε συσκευές. Αναπτύσσουν δοκιμές για την αναζήτηση σφαλμάτων στα προγράμματα οδήγησης γραφικών και προσφέρουν βοήθεια στη διάγνωση των βασικών αιτιών τυχόν προβλημάτων που ανακαλύπτουν. Για παράδειγμα, η ομάδα ανακάλυψε ένα ζήτημα ασφαλείας που επηρεάζει το πρόγραμμα οδήγησης ARM για το Samsung Galaxy S6, για το οποίο τους απονεμήθηκε επιβράβευση σφαλμάτων από την Google. Κατά τη διάρκεια της δοκιμής του Snapdragon Samsung Galaxy S9, GraphicsFuzz βρήκε ένα σφάλμα στο πρόγραμμα οδήγησης γραφικών του Adreno 630 που τους επιτρέπει ενεργοποίηση επανεκκίνησης ολόκληρου του τηλεφώνου μέσω μιας έγκυρης σελίδας Internet WebGL κατά την περιήγηση με το απόθεμα πρόγραμμα περιήγησης Internet Samsung.

Συγκεκριμένα, υπάρχει ένα σφάλμα στην απόδοση του Adreno 630 ενός πολύπλοκου αλλά έγκυρου shader που μπορεί να χρησιμοποιηθεί για να παγώσει η συσκευή και να επανεκκινηθεί τελικά. Το shader είναι απλώς ένα πρόγραμμα που επιτρέπει στη GPU να αποδίδει μια εικόνα. GraphicsFuzz δεν σχεδίασε τη σελίδα WebGL με κακόβουλη πρόθεση να ενεργοποιήσει αυτό το σφάλμα, και αντίθετα είπε ότι ανακαλύφθηκε τυχαία κατά τη διάρκεια της τυπικής δοκιμής της σταθερότητας της GPU των συσκευών. Μόλις ανακάλυψαν ότι αυτή η απομακρυσμένη συντριβή ήταν αναπαραγώγιμη, η εταιρεία επικοινώνησε XDA-Προγραμματιστές για τη διευκόλυνση της διαδικασίας αποκάλυψης τόσο με την Qualcomm όσο και με τη Samsung.

WebGL Crash Reproduction στο Snapdragon Samsung Galaxy S9

Πριν επικοινωνήσουμε με εκπροσώπους από οποιαδήποτε εταιρεία, επικυρώσαμε GraphicsFuzzευρήματα στη δική μας συσκευή. GraphicsFuzz δημιουργήσαμε μια ειδική ιστοσελίδα για να τη δοκιμάσουμε και επιλέξαμε τα 5 πιο δημοφιλή προγράμματα περιήγησης στο Διαδίκτυο στο Google Play Store για να δούμε τι θα συμβεί. Ο παρακάτω πίνακας δείχνει τα αποτελέσματα της απόδοσης του σύνθετου shader σε 5 διαφορετικά προγράμματα περιήγησης ιστού.

Δοκιμασμένη συσκευή: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Λειτουργικό σύστημα: Android 8.0.0 Oreo SM-G965U

Φυλλομετρητής

Αποτέλεσμα

Google Chrome v65.0.3325.109

Παγώνει μόνο για ~ 2 δευτερόλεπτα

Samsung Internet v7.0.10.46

Παγώνει και στη συνέχεια ενεργοποιεί μια πλήρη επανεκκίνηση

Opera v45.1.2246.125351

Παγώνει το τηλέφωνο

Microsoft Edge έκδοση 1.0.0.1726

Παγώνει μόνο για ~ 3 δευτερόλεπτα

Firefox v59.0.2

Το πρόγραμμα περιήγησης διακόπτεται

Τόσο ο Google Chrome όσο και ο Microsoft Edge θα παγώσουν το τηλέφωνο για λίγα δευτερόλεπτα και θα δημιουργήσουν ένα σφάλμα WebGL, αλλά η συσκευή τελικά θα είναι εντάξει. GraphicsFuzz μας ανέφεραν ότι συζητούσαν με την ομάδα του Google Chrome για αρκετό καιρό και έμαθαν ότι το Chrome εφαρμόζει έναν μηχανισμό που τερματίζει τη διαδικασία GPU μετά από μια καθορισμένη χρονική περίοδο για να αποτρέψει την πλήρη εμφάνιση του τηλεφώνου σύγκρουση. Η Opera παγώνει το τηλέφωνο, αλλά δεν ενεργοποιεί επανεκκίνηση. Η ίδια η εφαρμογή Firefox κολλάει αλλά το τηλέφωνο είναι εντάξει. Τέλος, η πρόσβαση στη σελίδα μέσω Samsung Internet προκαλεί επιβράδυνση του τηλεφώνου σε ανίχνευση πριν από την ενεργοποίηση της πλήρους επανεκκίνησης του τηλεφώνου.

Ακολουθεί ένα βίντεο επίδειξης της συντριβής:

Λεπτομερής επεξήγηση του σφάλματος

GraphicsFuzz πραγματοποίησε μια πιο εμπεριστατωμένη έρευνα που δείχνει ότι το πρόβλημα που προκαλεί την επανεκκίνηση του τηλεφώνου είναι στο πρόγραμμα οδήγησης GPU για το Qualcomm Adreno 630 που είναι μέρος του Qualcomm Snapdragon 845 σύστημα σε τσιπ. GraphicsFuzz συλλέξαμε ένα αρχείο καταγραφής για τη συντριβή, το οποίο έχουμε ενσωματώσει παρακάτω. Για να δώσετε μια σύντομη περίληψη του τι συμβαίνει, όταν το τηλέφωνο αποδίδει το σύνθετο shader, η GPU ρυθμίζει κάτι που λέγεται «φράχτης». Ένας φράκτης χρησιμοποιείται για να ενορχηστρώσει την πρόσβαση στην κοινόχρηστη μνήμη μεταξύ της CPU και GPU. Μια φορητή GPU, σε αντίθεση με την επιφάνεια εργασίας, έχει πρόσβαση στην ίδια μνήμη RAM με την CPU, επομένως όταν παίζεται ένα παιχνίδι ή κάτι άλλο αποδίδει, χρησιμοποιεί ένα φράχτη για πρόσβαση σε αυτήν την κοινή μνήμη. Σε μια συσκευή που διαθέτει διακριτά γραφικά, η ίδια η GPU έχει τη δική της μνήμη. Όλα τα τρέχοντα κινητά τηλέφωνα μοιράζονται τη μνήμη βίντεο και τη μνήμη τυχαίας πρόσβασης με το χώρο αποθήκευσης flash της RAM. Το πρόβλημα εδώ είναι ότι ο φράκτης δεν μπορεί να ολοκληρωθεί, κάτι που προκαλεί πανικό στον πυρήνα και προκαλεί επανεκκίνηση του τηλεφώνου.

Ολοκληρώστε τον πανικό πυρήνα πριν από την επανεκκίνηση

[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

Διαβάστε περισσότερα

GraphicsFuzz πιστεύει ότι ο λόγος που αυτό το ζήτημα συμβαίνει μόνο στο πρόγραμμα περιήγησης Διαδικτύου της Samsung είναι αυτός του GPU Watchdog. Μερικές φορές μια GPU μπορεί να κρέμεται από shaders που λειτουργούν μακράς διάρκειας, οπότε το πρόγραμμα περιήγησης ή το λειτουργικό σύστημα έχει συνήθως ένα GPU Watchdog που αναγκάζει να επανεκκινήσει ένα πρόγραμμα οδήγησης γραφικών που δεν αποκρίνεται. ο GraphicsFuzz Το test shader έχει αρκετούς βρόχους for που μπορεί να καθυστερήσουν την απόδοση, αλλά εξακολουθεί να είναι έγκυρος shader. Αρκετές άλλες συσκευές, συμπεριλαμβανομένου του Exynos 9810 Samsung Galaxy S9 με την GPU Mali-G72, καταφέρνουν να αποδώσουν αυτό το shader. Έτσι, η ομάδα στο GraphicsFuzz κατέληξε στο συμπέρασμα ότι αυτό το σφάλμα συμβαίνει λόγω ενός ελαττωματικού προγράμματος οδήγησης GPU για το Adreno 630.

Το Google Pixel 2 XL με την GPU Adreno 540 του Qualcomm Snapdragon 835 που εκτελεί την ίδια έκδοση του προγράμματος περιήγησης Διαδικτύου της Samsung επιβραδύνεται σε ανίχνευση Λοιπόν—αυτό σημαίνει ότι αυτό το σφάλμα θα μπορούσε να είναι ένα πρόβλημα με το πρόγραμμα οδήγησης Qualcomm GPU που αποδίδει το shader και το Watchdog του προγράμματος περιήγησης Samsung δεν τερματίζει το υπηρεσία.

Ας ελπίσουμε ότι η Qualcomm μπορεί να διαγνώσει το υποκείμενο πρόβλημα στο πρόγραμμα οδήγησης GPU που προκαλεί την επανεκκίνηση και να παράσχει σύντομα ένα διορθωμένο πρόγραμμα οδήγησης στη Samsung. Φυσικά, μπορεί να περάσει αρκετός χρόνος μέχρι να διαδοθεί αυτή η ενημέρωση στους τελικούς χρήστες. Εν τω μεταξύ, αναμένουμε ότι η Samsung θα προωθήσει μια ενημέρωση στο πρόγραμμα περιήγησης ιστού της Samsung για να μετριάσει το ζήτημα (τουλάχιστον αποτρέποντας την εκμετάλλευσή του μέσω ιστοσελίδας), που ταιριάζει με τη συμπεριφορά της Google Χρώμιο. Αν και είναι γνωστό ότι αυτό το ζήτημα επηρεάζει το Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, θα μπορούσε επίσης να επηρεάσει περισσότερες συσκευές με το Snapdragon 845.

Εάν ενδιαφέρεστε να δοκιμάσετε την αξιοπιστία GPU της δικής σας κινητής ή επιτραπέζιης συσκευής, η ομάδα στο GraphicsFuzz έχει δημιουργήσει μια επίδειξη εφαρμογής web που σας επιτρέπει να εκτελέσετε ορισμένα από τα έγκυρα shader τους στη συσκευή σας. Μπορείτε να αποκτήσετε πρόσβαση σε αυτήν την ιστοσελίδα από ακολουθώντας αυτόν τον σύνδεσμο.

Χρονοδιάγραμμα αποκάλυψης

  • 28 Μαρτίου 2018: GraphicsFuzz προσέγγισε το χέρι XDA-Προγραμματιστές ενημερώνοντάς μας για το θέμα. XDA-Προγραμματιστές αναπαρήγαγε το ζήτημα στο δικό μας Samsung Galaxy S9+ (SM-G965U).
  • 29 Μαρτίου 2018: GraphicsFuzz επικοινώνησε με περισσότερες λεπτομέρειες και δημιούργησε ειδικές ιστοσελίδες για τους υπαλλήλους της Qualcomm και της Samsung για να αναπαράγουν το σφάλμα
  • 30 Μαρτίου 2018: XDA-Προγραμματιστές επικοινώνησε με τη Samsung και την Qualcomm με πλήρεις λεπτομέρειες της αναφοράς. Η επαφή μας με την Qualcomm επικοινώνησε μαζί μας, αναγνωρίζοντας ότι το μήνυμά μας ελήφθη.
  • 2 Απριλίου 2018: Η επαφή μας με τη Samsung επικοινώνησε μαζί μας επιβεβαιώνοντας ότι το μήνυμά μας ελήφθη.
  • 4 Απριλίου 2018: Η επαφή μας με τη Samsung συνέστησε να υποβάλουμε μια αναφορά στη Samsung Αναφορά ασφαλείας σελίδα. XDA-Προγραμματιστές υπέβαλε μια αναφορά και ένας Μηχανικός Samsung ανατέθηκε στην αναφορά.