addPanel in Endlosschleife (crash)

  • Hi

    Ich weiss zwar nicht genau, ob das eine Sicherheitslücke darstellt oder schon ein alter Thread existiert, aber mit ein wenig Javascript crasht mein Firefox 1.5.0.3 unter winXP sp2, so dass der ganze Computer nicht mehr reagiert und nur noch die Stromtaste hilft.

  • Hallo zusammen.

    Ich habe es mal mit meinem Linux Rechner ausprobiert .
    Nach anklicken dieser Seite, hat Firefox 1.5.0.3 nichts mehr getan.
    (Vorher das script lokal gespeichert)
    Ich wechselte dann auf die Konsole (top) und sah, das Firefox 99% CPU auslastung beansprucht. Der Speicherverbrauch stand bei 40% und stieg Konstant immer weiter. Bei 55% habe ich den Firefox abgeschossen. Ich wollte nicht, das sich Firefox den Rest auchnoch einverleibt.

    Das finde ich bedenklich.

  • Ja was erwartet ihr den wenn ihr ein Programm auf eurem Rechner laufen lässt das mit jedem Schleifendurchlauf immer mehr Ressourcen beansprucht.
    Und die Schleife nebenbei nie terminiert.

    Javascript mag keine zugriff auf eure Festplatte haben aber sehr wohl Einfluss auf eure CPU und Speicherauslastung.

    Wird vielleicht mal Zeit das man Scripts nur eine gewisse anzahl von Ressourcen zugesteht.

    p.s.
    Nachtrag, Opera 9 Beta 2 beansprucht ebenfalls > 90% CPU bleibt aber bedienbar
    IE 6 verbraucht angeblich nix von der CPU, reagiert aber nicht mehr

    Unterstüzten die anderen Browser überhaupt window.sidebar ?

  • nein, unterstützen sie nicht.
    Aber es wird innerhalb der Funktion eine Abfrage gestellt, ob es window.sidebar gibt.
    Genau so, dass die for-Schleife trotzdem i bis ins Unendliche hochzählt (daher kommen wohl die verbrauchten Ressourcen) und da ja eine Abfrage stattfindet, ob es window.sidebar gibt, wird auch keine Exception geworfen, die das Script in anderen Browsern abbrechen würde.

  • Bleiben trotzdem zwei unschöne Eindruecke:

    1) Warum die Watchdog-Funktion des Firefox nicht eingreift.

    2) Warum ist das interne Thread Handling des Firefox so schlecht das ein User-Script dauerhaft soviel Rechenleistung bekommt dass die Browseroberfläche nicht mehr bedienbar ist.

  • 1: wundert mich auch. Ich habe mal eine Test-Schleife geschrieben, die einen String immer mit sich selbst "addierte". Nach etwa 900MB verbrauchtem RAM (viel zu viel!) wurde das Ding dann abgebrochen, weil die Variable zu lang sei.

    2: das Problem ist: UI und JavaScript ist der selbe Thread! Das ist dadurch bedingt, dass die XUL-Oberfläche selbst auch JavaScript verwendet um jegliche Aktionen durchzuführen. Und leider kann auch nicht jedes Fenster/Tab einen eigenen JS-Thread bekommen, da es da so unglückselige Dinge wie "opener" oder "parent"/"top" gibt.