Beiträge von milupo

    Seit dem 19.07.2019 können 70er Nightlies bei Verwendung bestimmter Benutzerskripte abstürzen, nämlich solcher Skripte, die die JavaScript-Funktion eval() verwenden. Firefox stürzt dabei sofort beim Start ab, ohne dass ihr etwas tun könnt.


    Als erstes solltet ihr euch davon überzeugen, was den Absturz verursacht. Startet einen Texteditor und öffnet darin euer Profilverzeichnis. Im Profilverzeichnis gibt es einen Ordner crashes und darin einen Unterordner events. Im Ordner events gibt es eine Datei oder mehrere Dateien mit einem kryptischen Dateinamen ohne Dateiendung. Dieser kryptische Dateiname ist eigentlich die Absturz-ID, z. B. f45a4550-7bea-480a-92fa-9d3a550398f7. Diese Dateien sind reine Textdateien, die ihr jedoch, weil sie keine Dateiendung haben, nicht einfach mit Doppelklick öffnen könnt. Allerdings fragt euch Windows dann, mit welchem Programm ihr sie öffnen wollt, dann solltet ihr immer einen/euren Texteditor auswählen, z. B. Notepad++.


    In der Datei scrollt ihr dann hinunter bis fast zum Ende und es kommt dann folgende Zeile:


    Code
    1. MozCrashReason=do not use eval with system privileges: file:///c:/users/lenovo%20m58/appdata/roaming/mozilla/firefox/profiles/n8ilmaz4.testnightly69-5/chrome/speicherort_aendern-hsb.uc.js

    MozCrashReason bezeichnet die Absturzursache. Hier ist do not use eval with system privileges als Ursache angegeben, also „Verwenden Sie eval nicht mit Systemrechten“. Das ist genau das in diesem Beitrag benannte Problem. Hinter dem folgenden Doppelpunkt ist der Pfad zum betroffenen Skript angegeben, hier also

    Code
    1. file:///c:/users/lenovo%20m58/appdata/roaming/mozilla/firefox/profiles/n8ilmaz4.testnightly69-5/chrome/speicherort_aendern-hsb.uc.js.

    Es kann aber noch weitere Skripte betreffen, denn Firefox stürzt sofort nach dem ersten betroffenen Skript ab und kommt gar nicht erst zu weiteren betroffenen Skripten.


    Für dieses Problem mit der Funktion eval() gibt es zwei Lösungen:

    1. Die Skripte entfernen, also nicht mehr nutzen. Das bietet sich vor allen Dingen an, wenn sie sowieso nicht mehr richtig funktionieren.
    2. Oder ihr geht in about:config, sucht nach der Einstellung security.allow_eval_with_system_principal und setzt deren Wert auf true. Dann lassen sich die betroffenen Skripte dennoch verwenden, ohne dass Firefox abstürzt.

    Damit ihr die Einstellung ändern könnt, müsst ihr erst das Skript im Profil deaktivieren, das heißt, die Datei umbenennen, z. B. benutzerskript.uc.js in benutzerskript.txt oder ganz aus dem Profil entfernen. Ansonsten stürzt Firefox wieder ab. Das ist sowieso noch möglich, wenn es noch weitere betroffene Skripte gibt. Dann könnt ihr die Skripte wieder zurückumbenennen.

    In Fx 68.0.1 funktioniert es bei mir nur nach Heruntersetzen der Pixelwerte unter 10px in den Zeilen 6 und 7. Ist ja auch logisch, denn die 10px beruhen auf den 50 Einträgen von waldmeister24. Ich habe wie cartridge_case 100 Einträge verwendet. Eigenartig ist nur, dass die Anpassung im Nightly nicht notwendig ist.

    mag sein, dass der Code in euren Augen fehlerhaft ist, aber dieser funktioniert hier in einem neuen Fx mit neuen Profil.

    Was heißt in „in unseren Augen“. Wir haben die CSS-Regeln nicht gemacht. Du kannst ja auch machen, was du willst, aber wenn du Code weitergibst, sollte er schon korrekt sein.

    milupo ,


    diesen Code habe ich wegen Benutzung von Stylus in einem neuen Profil getestet und funktioniert, wie er soll.

    Mit dem !important? Mir scheint, du hast das erst später hinzugefügt und zwar statt vor der schließenden Klammer dahinter. Und da ja der Code nach dem !important; mit eine Klammer abgeschlossen wird, hast du noch eine zusätzliche Klammer hinzugefügt.

    So sieht der funktionierende Code für die userContent.css aus:


    Code
    1. /* PopUps ausblenden */
    2. @-moz-document domain("camp-firefox.de") {
    3. .popoverContent {display: none}!important ;}
    4. }

    Das dürfte aber nicht funktionieren, denn hier ist eine geschweifte Klammer zuviel. Die Klammer hinter none gehört da nicht hin.

    (in Bezug auf vorstehenden gelöschten Beitrag): Boersenfeger, du musst zwischen Gestaltung per CSS und Zuweisung von Funktionalität unterscheiden. Mit CSS kannst du die Sidebar nur nach Gutdünken gestalten, es kann aber nicht die Funktionalität der Sidebar ausführen. Das wird durch den Programmcode von Firefox übernommen, dadurch musst du erst die Sidebar mit dem Button einschalten. Die Funktionalität der Sidebar lässt sich sicherlich beeinflussen, das geht dann aber nur mit einem Skript.

    Bei mir funktioniert der Code, allerdings habe ich nur den Code bis Zeile 112.


    Lösche mal diese Text aus Zeile 3;


    CSS
    1. url("chrome://browser/content/bookmarks/bookmarksPanel.xul"),

    und diesen Text aus Zeile 6:


    CSS
    1. url("chrome://browser/content/history/history-panel.xul")

    Schließlich lösche das Komma am Ende von Zeile 5.


    Die beiden Dateien bookmarksPanel.xul und history-Panel.xul gibt es nicht mehr.

    Habe die von Sören erwähnte Einstellung security.allow_eval_with_system_principal mal auf true gesetzt und das Lesezeichen-Skript wieder im Ordner chrome abgespeichert, das Nightly stürzt wirklich nicht mehr ab. Es wäre aber besser, wenn Firefox gar nicht abstürzen würde, sondern eine Warnung o. ä. erschiene, damit man als Nutzer handlungsfähig bleibt. An about:crashes kommt man ja in einem solchen Moment nicht heran.

    Hallo,


    ich habe jetzt erstmal nur das letzte Script getestet. Der Absturz ist beabsichtigt, eine sogenannte Assertion, wie man in der Programmierung sagt. Das liegt am eval(). Du musst über about:config security.allow_eval_with_system_principal auf true setzen, damit Firefox mit diesem Script nicht mehr abstürzt.


    PS: "eval is evil", wie man sagt. Das sollte man sowieso möglichst nie verwenden:

    Hallo Sören, danke für den Hinweis. In den Absturzdateien im Ordner crashes des Profilverzeichnisses steht auch als Absturzursache:


    Do not use eval with system privileges, gefolgt vom Pfad zum entsprechenden Skript. Daher weiß ich überhaupt, dass Skripte die Ursache waren. Meistens stand dort das Datum-Zeit-Skript, wahrscheinlich, weil es als erstes geladen wurde. Seltsamerweise ist die eval-Funktion dort gar nicht enthalten, übrigens auch im Skript openBookModoki40.uc.js nicht. Dafür im Skript UndoListInTabmenuToo.uc.js, das aber nicht zum Absturz führt.


    Nun ja, ich bin ja nicht der Skript-Autor, habe also diese Funktion nicht eingebaut. Bisher gab es ja auch keine Probleme damit.

    Hallo, an alle Skriptbenutzer,


    folgende drei Skripte führen bei mir seit heute mit dem Nightly zum Absturz:


    openBookModoki40.uc.js (funktioniert sowieso nicht mehr richtig):


    Weiterhin das Datum-Zeit-Skript für die Titelleiste - das für die Menüleiste funktioniert ohne Probleme:

    Und schließlich folgendes Skript, das den Ordner Lesezeichen-Menü statt den Ordner Weitere Lesezeichen als Standardordner für die Abspeicherung von Lesezeichen einstellt:


    JavaScript
    1. (function() {
    2. if (location != 'chrome://browser/content/browser.xhtml')
    3. return;
    4. eval('PlacesCommandHook.bookmarkPage = ' + PlacesCommandHook.bookmarkPage.toString()
    5. .replace(/^async/, 'async function')
    6. .replace(/unfiledGuid/g, 'menuGuid')
    7. );
    8. })();

    Ja in der CSS Datei hatte ich das so auch drin, ich möchte aber das selbe Icon auch im TAB eingeblendet haben und das geht scheinbar nur wenn das Icon direkt in den Eigenschaften eingetragen wird.

    Es müsste aber auch aus der CSS-Datei in den Tab zu zaubern sein. Ich habe nur noch nicht den richtigen Selektor gefunden. Ich dachte an so etwas wie:


    CSS
    1. .tab-selector::before {
    2. content: "";
    3. background: url(../icons.editor-tab.png) !important;
    4. }

    Leute, ich kriege so langsam die Krise. In letzter Zeit verabschieden sich die Browserwerkzeuge öfter ins Nirwana und lassen sich trotz Aktivierung nicht mehr aufrufen. Ich muss jedes Mal ein neues Profil anlegen, sind zwar nur Testprofile, aber es ist trotzdem ärgerlich. Wie kriege ich es hin, dass die Browserwerkzeuge sich wieder nutzen lassen? Wenn sie im Tastkmanager erscheinen, unter welcher Bezeichnung?

    Einen Link auf ein Icon auf meinem PC kann man nicht nehmen?
    Zum Beispiel in dieser Form: url("file:///D:/Seafile/Mozilla/Icons/deaktivieren.png")i

    Zumindest aus der CSS-Datei heraus geht es, habe aber jetzt erst einmal nur für das Nightly getestet.


    CSS
    1. background: url("file:../icons/editor.png") !important;

    Bei mir ist der Ordner icons im Ordner chrome und die Datei editor.png im Ordner CSS im Ordner chrome. Die editor.png ist die von Zitronella angegebene Grafik, die ich aus Base64 umgewandelt habe.