Odpravil hrošča, ki sta zavirala GTA Online, in zaslužil 10.000 dolarjev

Matej Huš

17. mar 2021 ob 08:44:29

Rockstarjeva igra Grand Theft Auto Online je znana po dolgih nalagalnih časih, ki brez težav presežejo 10 minut, kar jezi številne igralce. Težava se vleče že leta, a Rockstar doslej ni reagiral. Zato se je razhroščevanja igre lotil T0st, ki ni le ugotovil razloga, temveč je izdelal svoj popravek in odkritje sporočil Rockstarju. Ta je danes izdal uradni popravek, ki skrajša čas nalaganja za več kot polovico, hkrati pa odkritelju izplačal 10.000 dolarjev nagrade v okviru programa za prijavo odkritih lukenj (bug bounty).

Tovrstni programi običajno predvidevajo le nagrajevanje odkritih varnostnih ranljivosti, a je Rockstar v tem primeru naredil izjemo, kar priča o pomembnosti tega hrošča. Še več, Rockstar je pripravil lasten popravek, ki takisto skrajša nalaganje igre za vsaj polovico, nad čemer so igralci navdušeni. Rockstar je potrdil, da gre za isto nevšečnost, ki jo je odkril t0st.

Da je tako dolgo čakanje očitno hrošč, je t0st posumil ob analizi dogajanja. Ves ta čas je bil procesor obremenjen (in to le eno jedro), aktivnosti na disku, v pomnilniku ali mrežnega prometa pa praktično ni bilo. Ugotovil je, da igro upočasnjujeta dve težavi. Prva je 10 MB velika datoteka JSON, ki se prepočasi obdeluje (parse) zaradi naivno uporabljene funkcije sscanf, ki kliče strlen. Drugi razlog pa je bilo velikansko polje zgoščenih vrednosti s 63.000 vnosi, kjer program naivno primerja vsako vrednost z vsako drugo (deduplication). Ko je ti funkciji popravil, je igra oživela.