A Firefox 15 gondoskodik a memóriaszivárgásos add-on-okról

Címkék

A hírek szerint a Mozilla Firefox 15-ös verziójának bétájában a fejlesztők egy hasznosnak látszó ötlet megvalósításával foglalatoskodtak. Nevezetesen, a böngésző gondoskodni fog arról, hogy az add-on-ok részéről jelentkező memóriaszivárgások többségét megakadályozza. Rosszul programozott add-on a lefoglalt memóriát elfelejtheti felszabadítani miután a böngészőfül bezárásra került, vagy a felhasználó elnavigált a kérdéses oldalról. Ilyenkor ún. zombie compartment-ek jönnek létre. Ezek olyan memóriaterületek, amelyek sosem kerülnek felszabadításra. Ez azt okozza, hogy a Firefox futása során fokozatosan egyre több memóriát használ, lelassul és rossz esetben akár össze is omlik.

A Firefox 15-ben bemutatkozó változásoknak köszönhetően az add-on-t használó Firefox felhasználók nagy része számára jelentősen csökken a Firefox memóriahasználata anélkül, hogy a problémás add-on-okat megfrissítené. Ezeknél a felhasználóknál a Firefox gyorsabb lehet (esetenként a gyorsulás jelentős), kisebb lesz az esély az összeomlásra, kiváltképp akkor, ha több add-on-t használnak és/vagy a Firefox újraindítások közt jelentős idő szokott náluk eltelni.

A fejlesztők több ismert memóriazabáló add-on-nal is tesztelték az új változtatásokat. Ilyen például a SiteAdvisor 3.4.1.

A fenti képen a piros oszlop a SiteAdvisor add-on-nal ellátott Firefox 14-ben és Firefox 15-ben MemBench-csel megnyitott, majd bezárt 150 weblap utáni helyzetet mutatja.

Részletesen a fejlesztésről itt.

Hozzászólások

Nevezetesen, a böngésző gondoskodni fog arról, hogy az add-on-ok részéről jelentkező memóriaszivárgások többségét megakadályozza. Rosszul programozott add-on a lefoglalt memóriát elfelejtheti felszabadítani miután a böngészőfül bezárásra került, vagy a felhasználó elnavigált a kérdéses oldalról. Ilyenkor ún. zombie compartment-ek jönnek létre. Ezek olyan memóriaterületek, amelyek sosem kerülnek felszabadításra.

Wtf? Ez ilyen defect by design. A durva fajtabol.

---
pontscho / fresh!mindworkz

Hasznos fejlesztes, de szerintem rossz vegerol kozelitik meg a dolgot: ezek az addonok valoszinuleg addig is tobb memoriat esznek/szivarogtatnak amig nem zarjak be a tabot. Tehat amig be nem zarod a tabokat addig nemsokat er...

Szerk.: En a helyukben letiltanam az ilyen addonokat amig ki nem javulnak. Plusz nemtudom hogy keresztulmennek-e az addonok valamilyen tesztelesen, de lehet azokon kellene okositani elsosorban, vagy ha eddig nem voltak akkor bevezetni.

Lehetne futas kozben, de miert a vegfelhasznalo gepen? Kikunyeralnak meg nehany szerverrevalot a google-tol es azon megcsinaljak ugyanezt. Ha leakel visszadobjak a fejlesztonek, ha nem akkor letoltheto. Ha pedig mar egy publikalt verziorol derul ki, hogy gon van vele(vagy felmerul hogy gond lehet vele) akkor tetiljak amig ujfent nem javitja a fejleszto.

Kikunyeralnak meg nehany szerverrevalot a google-tol es azon megcsinaljak ugyanezt.

És felvesznek 100 embert, hogy kattintgasson Firefoxot, mindenféle addonokkal? Vagy hogy?

tetiljak amig ujfent nem javitja a fejleszto.

Hogyan történne ez? Pl. nem tudom installálni az adblockot, mert éppen memória hiba van benne? Jöjjek vissza holnap, hátha addig a fejlesztő javítja? És ha én inkább mégis szeretném installálni? Inkább egy kis leak, mint a reklámok.

Vagy hogy?

Nem ez lenne az elso gui-s program az informatika tortenelmeben aminel megoldjak, hogy lehessen ugy is tesztelni hogy nem ul elotte senki(random mouse/keyboard input injection). ;)

Hogyan történne ez? Pl. nem tudom installálni az adblockot, mert éppen memória hiba van benne? Jöjjek vissza holnap, hátha addig a fejlesztő javítja? És ha én inkább mégis szeretném installálni? Inkább egy kis leak, mint a reklámok.

Nem fogok munkaidomben leirni neked egy teljes specifikaciot, hogy hogyan kellene/lehetne ezt megcsinalni. Hasznald a fantaziadat, nehany app store-nal megoldottak mar ezt. Fogd fel ezt is ugy mint egy disztribucios platformot, aminel meg kell oldani ezeket.

Biztos kevés pornóoldalt nézel, ezért nem zavar a csöcsökre és muffokra kerülő reklámok. Vagy mondjuk lynx-et használsz.

Egyébként meg. Szerintem te egy hülyével találkoztál, akinek alapból nagy az arca és véletlenül van adblock-ja is. A reklámok nem erőszakolnak meg, de én személy szerint kurvára unom kivárni amíg a reklámok miatt lényegesen hosszabb ideig tart egy oldal betöltése (ahogy rühellem a filmek közbeni reklámot is, ott sajnos nincs adblock még). Lehet türelmetlen vagyok, de érezhető a különbség. Valahogy tisztább, szárazabb érzés adblock programmal. De persze értem én, kellenek olyanok is akiket ez nem zavar, különben kiből élnének a reklámos oldalak, amiket utána reklám nélkül nézek meg.

"Belépés díjtalan, kilépés bizonytalan."

Ha nem a két vezető magyar TV adóról van szó, akkor azért reklám < tartalom a jellemző. Viszont rengeteg weboldalon inkább 80+ % erőforrás megy a flash reklámokra, idegesítően ugrál, villog stb. Ha csak 10 mega lenne pluszban ok, de már rég nem csak felületbeosztásos. Ismerős az a popup block megkerülés, amikor kattintásra két oldalt is meghív egyszerre?
--
AGA@
Fork portal és az egyik logóm :)

Nem állítottam, hogy weben nincsenek idegesítő reklámok. Sőt, van ami flash és betolakszik a weboldal elé, mielőtt megnézheted a tényleges tartalmat. Igen, de a többség nem ilyen. A többség szimplán be van tokozva egy helyre, és reklámoz. Az a 80+% nem tudom minek a %-a, de nagyon gyenge géped lehet, ha érezhetően belassítják a reklámok.
----
India delenda est.
Hülye pelikán

Nem mondtam, hogy erős gép :) Netezni ezen sokéves gépen szoktam legtöbbet. Lassan nem elég rá. Kivéve, ha letiltom a reklámokat. Mikor véletlen más rendszert futtatok rajta, és azon nincs adblock, valahogy nem úgy érzem mintha "a többség nem ilyen" lenne.
Fura amúgy, ebbe topicba azért jöttem, mert operánál is létezik ez a memóriaszivárgásos dolog, és most jutott eszembe, ez kb. az óta van mióta ez is használ pluginokat. Persze ezt másik szálba kellene..
--
AGA@
Fork portal és az egyik logóm :)

Kitsit untsi ez mán. Egy félkomoly beszólásra ekkora hisztit keverni. Amikor jön valaki azzal, hogy az ő 2 éves gépét lassítják a reklámok, és ráadásul ez egy hypeolt hűdehajde gép, akkor nem tudok mást tenni, mint kiröhögni az illetőt a saját, két éves, összebarkácsolt gépemmel.
----
India delenda est.
Hülye pelikán

Ez milyen processzor és gép? Nyomnál egy cat proc/cpuinfo-t meg egy lspci-t? A MBP nem emlékszem mennyi volt, de 150k-nál biztos több. :)

Főleg azért vettem, mert elegem volt a windows és a linux hülyeségeiből, meg mert nem nagyon lehetett más olyan gépet kapni ami azért jól hordozható, de nagy a felbontása (ennek 1680 x 1050), valamint az akksi idő miatt.

Így most az OSX hülyeségeivel szenvedek, talán ez egy kicsit jobb, de akkor is idegesítő és már érik egy thinkpad ubuntuval......

D:\>cat proc/cpuinfo
'cat' is not recognized as an internal or external command,
operable program or batch file.

D:\>lspci
'lspci' is not recognized as an internal or external command,
operable program or batch file.

D:\>

Egy komolyabb jegyzeten, releváns részek az iponos rendelésből:
AMD Athlon II X2 250 3.00Ghz AM3 BOX
MSI R4670-MD1G PCIE
2 darab KINGSTON 2048Mb DDR3 1333Mhz
----
India delenda est.
Hülye pelikán

Pl. az egy applicationból csak egyet futtatunk hozzáállás zavar. Én sok projekten dolgozom kvázi egyszerre, és pl. mindegyikhez szeretnék egy terminál ablakot nyitni vagy egy editort. Megoldható, de nem tökéletes a megoldás amire rájöttem.

Hasonlóképpen pl. nem lehet azt megcsinálni, hogy egy safari ablak "on all spaces" legyen, de a többi safari ablak ne.

Az automatikus window zoom is zavar, mármint, hogy nincs rendes fullscreen funkció.

Nem lehet egér nélkül az ablakot egy másik space-re mozgatni.

Meg még van ilyen néhány.

Ilyesmik. Nem nagy ügy egyik sem, csak idegesítőek.

Külön terminál ablak azért probléma, mert egy space-re rakom az összes ablakot, ami kell egy projekthez. Terminálból lehet ugyan külön ablak, de a terminálok akkor is összetartoznak OSX-ben, pl. váltás köztük már máshogy megy mint a külön alkalmazások között. Logikailag semmit nem kapcsolná össze őket.

Vagy pl. az ablak mozgatása billentyűzetről. Át lehet vinni egér + billentyűvel, többnyire (ez is érdekes, hogy vannak kivételek), de ez pl. 3 sec-ig tart, billentyűzetről Linuxon meg 0.1 sec-ig tartott. Biztos lehet rá írni valami applescript-et.

A "show on all spaces" is baromi idegesítő, szeretnék egy firefox ablakot kitenni a külső monitorra, minden space-re. Na ezt nem lehet megcsinálni rendesen, mert a többi firefox ablak is minden space-en ott lesz. Emiatt futtathatok kettő böngészőt...

Nem elég flexibilis az OSX, ez van.

Jó, hát visszasírni biztos nem fogom, legfeljebb visszaváltok. :) De még nem döntöttem el egyébként, mióta nem használok Chrome-ot, azóta nem fagy az OSX, szóval most nem sürgős annyira.

Kezdesnek megteszi: List of GUI testing tools.

Szerk.: ilyen teren(is) szereny tudasom szerint en ket nagyobb csoportra osztanam hogy hogyan lehet tesztelni:
-Elore felvettt input visszajatszasa
-Veletlenszeru input generalasa

Aztan ezeket lehet finomhangolni, keverni(pl. ha masod esetnel elojon valami problema, akkor menteni es kovetkezo buildeknel mar mint elore felvettkent lejatszani).

Szivesen olvasnek ilyen teren dolgozo emberektol hogy naluk hogyan megy ez.

Masreszt ugye az is megoldas (volt ahol dolgoztam, es igy csinaltak inkabb), hogy fejlesztenek hozza egy interface-t, amivel mindenfele konkret GUI test tool nelkul lehet azokat az esemenyeket egyszeruen triggerelni, amit GUI-n at is lehetne amugy "kezzel". Na persze, ha nincs ilyen, meg mindig vannak tenylegesen a GUI-n at mukodo test toolok is. Az persze passz a reszemrol, hogy konkretan firefox-nal hogy is tesztelnek.

De mondjuk meglepo is lenne, ha GUI-s programot nem lehetne tesztelni csak "kezzel": azert mara eleg sok GUI-s sw letezik kulonbozo OS-ekre, stb, melyek igen komplex test fazison esnek at, neha minden build utan, azert fura lenne, ha ezt mindig manualisan vegeznek el ... A "kezzel megnezem, most jo-e" az inkabb hobby projectek eseteben tortenik, szerintem.

Masreszt ugye az is megoldas (volt ahol dolgoztam, es igy csinaltak inkabb), hogy fejlesztenek hozza egy interface-t, amivel mindenfele konkret GUI test tool nelkul lehet azokat az esemenyeket egyszeruen triggerelni, amit GUI-n at is lehetne amugy "kezzel".

Koszi, ez nem jutott most eszembe pedig olvasgattam mar ilyenekrol is.

Atom fugg milyen program. Nagyon sok helyen csak kézzel tesztelnek, kivéve a terheleses teszteteket, és itt nem garazscegrol hanem sokmilliós nagyvallaltrol beszélek. Ahol most dolgozom pont a webbank regresszios tesztjenek automatizalasat végzem. Kérdezz nyogodtan, az input output ellenőrzés lehet véletlen generált, nem alapfeltétel. Amúgy jó gui alapu automatizacios toolbol nem sok van.

Mi például irtunk egy saját tesztrendszert ahol lépéseket tudsz definiálni (bejelentkezés, különböző műveletek az oldalon).
3 szint van: Vannak a tesztatomok, tesztatomok egy csoportja alkot egy lépést, lépések csoportja egy tesztesetet.

A rendszer az egyes lépések után a workflow alapján ellenőrzi, hogy a weboldalon létrehozott objektum a megfelelő Milestone-ban van-e.

FF+TB addonokkal mindent visz.

No rainbow, no sugar

a Firefox addonok nelkul sem uriti rendesen a memoriat,
1 nap Firefox 4-5 tab >> 180M hasznalva
5 nap Firefox 4-5(termeszetesen kozbe tobb kinyitva bezarva) tab >> 720M hasznalva

Ha az addon háttérszálat is indít, ami időnként csinál is valamit a lefoglalt területeken, akkor ebből frankó memória korrupciós hibák is lesznek :-)

Én nagyon szurkolok Stephen Elopnak, hogy miután kib.szták a Nokiától, a Mozillánál folytassa. Csinálhatná ugyanazt, mint a finneknél: kinyírhatná a mostani termékvonalat, és leválthatná azokat egy "nulláról" fejlesztett megoldással.
A firefox és a thunderbird akármit csinálnak nem lesz jó, rohadt mindkettő a velejétől. :)
--
zsebHUP-ot használok!

Arra azért kíváncsi lennék, hogy ha már használnak egy igencsak pöpec garbage collectort (http://www.hpl.hp.com/personal/Hans_Boehm/gc/) már egy ideje, akkor miért csak memleak detektálásra használják?
Ja, most már a bezárt tabok által lefolglalt memóriát (többnyire) eldobálják... minden új verzióra kell egy új "selling feature".
Sebaj, ha kicsit belehúznak, talán visszatérek hozzájuk, 7 év után :)

Köszönöm, nálam nagyon jól megy a 3.6-os verzió, csak ne csipogna állandóan, hogy frissítsek :)
Apropó, nem lehet lebeszélni erről? Valami hack, add-on, config piszkálás?

Mármint ugye a "Firefox gondoskodik a memóriaszivárgásos add-on-okról".

Vagy most hogy van ez a verziószámozás? Nincs, de mégis van?