FormBuilder gebrochen im WSC 5.3

  • Affected Version
    WoltLab Suite 5.3

    Seit dem letzten WSC 5.3 Update gibt es in meine Endanwendungen (Lexikon, Marktplatz, Filebase) Fehler verursacht durch den FormBuilder. Was ich bis jetzt gesehen habe, dürfte der Fehler nur im WSC 5.3.13 auftreten. Reproduzierbar in den entsprechenden Anwendungen, wenn ein neuer Eintrag erstellt werden soll.


  • Der selbe Fehler tritt unter WSC 5.3.13 auch im Ticketsystem von Darkwood.Design beim TicketAdd Formular auf.

    Requested URL
    GET /support/ticket-add/
    Referrer
    https://<redacted>/support/
    Error Message
    Undefined index: 3d43f83f21bf57577a500f1dc7ab075437aafd1d
    Type
    wcf\system\exception\ErrorException
    File (Line)
    /var/www/<redacted>/html/lib/system/WCF.class.php (349)
    Stacktrace
    1. /var/www/<redacted>/html/templates/compiled/4_wcf_2___formContainer.php (52): wcf\system\WCF::handleError(…)
    2. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    3. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    4. /var/www/<redacted>/html/lib/system/form/builder/container/FormContainer.class.php (58): wcf\system\template\TemplateEngine->fetch(…)
    5. /var/www/<redacted>/html/templates/compiled/4_wcf_2___form.php (94): wcf\system\form\builder\container\FormContainer->getHtml(…)
    6. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    7. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    8. /var/www/<redacted>/html/lib/system/form/builder/FormDocument.class.php (416): wcf\system\template\TemplateEngine->fetch(…)
    9. /var/www/<redacted>/html/templates/compiled/4_ticketsystem_2_ticketAdd.php (1903): wcf\system\form\builder\FormDocument->getHtml(…)
    10. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    11. /var/www/<redacted>/html/lib/page/AbstractPage.class.php (323): wcf\system\template\TemplateEngine->display(…)
    12. /var/www/<redacted>/html/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    13. /var/www/<redacted>/html/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    14. /var/www/<redacted>/html/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    15. /var/www/<redacted>/html/support/index.php (10): wcf\system\request\RequestHandler->handle(…)
  • Merkwürdig, wenn ich auf PHP 8 umstelle, kommt beim Editieren oder neuen Eintrag folgender Fehler:




    Eintrag erstellen:


    System Information

    • PHP Version:

      8.0.9

    • WoltLab Suite Core:

      5.3.13

    • Peak Memory Usage:

      13.296/512 MiB

    • Request URI:

      GET /core/lexicon/entry-add/?categoryID=0


    Error

    • Error Type:

      wcf\system\exception\ErrorException

    • Error Message:

      Undefined array key "018cfb526ffacc60de3674332791fe756a970719"

    • File:

      */lib/system/WCF.class.php (349)

    • Stack Trace:
      • #0 */templates/compiled/2_wcf_1___formContainer.php (52):
      • wcf\system\WCF::handleError()
      • #1 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___formContainer.php')
      • #2 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #3 */lib/system/form/builder/container/FormContainer.class.php (58):
      • wcf\system\template\TemplateEngine->fetch()
      • #4 */templates/compiled/2_wcf_1___form.php (94):
      • wcf\system\form\builder\container\FormContainer->getHtml()
      • #5 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___form.php')
      • #6 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #7 */lib/system/form/builder/FormDocument.class.php (416):
      • wcf\system\template\TemplateEngine->fetch()
      • #8 */templates/compiled/2_lexicon_1_entryAdd.php (2036):
      • wcf\system\form\builder\FormDocument->getHtml()
      • #9 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_lexicon_1_entryAdd.php')
      • #10 */lib/page/AbstractPage.class.php (323):
      • wcf\system\template\TemplateEngine->display()
      • #11 */lib/page/AbstractPage.class.php (114):
      • wcf\page\AbstractPage->show()
      • #12 */lib/system/request/Request.class.php (83):
      • wcf\page\AbstractPage->__run()
      • #13 */lib/system/request/RequestHandler.class.php (107):
      • wcf\system\request\Request->execute()
      • #14 */lexicon/index.php (11):
      • wcf\system\request\RequestHandler->handle()


    Eintrag editieren:


    System Information

    • PHP Version:

      8.0.9

    • WoltLab Suite Core:

      5.3.13

    • Peak Memory Usage:

      13.037/512 MiB

    • Request URI:

      GET /core/lexicon/entry-edit/26/

    Error

    • Error Type:

      wcf\system\exception\ErrorException

    • Error Message:

      Undefined array key "018cfb526ffacc60de3674332791fe756a970719"

    • File:

      */lib/system/WCF.class.php (349)

    • Stack Trace:
      • #0 */templates/compiled/2_wcf_1___formContainer.php (52):
      • wcf\system\WCF::handleError()
      • #1 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___formContainer.php')
      • #2 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #3 */lib/system/form/builder/container/FormContainer.class.php (58):
      • wcf\system\template\TemplateEngine->fetch()
      • #4 */templates/compiled/2_wcf_1___form.php (94):
      • wcf\system\form\builder\container\FormContainer->getHtml()
      • #5 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___form.php')
      • #6 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #7 */lib/system/form/builder/FormDocument.class.php (416):
      • wcf\system\template\TemplateEngine->fetch()
      • #8 */templates/compiled/2_lexicon_1_entryAdd.php (2036):
      • wcf\system\form\builder\FormDocument->getHtml()
      • #9 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_lexicon_1_entryAdd.php')
      • #10 */lib/page/AbstractPage.class.php (323):
      • wcf\system\template\TemplateEngine->display()
      • #11 */lib/page/AbstractPage.class.php (114):
      • wcf\page\AbstractPage->show()
      • #12 */lib/system/request/Request.class.php (83):
      • wcf\page\AbstractPage->__run()
      • #13 */lib/system/request/RequestHandler.class.php (107):
      • wcf\system\request\Request->execute()
      • #14 */lexicon/index.php (11):
      • wcf\system\request\RequestHandler->handle()



    Stelle ich hingegen auf PHP 7.4, funktioniert es wieder.

  • Schließe mich an, Forum ist nicht mehr nutzbar in der jetzigen Konstellation. Ich hoffe auf einen schnellen Fix.. Bzw. einen Lösungsvorschlag.


    Requested URL
    GET /wsif/entry-edit/677-ts2017-raildriver-and-joystick-interface/
    Referrer
    Error Message
    Undefined index: c53fed0d021cb84025a30e7c7f14c6ce093455d0
    Type
    wcf\system\exception\ErrorException
    File (Line)
    /var/www/clients/client1/web5/web/wcf/lib/system/WCF.class.php (349)
    Stacktrace
    1. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_wcf_1___formContainer.php (52): wcf\system\WCF::handleError(…)
    2. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    3. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    4. /var/www/clients/client1/web5/web/wcf/lib/system/form/builder/container/FormContainer.class.php (58): wcf\system\template\TemplateEngine->fetch(…)
    5. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_wcf_1___form.php (94): wcf\system\form\builder\container\FormContainer->getHtml(…)
    6. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    7. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    8. /var/www/clients/client1/web5/web/wcf/lib/system/form/builder/FormDocument.class.php (416): wcf\system\template\TemplateEngine->fetch(…)
    9. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_filebase_1_entryAdd.php (3953): wcf\system\form\builder\FormDocument->getHtml(…)
    10. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    11. /var/www/clients/client1/web5/web/wcf/lib/page/AbstractPage.class.php (323): wcf\system\template\TemplateEngine->display(…)
    12. /var/www/clients/client1/web5/web/wcf/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    13. /var/www/clients/client1/web5/web/wcf/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    14. /var/www/clients/client1/web5/web/wcf/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    15. /var/www/clients/client1/web5/web/wsif/index.php (10): wcf\system\request\RequestHandler->handle(…)
  • Gleiches Problem bei unserem Forum.


    Gibt es da eine Lösung? Die User bombardieren die Admins mit Fragen, wann das wieder gefixt wird :|

  • Alexander Ebert hat mir geschrieben in einem Supportfall, das ein Update für Dienstag oder Mittwoch (heute) geplant ist.


    holic mir geht es ähnlich, bei uns gibt es massive Störungen wegen dieses fehlerhaften Updates.

  • Ich habe mir das Problem nicht näher angesehen oder es getestet, aber es wäre einen Versuch wert folgenden Commit temporär rückgängig zu machen, sofern die Nebeneffekte vertretbar sind:

    Fix `{foreach}` loops when the to-be-iterated value is empty · WoltLab/WCF@c95e8ca
    The restoring of the `item` value failed, because the necessary data in `foreachVars` was only being filled when the `foreach()` loop was actually entered.…
    github.com

  • Wenn der Fix heute sowieso kommt, kann ich gerne noch warten..

    Damit ist nicht zu rechnen: https://github.com/WoltLab/WCF/commits/5.3

    Zumindest öffentlich ist bisher noch kein Fix dafür verfügbar.


    das dort oben ist nicht der richtige Commit.

    Das ist der einzige Commit seit 5.3.12, der direkt in Relation zur Stelle des Fehlers steht. Auch, wenn ich vermute, dass da irgendein Feld dazwischen grätscht, ist es vielleicht eine temporäre Möglichkeit, bis ihr das behoben habt. Eventuell kann VieCode später evaluieren, ob das den oben stehenden Bug für's erste umgeht*.

    Du kannst natürlich auch gerne sagen, welcher Commit der Richtige wäre oder wie der Fix schlussendlich aussehen wird. ;)


    * ich spreche explizit von umgehen, nicht von "beheben".

    • Official Post

    Das ist der einzige Commit seit 5.3.12, der direkt in Relation zur Stelle des Fehlers steht.

    Das Problem ist komplexer als das. Es gibt zwei verschiedene Bugs, der eine existiert sogar bereits seit WCF 1.x. Durch die Korrektur des ersten Bugs wurde der 2. Bug überhaupt erst sichtbar. Den Fix für den ersten Bug rückgängig zu machen umgeht zwar das Problem vom zweiten Bug, aber dann hat man den ersten Bug wieder in der Backe. Beides betrifft direkt den Form-Builder, man hat also die Wahl zwischen Pest und Cholera.


    Die Lösung ist also den 2. Bug ebenfalls zu korrigieren, denn dieser ist das eigentliche Problem, was der Behebung entgegen steht. Aber gerade hier sieht man, dass selbst erfahrene Entwickler auf Basis der reinen Commits nicht immer einwandfrei sagen können, wie diese im Zusammenhang stehen. Genau deshalb geben wir nur selten vorab Informationen zu einer manuellen Korrektur heraus, eben weil es nicht immer trivial ist.

  • :D

    Wer rechnet denn mit sowas? :P

    GitHub Actions scheißt ordentlich rein. ^^


    Den Fix für den ersten Bug rückgängig zu machen umgeht zwar das Problem vom zweiten Bug, aber dann hat man den ersten Bug wieder in der Backe. Beides betrifft direkt den Form-Builder, man hat also die Wahl zwischen Pest und Cholera.

    Das ist logisch; es ist leider eine sehr zentrale Stelle. Deswegen hätte man abwägen müssen:

    sofern die Nebeneffekte vertretbar sind


    Aber gerade hier sieht man, dass selbst erfahrene Entwickler auf Basis der reinen Commits nicht immer einwandfrei sagen können, wie diese im Zusammenhang stehen.

    Ja, der Punkt ist definitiv unlustig; ich hatte wie oben gesagt die Anfangs-Vermutung, dass da irgendein Feld rein schießt, ab da war es mir dann zu viel Brainfuck zwischen PHP und Smarty hin und her zu springen. ^^