Blog

December 2019

Aus der Reihe "seltsame Bugs": SmartRace-Abstürze unter iOS wenn bestimmte Geräte in der Nähe sind...

Hä? Ja, genau. Dasselbe dachte ich auch. Aber der Reihe nach. Zunächst bekam ich in seltenen Abständen Meldungen von SmartRace-Nutzern, bei denen SmartRace kurz nach dem Starten reproduzierbar abstürzte. Bei 99% aller Nutzer lief die App aber stabil, auch ich selbst konnte den Fehler nicht nachstellen, weshalb ich vermutete, dass der Fehler irgendwo in einer speziellen Konstellation beim jeweiligen User liegen musste. Auch kam von einigen der Hinweis, dass die App „am nächsten Tag“ plötzlich wieder völlig stabil lief und einen halben Tag später wieder abstürzte.

Leider konnte ich auch durch viel Nachfragen bei keinem Nutzer entscheidende Infos darüber erhalten, was diese Konstellation sein könnte. Bis mich Nutzer Florian P. mit dem Hinweis, dass auch die Carrera-App bei ihm abstürzte, auf den entscheidenden Weg brachte. Da ich zufällig weiß, dass die Carrera-App dasselbe Bluetooth-Modul nutzt wie SmartRace, fing ich an, beim Hersteller dieses Moduls auf Github nach entsprechenden Fehlermeldungen zu suchen. Und siehe da: Ein anderer Entwickler meldete, dass das Modul bei ihm crashte, wenn ein Gerät mit einem speziellen Namen in der Umgebung aktiv war. Hintergrund: SmartRace (und viele andere Apps, die Bluetooth einsetzen) scannt nach dem Starten per Bluetooth die Umgebung, um die Control Unit zu „entdecken“. Dabei werden alle Geräte gelistet, die per Bluetooth verbindbar sind. Es stellte sich also heraus, dass das Bluetooth-Modul (und damit auch SmartRace) zum Beispiel dann abstürzte, wenn ein Fernseher (besser gesagt ein Smart-TV) von LG mit aktiviertem Bluetooth in der Nähe war – denn diese Geräte präsentieren sich per Bluetooth häufig als „[LG] Gerätename“. Scheinbar sorgten in diesem Fall die eckigen Klammern im Gerätenamen für den Absturz…

Der Fehler wurde in SmartRace 3.11.4 behoben.