Memory size exhausted bei Beitrags-Bearbeitungs-Vergleich

  • Affected Version
    WoltLab Suite 5.3
    Affected App
    WoltLab Suite Core

    Wird ein langer Beitrag mit vielen Änderungen versucht zu vergleichen, bekomme ich folgendes:

    Code
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 53248 bytes) in /var/www/html/community/lib/util/Diff.class.php on line 118

    (Zeile 118 ist $table[$i] = new \SplFixedArray($tableWidth);.)


    Die gesamte Ausführung stürzt dann mit einem Error 500 ab, der Fehler wird daher auch nicht protokolliert.


    Version: 5.3.5

  • Habe hier einen Beitrag gefunden, der enorm an der Grenze ist:

    Code: Alte Version
        <p><p><strong>Wie reserviere ich einen Begriff?</strong></p><p><br></p><p>Einen Begriff könnt ihr reservieren, indem ihr diesen einfach in dem Thread der entsprechenden Kategorie postest, solange noch niemand anders dies getan hat. Dazu gibt es als Ideen-Sammlung jeweils kleine Listen mit Begriffen.</p><p><br></p><p>Ihr dürft euch aber auch selbst einen Begriff raussuchen, wenn dieser noch nicht auf der Liste oder auf der entsprechenden Seite des HP-FC steht.</p><p><br></p><p><br></p><p><strong>Wie lange habe ich für einen Beitrag Zeit? </strong></p><p><br></p><p>Nachdem ihr euch einen Begriff reserviert habt, habt ihr anschließend 7 Tage Zeit für die Recherche und das Schreiben eines Beitrags. Sollte euch diese Zeit nicht ausreichen, gebt bitte im jeweiligen Thread kurz Bescheid, dass ihr eine Verlängerung der Frist benötigt. (Bitte beachtet, dass die Frist nicht von uns bestätigt wird – euer Beitrag reicht für die Reservierung aus. Schaut aber sicherheitshalber nach dem Beitrag nochmal nach, ob nicht jemand anderes in der Zwischenzeit denselben Begriff reserviert hat, damit ihr euch keine unnötige Arbeit macht.)</p><p><br></p><p>Wir empfehlen euch, von den 7 Tagen bis zu 3 Tage für Recherche und Textschreiben zu nutzen, und 3 Tage übrig zu behalten um den Text in eurem Haus Korrektur lesen zu lassen.</p><p><br></p><p><br></p><p><strong>Wo poste ich meinen fertigen Beitrag?</strong></p><p><br></p><p>Wenn ihr fertig mit der Recherche und dem Schreiben des Beitrags seid, postet ihr euren Text bitte im Unterforum "fertige Texte". Ihr macht dort bitte für jeden fertigen Begriff einen neuen Thread auf, wobei ihr die Kategorie des Textes auswählt und als Titel des Themas den Beitragsnamen eintragt.</p><p><br></p><p><u>Beispiel</u>: Kategorie <em>Magische Wesen</em>, Thementitel <em>Niffler.</em></p><p><br></p><p><br></p><p><strong>Ist es erlaubt, gemeinsam zu arbeiten?</strong></p><p><br></p><p>Ja, ihr dürft gerne zusammen schreiben. Wir empfehlen euch zudem, Beiträge im Haus gegenlesen zu lassen und gemachte Anmerkungen einzupflegen. Die Hauspunkte gehen jedoch vollständig an die Person, die den fertigen Beitrag ins Forum gestellt hat und können nicht aufgeteilt werden.</p><p><br></p><p><br></p><p><strong>Nach welchen Kriterien werden die Beiträge bewertet?</strong></p><p><br></p><p>Eure Beiträge werden sowohl nach inhaltlichen Aspekten, als auch nach der Länge bewertet - der Fokus liegt bei der Beurteilung jedoch ganz klar beim Inhalt. Dazu gibt es jeweils Punkte für die Quellenangaben, da wir sorgfältige Recherche wichtig finden. Zudem gibt ein fehlerfreier Beitrag natürlich mehr Punkte, weshalb wir euch empfehlen, Beiträge erst in eurem Haus gegenlesen zu lassen.</p><p><br></p><p>Bitte beachtet, dass die Texte unserer Infoseiten aus Zauberersicht geschrieben sein und sich auf das magische Wesen konzentrieren sollen. Reale Wesen und Sichtweisen dürfen zwar gerne auch erwähnt werden, der Fokus sollte jedoch ganz klar auf dem magischen Wesen bzw. der Sichtweise aus der Zaubererwelt liegen. Bitte orientiert euch dabei an den bereits bestehenden Infoseiten.</p><p><br></p><p>Bitte schaut euch vor dem Schreiben erst ein paar bestehende Beiträge der jeweiligen Kategorie auf der Webseite an, damit ihr euch am Stil der bestehenden Texte und der Form der Quellenangaben orientieren könnt. Unsere Seiten sind mit der Rechtschreibung für Deutschland verfasst, wir empfehlen daher beispielsweise Schweizern mit Tastaturen ohne ß den Beitrag von jemandem aus Deutschland Korrekturlesen zu lassen.</p><p><br></p><p><br></p><p><u><strong>Bewertung von Magische Wesen</strong></u><br>Für die Inhaltsbewertung haben wir verschiedene Themengebiete für jeden Text zu den Magische Wesen aufgestellt. Pro eingebundenem Themengebiet vergeben wir 40 Punkte. (Es wird dabei aber nicht erwartet, dass jeder Begriff auch zu jedem Themengebiet etwas stehen haben muss.) Die Themengebiete findet ihr im Reservierungsthread zur den Magischen Wesen.</p><p><br></p><p>Bei der Länge peilen wir maximal ca. 400 Wörter an, möchten aber auch aufwendigere Beiträge lohnenswert bewerten. Daher gibt es für die jeweils ersten 400 Wörter eines Beitrags 1 Punkt pro vier Wörter, für alle weiteren Wörter werden 1 Punkt pro 10 Wörter vergeben. Es gibt keine Mindest- oder Maximallänge, wenn es über einen Begriff einfach nicht viel zu sagen gibt, sind auch wenige Worte völlig in Ordnung.</p><p><br></p><p><br></p><p><u><strong>Bewertung von Quellen</strong></u></p><p><br></p><p>Pro genannter Quelle erhaltet ihr Punkte, wobei Buchquellen höher gewertet werden als Internetquellen. Es werden bis zu 5 Quellen in die Bewertung mit einbezogen.<br>- Buchquelle: 10 Punkte je Quelle<br>- Internetquelle: 5 Punkte je Quelle</p><p><br></p><p><br></p><p><strong>Wie ist das Vorgehen, wenn ich einen alten Beitrag korrigiere oder ergänze? </strong></p><p><br></p><p>Solltet ihr in einem bereits bestehenden, hochgeladenen Text Fehler oder inhaltliche Lücken finden, der noch keinen eigenen Thread hat, eröffnet ihr ebenfalls einen neuen Thread in der jeweiligen Kategorie. In den ersten Beitrag zitiert ihr den unangepassten, aktuellen Originaltext. Im zweiten Beitrag markiert schließlich alle Textbereiche, die ihr angepasst oder korrigiert habt.</p><p><br></p><p><br></p><p><strong>Wie funktionieren Korrekturen? </strong></p><p><br></p><p>Natürlich gibt es für den ursprünglichen Autor des Beitrags Abzug für gemachte Fehler. Es lohnt sich also, bereits vorher schon einmal gegenlesen zu lassen. Daher wird die erste ausführliche Korrektur beachtet und von der erreichten Punktzahl abgezogen: Rechtschreibfehler werden mit 5 Punkten gewertet (hierzu zählen auch Zeichensetzungsfehler), Grammatikfehler mit 10 und Inhaltsfehler mit 15 Punkten. Formulierungsverbesserungen werden mit einmalig 10 Punkten bewertet.</p><p><br></p><p>Für eine Korrektur zitiert ihr den gesamten Text und kennzeichnet eure Änderungen farblich. Wir orientieren uns an der Rechtschreibung für Deutschland.</p><p><br></p><p>Solltet ihr selbst keinen Beitrag schreiben wollen, könnt ihr Punkte für das Korrigieren anderer Beiträge sammeln. Auch hier gilt: Pro gefundenem Rechtschreib-, Grammatik- oder Inhaltsfehler bekommt ihr 5, 10 bzw. 15 Punkte gutgeschrieben. Formulierungsverbesserungen werden pro Person und Thema mit einmalig 10 Punkten bewertet.</p><p><br></p><p>Ab der zweiten Korrektur werden diese Fehlerpunkte dem Schreiber nicht mehr abgezogen, der korrigierende Schüler bekommt aber natürlich noch entsprechend seine/ihre Punkte gutgeschrieben.</p><p><br></p><p><br></p><p><strong>Was passiert mit meinem Beitrag nach der Korrektur?</strong></p><p><br></p><p>Nach der ersten Korrektur wird euer Beitrag von uns als Webseite umgesetzt und schließlich hochgeladen. Sollten danach noch Korrekturen anfallen, werden diese nachträglich in den Text eingepflegt.</p><p><br></p><p><br></p><p><strong>Kann ich auch entsprechende Bilder zu den Texten einreichen?</strong></p><p><br></p><p>Wir würden uns hier gerne erst einmal auf die Informationen und Texte zu den neuen Begriffen konzentrieren. Daher arbeiten wir noch an einem vernünftigen Bewertungsschema für Bilder. Sobald das geklärt ist, werdet ihr auch Bilder einreichen können.</p></p>
    Code: Neue Version
        <p><p><strong>Wie reserviere ich einen Begriff?</strong></p><p><br></p><p>Einen Begriff könnt ihr reservieren, indem ihr diesen einfach in dem Thread der entsprechenden Kategorie postest, solange noch niemand anders dies getan hat. Dazu gibt es als Ideen-Sammlung jeweils kleine Listen mit Begriffen.</p><p><br></p><p>Ihr dürft euch aber auch selbst einen Begriff raussuchen, wenn dieser noch nicht auf der Liste oder auf der entsprechenden Seite des HP-FC steht.</p><p><br></p><p>Sobald ihr den Text des Begriffes eingereicht habt, löscht ihr euren Reservierungsbeitrag wieder. Dazu klickt ihr im Beitrag auf Bearbeiten und setzt den Haken bei „Beitrag löschen“.</p><p><br></p><p><br></p><p><strong>Wie lange habe ich für einen Beitrag Zeit? </strong></p><p><br></p><p>Nachdem ihr euch einen Begriff reserviert habt, habt ihr anschließend 7 Tage Zeit für die Recherche und das Schreiben eines Beitrags. Sollte euch diese Zeit nicht ausreichen, gebt bitte im jeweiligen Thread kurz Bescheid, dass ihr eine Verlängerung der Frist benötigt. (Bitte beachtet, dass die Frist nicht von uns bestätigt wird – euer Beitrag reicht für die Reservierung aus. Schaut aber sicherheitshalber nach dem Beitrag nochmal nach, ob nicht jemand anderes in der Zwischenzeit denselben Begriff reserviert hat, damit ihr euch keine unnötige Arbeit macht.)</p><p><br></p><p>Wir empfehlen euch, von den 7 Tagen bis zu 3 Tage für Recherche und Textschreiben zu nutzen, und 3 Tage übrig zu behalten um den Text in eurem Haus Korrektur lesen zu lassen.</p><p><br></p><p><br></p><p><strong>Wo poste ich meinen fertigen Beitrag?</strong></p><p><br></p><p>Wenn ihr fertig mit der Recherche und dem Schreiben des Beitrags seid, postet ihr euren Text bitte im Unterforum "fertige Texte". Ihr macht dort bitte für jeden fertigen Begriff einen neuen Thread auf, wobei ihr die Kategorie des Textes auswählt und als Titel des Themas den Beitragsnamen eintragt.</p><p><br></p><p><u>Beispiel</u>: Kategorie <em>Magische Wesen</em>, Thementitel <em>Niffler.</em></p><p><br></p><p>Dorthin stellt ihr den gesamten Text. Unter den Text schreibt ihr die Anzahl Wörter eures Textes.</p><p><br></p><p><br></p><p><strong>Ist es erlaubt, gemeinsam zu arbeiten?</strong></p><p><br></p><p>Ja, ihr dürft gerne zusammen schreiben. Wir empfehlen euch zudem, Beiträge im Haus gegenlesen zu lassen und gemachte Anmerkungen einzupflegen. Die Hauspunkte gehen jedoch vollständig an die Person, die den fertigen Beitrag ins Forum gestellt hat und können nicht aufgeteilt werden.</p><p><br></p><p><br></p><p><strong>Nach welchen Kriterien werden die Beiträge bewertet?</strong></p><p><br></p><p>Eure Beiträge werden sowohl nach inhaltlichen Aspekten, als auch nach der Länge bewertet - der Fokus liegt bei der Beurteilung jedoch ganz klar beim Inhalt. Dazu gibt es jeweils Punkte für die Quellenangaben, da wir sorgfältige Recherche wichtig finden. Zudem gibt ein fehlerfreier Beitrag natürlich mehr Punkte, weshalb wir euch empfehlen, Beiträge erst in eurem Haus gegenlesen zu lassen.</p><p><br></p><p>Bitte beachtet, dass die Texte unserer Infoseiten aus Zauberersicht geschrieben sein und sich auf den magischen Teil des Begriffs konzentrieren sollen. Muggel-Sichtweisen dürfen zwar gerne auch erwähnt werden, aber nicht übermäßig viel Raum einnehmen. Bitte orientiert euch dabei an den bereits bestehenden Infoseiten.</p><p><br></p><p>Bitte schaut euch vor dem Schreiben erst ein paar bestehende Beiträge der jeweiligen Kategorie auf der Webseite an, damit ihr euch am Stil der bestehenden Texte und der Form der Quellenangaben orientieren könnt. Unsere Seiten sind mit der Rechtschreibung für Deutschland verfasst, wir empfehlen daher beispielsweise Schweizern mit Tastaturen ohne ß den Beitrag von Mitschülern aus Deutschland Korrekturlesen zu lassen.</p><p><br></p><p><br></p><p><u><strong>Bewertung von Magische Wesen</strong></u><br>Für die Inhaltsbewertung haben wir verschiedene Themengebiete für jeden Text zu den Magische Wesen aufgestellt. Pro eingebundenem Themengebiet vergeben wir 40 Punkte. (Es wird dabei aber nicht erwartet, dass jeder Begriff auch zu jedem Themengebiet etwas stehen haben muss.) Die Themengebiete findet ihr im Reservierungsthread zur den Magischen Wesen.</p><p><br></p><p>Bei der Länge peilen wir maximal ca. 400 Wörter an, möchten aber auch aufwendigere Beiträge lohnenswert bewerten. Daher gibt es für die jeweils ersten 400 Wörter eines Beitrags 1 Punkt pro vier Wörter, für alle weiteren Wörter werden 1 Punkt pro 10 Wörter vergeben. Es gibt keine Mindest- oder Maximallänge, wenn es über einen Begriff einfach nicht viel zu sagen gibt, sind auch wenige Worte völlig in Ordnung.</p><p><br></p><p><br></p><p><strong><u>Bewertung von Spiele-Seiten</u></strong></p><p>Da die Spiele-Seiten thematisch äußerst unterschiedlich ausfallen können, gibt es hier keine inhaltliche Bewertung. Zudem gibt es keine angepeilte Länge, auch hier seid ihr je nach Seiteninhalt frei. Wenn der Beitrag zu lang wird und mehrere Unterthemen beinhaltet, empfehlen wir zur besseren Lesbarkeit jedoch, daraus mehrere Beiträge zu machen.</p><p><br></p><p>Für Spiele-Seiten wird 1 Punkt pro 2 Wörter vergeben. Ihr könnt den Beitrag freiwillig mit bis zu einem Screenshot pro 400 Wörter unterlegen, wofür es pro Screenshot oder Foto 10 Punkte gibt.</p><p><br></p><p><br></p><p><u><strong>Bewertung von Quellen</strong></u></p><p><br></p><p>Pro genannter Quelle erhaltet ihr Punkte, wobei Buchquellen höher gewertet werden als Internetquellen. Es werden bis zu 5 Quellen in die Bewertung mit einbezogen.<br>- Buchquelle: 10 Punkte je Quelle<br>- Internetquelle: 5 Punkte je Quelle</p><p><br></p><p><br></p><p><strong>Wie ist das Vorgehen, wenn ich einen alten Beitrag korrigiere oder ergänze? </strong></p><p><br></p><p>Solltet ihr in einem bereits bestehenden, hochgeladenen Text Fehler oder inhaltliche Lücken finden, der noch keinen eigenen Thread hat, eröffnet ihr ebenfalls einen neuen Thread in der jeweiligen Kategorie. In den ersten Beitrag zitiert ihr den unangepassten, aktuellen Originaltext. Im zweiten Beitrag markiert schließlich alle Textbereiche, die ihr angepasst oder korrigiert habt.</p><p><br></p><p><br></p><p><strong>Wie funktionieren Korrekturen? </strong></p><p><br></p><p>Natürlich gibt es für den ursprünglichen Autor des Beitrags Abzug für gemachte Fehler. Es lohnt sich also, bereits vorher schon einmal gegenlesen zu lassen. Daher wird die erste ausführliche Korrektur beachtet und von der erreichten Punktzahl abgezogen: Rechtschreib-, Grammatik- und Formulierungsfehler geben je 10 Punkte Abzug (max. 1x pro Wort), objektive Inhaltsfehler je 15 Punkte.</p><p><br></p><p>Für eine Korrektur zitiert ihr den gesamten Text und kennzeichnet eure Änderungen farblich. Wir orientieren uns an der Rechtschreibung für Deutschland.</p><p><br></p><p>Solltet ihr selbst keinen Beitrag schreiben wollen, könnt ihr Punkte für das Korrigieren anderer Beiträge sammeln. Auch hier gilt: Pro gefundenem Rechtschreib- und Grammatikfehler bekommt ihr 10 Punkte, für deutliche Formulierungsverbesserungen (bei Formulierungen, die logisch keinen Sinn ergeben, äußerst holprig lesbar oder außergewöhnlich lang sind) ebenfalls 10 Punkte und für jeden objektiv feststellbaren Inhaltsfehler 15 Punkte gutgeschrieben.</p><p><br></p><p>Ab der zweiten Korrektur werden diese Fehlerpunkte dem Schreiber nicht mehr abgezogen, der korrigierende Schüler bekommt aber natürlich noch entsprechend seine/ihre Punkte gutgeschrieben.</p><p><br></p><p><br></p><p><strong>Was passiert mit meinem Beitrag nach der Korrektur?</strong></p><p><br></p><p>Nach der ersten Korrektur wird euer Beitrag von uns als Webseite umgesetzt und schließlich hochgeladen. Sollten danach noch Korrekturen anfallen, werden diese nachträglich in den Text eingepflegt.</p><p><br></p><p><br></p><p><strong>Kann ich auch gemalte Bilder zu den Texten einreichen?</strong></p><p><br></p><p>Wir würden uns hier gerne erst einmal auf die Informationen und Texte zu den neuen Begriffen konzentrieren. Daher arbeiten wir noch an einem vernünftigen Bewertungsschema für Bilder. Sobald das geklärt ist, werdet ihr auch Bilder einreichen können.</p></p>

    Bei 10 Ausführungsversuchen des Vergleichs kommt einer durch und 9 enden mit dem Fatal Error.

  • Ergänzung: Das Problem besteht auch hier im Forum, wenn die die Vergleichsfunktion hier in obigem Beitrag (#2) nutze, um Version 1 mit Version 2 zu vergleichen.

  • Ergänzung: Das Problem besteht auch hier im Forum, wenn die die Vergleichsfunktion hier in obigem Beitrag (#2) nutze.

    Änder mal deine Zitate zum Codeblock, dann muss man nicht jedesmal ewig scrollen :D

    Danke

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Tim Düsterhus

    Set the Label from Confirmed to Future fix
    • Official Post

    Hallo,


    ich setze das hier mal auf „Future Fix“ und habe dieses Thema in dieser Issue referenziert:


    Overhaul the version history / comparison · Issue #3955 · WoltLab/WCF
    The comparison currently is a plain view with the raw HTML on both sides. Even the previous variant with bbcode was a subpar solution because it would report…
    github.com


    Die Berechnung der Unterschiede ist grundsätzlich recht speicherhungrig. In diesem Fall vermute ich, dass die Problematik darin liegt, dass der Beitrag effektiv nur aus einer einzelnen Zeile besteht, was das Problem verstärkt. Mit einer entsprechenden Formatierung vor dem „diffen“ sollte sich das Problem vermutlich von alleine lösen.

    • Official Post

    Hallo,


    mit WoltLab Suite 6.0 setzen wir auf eine „externe“ Bibliothek zur Berechnung der Unterschiede. Diese enthält zwei unterschiedliche Algorithmen zur Berechnung. Einen schnellen Algorithmus, der aber viel Arbeitsspeicher benötigt (dieser entspricht ungefähr unserer ursprünglichen Implementierung) und einen langsameren Algorithmus der wenig Arbeitsspeicher benötigt. Die Bibliothek wählt die passende Version automatisch aus und ich kann bestätigen, dass das Beispiel aus diesem Beitrag:



    problemlos läuft, während es mit unserer eigenen Implementierung (und der „schnellen“ Implementierung der Bibliothek) mit dem Out Of Memory-Fehler abbricht.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!