» »

Kako je Google z enim znakom v kodi pokvaril prijavo v Chrome OS

Kako je Google z enim znakom v kodi pokvaril prijavo v Chrome OS

Slo-Tech - Google je v posodobitvi 91.0.4472.165 za Chrome OS zagrešil napako, zaradi katere se uporabniki niso mogli več prijaviti v naprave. Ker se Chrome OS kot operacijski sistem za naprave, ki se zanašajo pretežno na oblak, posodablja avtomatično ob ponovnem zagonu, uporabniki niso mogli storiti ničesar. V novi verziji 91.0.4472.167, ki je sedaj nared, so napako popravili. Kogar je nevšečnost doletela, lahko bodisi počaka, da se naprava ponovno samodejno posodobi, ali pa jo tovarniško ponastavi. Komur naprava deluje, se še nekaj dni odsvetuje ponovi zagon, da ne bi slučajno posodobil na nepravo verzijo.

Zanimivo pa si je bilo pogledati, kje je Google storil napako. Ker je Chrome OS odprtokoden, je to možno. Uporabniki na redditu so hitro ugotovili, da je šlo za napako v enem znaku. Namesto standardnega operaterja &&, ki v C++ pomeni 'in', se je v kodi pomotoma zapisal &. To je pomenilo, da Chrome OS sploh ni preverjal gesla, temveč je avtomatično javil napako.

Precej manj razumljivo pa je, kako se je takšen spodrsljaj lahko prikradel v končno kodo. Kanali canary, dev ali beta bi jo morali ujeti že pred tedni. A očitno se je nekje zataknilo, saj je to že druga spodletela posodobitev v manj kot mesecu dni. V začetku meseca je posodobitev začela trošiti procesorski čas brez razloga.

29 komentarjev

Randomness ::

typo: operaterja -> operatorja

kuall ::

>Precej manj razumljivo pa je, kako se je takšen spodrsljaj lahko prikradel v končno kodo
Refractoring. BigWhale bo vedel več povedat o tem.

Reycis ::

Pomoje je vzrok kar lepo v poceni indijski developerjih. Tega bo vedno več in več (tako kot narašča tudi uporaba teh "delovnih sredstev").
Diversity is our greatest strength

HotBurek ::

Kogar je nevšečnost doletela, lahko bodisi počaka, da se naprava/avto/semafor/poštne storitve/bančni sistem/oh-oh-pametna hiša/in vse ostalo ne-bodi-ga-treba nobene-resne-potrebe digitalizorajmo-ker-so-drugi-tako-rekli ponovno samodejno posodobi, ali pa jo tovarniško ponastavi.

Čimprej vse v oblak, industrijo 4.0 in digitalizirat vse. Tudi bel kruh.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

ZigaZiga ::

HotBurek je izjavil:

Kogar je nevšečnost doletela, lahko bodisi počaka, da se naprava/avto/semafor/poštne storitve/bančni sistem/oh-oh-pametna hiša/in vse ostalo ne-bodi-ga-treba nobene-resne-potrebe digitalizorajmo-ker-so-drugi-tako-rekli ponovno samodejno posodobi, ali pa jo tovarniško ponastavi.

Čimprej vse v oblak, industrijo 4.0 in digitalizirat vse. Tudi bel kruh.

Haha, pa feature-ji, ki jih proizvajalci s posodobitvami zaklenejo, ker ugotovijo, da lahko zaračunavajo zanje.

multivac ::

HotBurek je izjavil:

Kogar je nevšečnost doletela, lahko bodisi počaka, da se naprava/avto/semafor/poštne storitve/bančni sistem/oh-oh-pametna hiša/in vse ostalo ne-bodi-ga-treba nobene-resne-potrebe digitalizorajmo-ker-so-drugi-tako-rekli ponovno samodejno posodobi, ali pa jo tovarniško ponastavi.

Čimprej vse v oblak, industrijo 4.0 in digitalizirat vse. Tudi bel kruh.


Sedaj povežite vse to z "digitalnimi passuši".

Ena napaka v kodi in ne moreš več nič, pustimo ob strani zlonamerne manipulacije.
Že z napakami te odrežejo od življenja.

To je prihodnost, ki jo gradimo.

kuall ::

Napake se popravijo, življenje teče dalje. Kaj zdaj zganjate paniko pred napredkom. Če mi gre pa kaj na živce so to ljudje, ki paničarijo, ko so napake.

Zgodovina sprememb…

  • spremenilo: kuall ()

WhiteAngel ::

Kako za vraga pa testi tega niso ujeli?!?

LeQuack ::

Velke firme kot Google in Microsoft nimajo več testerjev in QA, so jih odpustil. Sedaj testirajo uporabniki na raznih beta kanalih.
Quack !

kuall ::

zakaj so to naredili?
po moje niso bili zadovoljni s storitvijo, ker je stestirat vse možne kombinacije težko, hitro kaj izpustiš.

kow ::

kuall je izjavil:

Napake se popravijo, življenje teče dalje. Kaj zdaj zganjate paniko pred napredkom. Če mi gre pa kaj na živce so to ljudje, ki paničarijo, ko so napake.


Ker to ni ravno napredek. Clovestvo vedno lovi balans med pravilno mero centralizacije/decentralizacije. Pri komputingu/podatkih imamo enak problem. Taksne napake imajo lahko katastrofalne posledice.

GupeM ::

HotBurek je izjavil:

Kogar je nevšečnost doletela, lahko bodisi počaka, da se naprava/avto/semafor/poštne storitve/bančni sistem/oh-oh-pametna hiša/in vse ostalo ne-bodi-ga-treba nobene-resne-potrebe digitalizorajmo-ker-so-drugi-tako-rekli ponovno samodejno posodobi, ali pa jo tovarniško ponastavi.

Čimprej vse v oblak, industrijo 4.0 in digitalizirat vse. Tudi bel kruh.

Daj nehaj. Prizadetih je 6 uporabnikov. Za par ur ali dni. Cca leto in pol nazaj smo videli, da največja težava ni v tehnologiji, ampak v nas, ljudeh. Skoraj 8 milijard ljudi prizadetih za 2+ let ...

multivac ::

kuall je izjavil:

Napake se popravijo, življenje teče dalje. Kaj zdaj zganjate paniko pred napredkom. Če mi gre pa kaj na živce so to ljudje, ki paničarijo, ko so napake.


Saj nismo proti napredku.
Zgolj to kar nam ponujate ni napredek.

Jirzy ::

Reycis je izjavil:

Pomoje je vzrok kar lepo v poceni indijski developerjih. Tega bo vedno več in več (tako kot narašča tudi uporaba teh "delovnih sredstev").

Roko na srce, napake se dogajajo. Bolj se mi zdi problematicno, da QA tega ni ujel.

AndrejS ::

QA je ponavadi externa firma, ki samo ure nabija.

Jirzy ::

No, to ne pomeni, da to ni problematicno :) Tudi googlu bi moralo biti v interesu, da se take napake najdejo cimprej.

kuall ::

multivac je izjavil:

Saj nismo proti napredku.
Zgolj to kar nam ponujate ni napredek.

Programiranje daje napredek. Programirali so, skušali so narediti program boljši, to je napredek, ali vsaj želja po napredku, vsak pa dela napake, ko dela, posebej programerji.

Zaplankanci so bili vedno v zgodovini proti napredku.

Zgodovina sprememb…

  • spremenilo: kuall ()

multivac ::

kuall je izjavil:

multivac je izjavil:

Saj nismo proti napredku.
Zgolj to kar nam ponujate ni napredek.

Programiranje daje napredek. Programirali so, skušali so narediti program boljši, to je napredek, ali vsaj želja po napredku, vsak pa dela napake, ko dela, posebej programerji.

Zaplankanci so bili vedno v zgodovini proti napredku.


Ti si govoril o napredku googla ali človeštva?

Geho ::

WhiteAngel je izjavil:

Kako za vraga pa testi tega niso ujeli?!?

Ne samo testi... tak "resna" firma bi morala imeti tudi za vsak pull request peer code review, pa potem tudi unit teste in na koncu še QA testerje. Ampak očitno šparajo na vseh vogalih... :D Google pač.

MrStein ::

Jaz uporabljam storitve sloogle, ki je n-krat boljši!

#kupujem.domace
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

zmist ::

MrStein je izjavil:

Jaz uporabljam storitve sloogle, ki je n-krat boljši!

#kupujem.domace


Vino z dodanim antifrizom je baje fantasticno (afera izpred let, ne vem katerega so uporabljali) za piti. Pa ce mu zraven dodas sladkor je baje se boljsi. Ampak to ne pomeni, da bojo ljubitelji vina zaceli divje kupovati vino z antifrizom, cetudi je boljse, jim dokazano skodi. Enako je z googlom. Normalen uporabnik ga bo zbojkotiraj zato ker ve, da skodi njemu in trgu v EU in konec koncev tudi v lastni drzavi, seveda pa je normalnih uporabnikov malo. Vecinoma so fanboyi, ki jim je google edino kar poznajo. In zabiti fanboyi bojo pa ves cas dopovedovali vsem, da je pa vino z antifrizom nekaj najboljsega. Ker so alkoholiki.

#ne.kupujem.domace.ker.sem.alkoholik.

Zgodovina sprememb…

  • spremenilo: zmist ()

WhiteAngel ::

Zdaj ko še enkrat gledam kodo, razlike med & in && ni, če se oba operatorja delata nad boolom? Razen če .empty() in .has_value() vračata kaj drugega kot bool, kar pa načeloma ne bi smeli?

kuall ::

Po moje je programer, ki je naredil bug razmišljal isto kot ti: da oba naredita isto stvar. Btw a ni bil original & in potem && (ne kot slo tech članek trdi), ker v gitu so novosti zelene, staro pa rdeče.

Po moje bo problem tale detajl:
The real problem is that & is not short-circuiting.
Torej & požene obe funkciji, levo in desno od njega.
&& požene samo levo, če leva vrne false.

Meni še vedno ni jasno, bi moral videt vsebino funkcij. Po moje ni tako enostavno.

Še vedno pa drži moja orginalna trditev: ne spreminjaj kode po nepotrebnem, tudi če ti izgleda, da sprememba ne bo nič pokvarila.

Ko je spremenil & v && je mislil, da bo popravil bug, v resnici ga je ustvaril, ker je prejšnji programer napisal tricky kodo. Po moje bo to. :)

Zgodovina sprememb…

  • spremenilo: kuall ()

MrStein ::

Eno je Boolean operator, drugo pa bitwise and.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

kuall ::

logični and.
ne boolean operator.

bbf ::

Pri googlu smo vsi beta. Odpustimo jim, sam ne vemo, kaj delamo.

GupeM ::

kuall je izjavil:

Po moje bo problem tale detajl:
The real problem is that & is not short-circuiting.
Torej & požene obe funkciji, levo in desno od njega.
&& požene samo levo, če leva vrne false.

Točno to je verjetno.
Če uporabiš &&, najprej preverjaš, če ima vrednost. Če je false, pogoj ni izpolnjen in se koda izvaja od if naprej.
Če uporabiš &, pa se pokličeta obe strani operatorja. Torej če has_value() vrne false, se desna stran operatorja vseeno pokliče. Ker pa vrednosti ni (has_value() je vrnil false), dobiš pa segfault (v Javi bi dobil NullPointerException) oz. nedefinirano vrednost in se zadeva sesuje.

Screenshot diffa je pa vprašljiv. Ali zadeva kaže napako ali popravek napake? Sklepam, da je bil "popravek," ki je uvedel & večji in ga zato ni nihče opazil. V screenshotu pa je po mojem mnenju popravek napake, zato tudi tako majhna in edina sprememba v tem fajlu.

Zgodovina sprememb…

  • spremenil: GupeM ()

BigWhale ::

& - bitwise AND je v bistvu racunska operacija, && - logicni AND je pa primerjanje, ki se izvaja od leve proti desni. Zato moras za prvega vedno najprej evaluirat levo in desno stran izraza in sele potem izvajas operacijo. Za && pa ne rabis it naprej, ce je ze prvi del izraza vrnil false.

MrStein ::

kuall je izjavil:

logični and.
ne boolean operator.

OK, potem popravi wikipedijo: Boolean expression @ Wikipedia
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zgodovina sprememb…

  • spremenil: MrStein ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Bo Windows 10 Cloud konkuriral Chrome OS?

Oddelek: Novice / Operacijski sistemi
4815030 (12698) xmetallic
»

Neuradno: Chrome OS in Android bosta eno

Oddelek: Novice / Android
2711514 (8931) AnotherMe
»

Ubuntu Touch prihaja oktobra (strani: 1 2 )

Oddelek: Novice / Operacijski sistemi
8933783 (28899) WarpedGone
»

Chrome OS prihaja letos in prihodnje leto

Oddelek: Novice / Operacijski sistemi
3210079 (7749) opeter
»

Google opušča Windows (strani: 1 2 3 )

Oddelek: Novice / Operacijski sistemi
13029162 (24782) denial

Več podobnih tem