GCC bug beazonosítása a kerneloops.org segítségével

Címkék

A kerneloops.org-ról már többször is volt szó a HUP-on. Az Arjan van de Ven által létrehozott weboldal egy helyre gyűjti a különböző levlistákon, bugzillákban található, és a felhasználók rendszerein telepített kliens (kerneloops) által jelentett kernel oops és warning üzeneteket. Az oldal hasznos információkat szolgáltat a kernelfejlesztők számára, akik már javítottak is néhányat a weboldal által jelzett hibákból. De ahogy a mellékelt példa mutatja, nem csak a kernelben levő, hanem a kernel fordításához használt fordítóprogram hibájára is lehet következtetni az oldal által összegyűjtött információkból.

Arjan a napokban arra lett figyelmes, hogy a kerneloops.org statisztikáiban gyors ütemben kúszik felfelé egy oops jelentés. A szóban forgó oops egy, az ext3 filerendszer "do_split" függvényben levő "page fault"-tal kapcsolatos. A hibáról legelőször a 2.6.26-rc6-git3 kernellel kapcsolatban jött jelentés.

Linus-t is elkezdte érdekelni a jelentés, megkezdődött a nyomozás. Linus megjegyezte, hogy látszólag az összes oops i686-on jelentkezett, így ebből arra következtetett, hogy fordítóprogram (gcc) bug-gal állhatnak szemben. Nem sokkal azelőtt, hogy Linus elküldte levelét, Dave Airlie megerősítette, hogy valóban, egy, a GCC 4.3.1-es verzióját érintő bugról van szó.

A részletek itt olvashatók.

Hozzászólások

btw, mintha lett volna arrol szo, hogy gcc-t atirjak c++-ba :P

--
“A well placed underscore makes the difference between a s_exchange and a sex_change”
— 8048 Users Manual, Intel 1977.

Nekem az jutott eszembe, hogy egy ilyen bugot vajon hogy vadaszna le azoknak a harsany korusa, akik szerint az assembly mar felesleges, es mindenbe garbage collection kene. :P

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Azoknak a programozoknak akik olyan nyelvben programoznak amiben van garbage collection, nem kell ilyen bugokat levadaszniuk, mivel abban a nyelvben nem lehet ilyen bugot csinalni :D

Egyebkent nem azt mondom, hogy az assembly folosleges, hanem a programozok 99%-anak nincs ra szuksege. Termeszetesen ott vannak a kernel/gcc/grub stb. fejlesztok akiknek igen is fontos. De ez az 1%. Meg mindig vannak fortran es egyeb oskovulet nyelvben programozok is, de a programozok 99%-anak az sem fontos.

Egyebkent nem azt mondom, hogy az assembly folosleges, hanem a programozok 99%-anak nincs ra szuksege.

Szerintem valamennyi assembly tudas alap. Egyszeruen segit, hogy jobb kodot irj, ha legalabb halvany elkepzelesed van arrol, mi a franc is fog tortenni a processzor szintjen, amikor futtatja a kodod. Assemblyt legalabb nagy vonalakban nem tudni az kb. olyan szint, mintha egy mai autoszerelo nem ismerne a 4 utemu motor mukodesenek elvet, mert hogy majd az elektronika ugyis kikopi h. mi a baj. IMHO.

Ilyen autoszerelore en max. rollert biznek. Programozoban meg szinte rang, hogy minel ertelmetlenebb trutymot tudj generalni. "En Certified .NET Alkalmazasprogramozo vagyok, nekem nem kell foglalkozni ilyen alacsonyszintu szarokkal", mondta egyszer valaki nekem. Mondtam neki, hogy nem, te egy lamer vagy. :) De whatever...

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Az igazság terjesztéséért mióta jár akasztás.. vagy a rossz hír hozóját még mindig halálra ítélik? :)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Normal Person + Anonymity + Audience = Total Fuckwad

^^ Ezt ismered?

Az én értelmezésemben ez azt jelenti, hogy csak olyan helyen élnek meg a trollok, ahol van megfelelő közönség, azaz olyan oldalon, ami _él_, _virul_, _működik_. A trollok jelenléte azt mutatja, hogy ez az oldal él. Afféle visszajelzésnek is vehetjük :)

--
trey @ gépház

es miert? szerinted nagyon kulonboznek az architekturak? mert szerintem alap utasitasok eleg hasonloak. de te biztos jobban tudod.

szerk: amugy programoztal mar assemblyben valamilyen architekturan?

szerk2: szoval ilyenek, hogy osszeadas, kivonas, valamilyen szorzas, eseteleg osztas, logikai muveletek, memoriaba iras, abbol olvasas - kb. mindenhol ezek vannak, esetleg plusz featureokkel (mint arm-nal a condition minden utasitasnal, vagy ha nem load-store architektura stb.), es tovabbi specialis utasitasokkal, de ezek mar finomsagok szerintem.

- Use the Source Luke ! -

ha assemblyben programozol akkor lenyegi. ha magasszintu nyelven, akkor nem feltetlenul. szerintem ugyanis nem kell fejbol tudnia minden utasitast es azok latencyeit pl. egy java programozonak, eleg ha nagyvonalakban tudja, hogy pl. a qsort az nem fog menni egy utasitasbol.
en igy ertelmeztem chain-q hozzaszolasat, lehet, hogy o nem igy gondolta - ez esetben akkor leirtam a velemnyem.

- Use the Source Luke ! -

hát nem elsunnyogtam, csak fájsz, mert most gyorsan kigugliztad, hogy condition code, meg load/store arch, előtte meg a mi a búbánat az az assembly tudásra benyögted, hogy "mi az a regiszter (meg esetleg, hogy mennyi van)", meg "alap assembly utasításkészlet", meg "esetleg plusz featureok", meg ilyen ökörségeket

Nem akarok nagyon flame-elni. Az assembly tudassal az a bajom, hogy a programozo azt hiszi magarol, hogy istenkiraly mert o tud assembly-ben programozni. Es megirja a kacifantos/agyonoptimalizalt kodjat. Ami persze nem is lesz gyorsabb, de legalabb attekinthetetlen es tele van bugokkal. Szoval valaki vagy legyen profi es feljeszen kernel-t, gcc-t, stb. Vagy inkabb felejtese el az assembly tudasat, es bizzon azokban akik a kernel-t, gcc-t, java-t, stb fejlesztik neki.

khm,
Ami blogombol kimaradt :) :

Amikor nagyon java elleness voltam, akkor mest. int. hazikat asm -ben irtam meg.
Ki volt jelentve, hogy csak javat fogadnak el, sok lazado szerint ez nem normalis nem szabad ilyet kijelenteni. Erre a tanero kozolte, hogy lehet asm -ben is, irni egy idota jaratta tovabra is pofajat, hogy o biz megcsinalja.

Nos ennek az idotanak kodja tobbet vart terminilra, hogy kiirja az eredmenyt, mint magara a szamitasokra.

Aztan kozlek velem, hogy ha mar asm-ben csinltam a beadandokat, akkor beugrokat is ugy kell, erre megkerdeztem, hogy lehet -e javitani ha nem sikerul idore befejezni :)

Lehetett tudni, hogy ketfele megoldas kereso algoritmus lesz a beugron, amihez mindenki mas-mas peldat kap, hozott kodadl is lehet dolgozni.
Irtam egy kelloen "generikus" asm kodot ami par sor ki-be kommentezesevel valt a masikba. Mivel ez elozo megoldasiam, tovabbi specilizacikat tartalmaztak a korabbi peldak gyors megoldasa erdekeben.

kb. 15. perc alatt masodiknak tavoztam (15-20 fos terembol) sikeres beugro koddal, kozben WC -n is voltam :)

Hogy ennek mi ertelme volt ?
Lehet vele vagizni :) Es feladatok asm -ben sokkal szorakoztatobbak voltak.
Neha hallom, hogy beszelik az emberek, hogy par eve volt valami idiota aki asm -ben irta :)

Szerintem valamennyi assembly tudas alap. Egyszeruen segit, hogy jobb kodot irj, ha legalabb halvany elkepzelesed van arrol, mi a franc is fog tortenni a processzor szintjen, amikor futtatja a kodod.

ténlyeg érdekelne milyen assembly "tudást" ajánlasz ami segítenne jobbá tenni olyan java kódo(ka)t/programo(ka)t ami(ke)t:
- pc-n feljesztek pda-ra
- ezen futó (szintén java-ban írt) szolgáltatást ér el
- grid middleware (tetszőleges java-t futtatni képes gépeken, jelenleg amd/sparc balde valamint néhány géptermi gép)
- a fenti grid -en futó raytracer program (dinamikus kód letöltés, szolgáltatás felfedezés)

Altalban ezek az emberek az altaluk hasznalt eszkoz(nyelv) belso mukodesevel sincsenek tisztaban, (En is ismerek (kivallo) kivetelt, de altalaban igy van)

Ami meg erdekesebb, amikor az egyetemen elsos voltam egy (3.-os) fizkus baratom meg akart tanulni programozni, kerdezte tolem melyik a leggyorsabb nyelv, en mondtam, hogy asm -el lehet elerni legjobb eredmenyt de, azt nem javaslom kezdesnek.
Talan fel ev-ev mulva mutatta az asm -ben irt amoba programjat, ami nagyon gyors es okos volt, (ez kb. 5 eve volt), nemreg amikor beszeltem vele, mondta, hogy kesobb benevezte progit egy amoba versenyre es nyert.

Ami erdekesebb, hogy par ev asm utan meg akart tanulni tanulni C-zni, mert az gyakrabban hasznalt nyelv, mondta, hogy C neki furcsa es arrol kerdezgetett hogyan lesz belole ASM es, hogy valoban jo -e amit C forgato csinal/csinalhat.

Megint kesobb amikor melo fele nezett C++ rol kerte, hogy magyarazzak neki arrol, hogy hogyan feleltetheto meg az a sok baromsag C, vagy asm kodnak.

Kicsit felek, mi lessz, ha valami durvabb dologrol kerdez hasonlokat. :), De szerintem nem fog, mert azok mar tul lassu eszkozok.

Nagyon fura kodot szokott irni, de nagyon gyorsat es nagyon keves hibaval.