Page MenuHomePhabricator

Quiz extension incompatibility with HHVM: RuntimeException: Requested template, Quiz, is not callable
Closed, DeclinedPublic

Description

My system:

  • HHVM 3.30.1
  • Mediawiki 1.29

Each time I try to display a quiz I get a web page with an error:

[ca6645d9027cc84cf7ada88c] /w/index.php?title=User:Kelson/test&action=submit RuntimeException from line 128 of /var/www/wikichem.org/w/includes/TemplateParser.php: Requested template, Quiz, is not callable

Backtrace:

#0 /var/www/wikichem.org/w/includes/TemplateParser.php(198): TemplateParser->getTemplate(string)
#1 /var/www/wikichem.org/w/extensions/Quiz/Quiz.class.php(194): TemplateParser->processTemplate(string, array)
#2 /var/www/wikichem.org/w/extensions/Quiz/Quiz.hooks.php(28): Quiz->parseQuiz(string)
#3 [internal function]: QuizHooks::renderQuiz(string, array, Parser, PPFrame_Hash)
#4 /var/www/wikichem.org/w/includes/parser/Parser.php(3882): call_user_func_array(string, array)
#5 /var/www/wikichem.org/w/includes/parser/Preprocessor_Hash.php(1113): Parser->extensionSubstitution(array, PPFrame_Hash)
#6 /var/www/wikichem.org/w/includes/parser/Parser.php(2942): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#7 /var/www/wikichem.org/w/includes/parser/Parser.php(1297): Parser->replaceVariables(string)
#8 /var/www/wikichem.org/w/includes/parser/Parser.php(451): Parser->internalParse(string)
#9 /var/www/wikichem.org/w/includes/content/WikitextContent.php(330): Parser->parse(string, Title, ParserOptions, boolean, boolean, NULL)
#10 /var/www/wikichem.org/w/includes/content/AbstractContent.php(497): WikitextContent->fillParserOutput(Title, NULL, ParserOptions, boolean, ParserOutput)
#11 /var/www/wikichem.org/w/includes/EditPage.php(3945): AbstractContent->getParserOutput(Title, NULL, ParserOptions)
#12 /var/www/wikichem.org/w/includes/EditPage.php(3873): EditPage->doPreviewParse(WikitextContent)
#13 /var/www/wikichem.org/w/includes/EditPage.php(2611): EditPage->getPreviewText()
#14 /var/www/wikichem.org/w/includes/EditPage.php(659): EditPage->showEditForm()
#15 /var/www/wikichem.org/w/includes/actions/EditAction.php(59): EditPage->edit()
#16 /var/www/wikichem.org/w/includes/actions/SubmitAction.php(38): EditAction->show()
#17 /var/www/wikichem.org/w/includes/MediaWiki.php(499): SubmitAction->show()
#18 /var/www/wikichem.org/w/includes/MediaWiki.php(293): MediaWiki->performAction(Article, Title)
#19 /var/www/wikichem.org/w/includes/MediaWiki.php(862): MediaWiki->performRequest()
#20 /var/www/wikichem.org/w/includes/MediaWiki.php(523): MediaWiki->main()
#21 /var/www/wikichem.org/w/index.php(43): MediaWiki->run()
#22 {main}

Source code of the page is:

<quiz>
{ L'en-tête présente dans la plupart des cas des champs permettant de régler les points qui vous seront attribués à la correction, par question. Le créateur du quiz peut avoir réglé des valeurs par défaut et vous laisser les modifier. Certaines des questions peuvent être coefficientées mais vous pouvez décider d'ignorer ces coefficients. 

Il existe différents types de questions :
* Certaines questions vous proposent des choix multiples ('''{{Abréviation|Q.C.M.|Question à choix multiple}}''')
* Certaines questions vous proposent de choisir une proposition parmi plusieurs ('''QCU''')
* Certaines questions rassemblent plusieurs {{Abréviation|Q.C.M.|Question à choix multiple}} ou QCU correspondant au même énoncé 
* Certaines questions vous proposent de répondre en remplissant librement un '''champ textuel''', parfois sous forme de texte à trous. La réponse demandée peut être un mot ou un chiffre, il peut y avoir plusieurs possibilités et même une marge de tolérance. }

{ '''Exemple de {{Abréviation|Q.C.M.|Question à choix multiple}}''' : Parmi les couleurs suivantes, quelles sont celles qui sont dites ''primaires'' ?
|| '''Exemple d'informations complémentaires à l'intérieur de l'intitulé de la question''' : Les [[w:Couleur primaire|couleurs primaires]] sont le cyan, le magenta et le jaune.}
+ cyan
- blanc
|| '''Exemple d'informations complémentaires à l'intérieur de l’objet de la question''' : En [[w:Synthèse soustractive]], le blanc correspond à une absence de couleurs.
+ jaune

{ '''Exemple de plusieurs QCU rassemblés dans une question''' : À quelle température ces différents éléments passent-ils de l'état solide à l'état liquide ?
|| Voir l’article consacré à la [[w:Fusion]] sur wikipedia.
| type="()" }
| 39&nbsp;°C | 0° | 1535&nbsp;°C
+-- pour la fusion du '''mercure'''.
-+- pour la fusion de l''''eau'''.
--+ pour la fusion du '''fer'''.

{ '''Exemple de texte à trous''' : Complétez ces phrases avec des nombres écrits en chiffres ou en lettres
| type="{}" }
1 : { un (i) _10 }
{ 12 _3 } : douze
103 : { cent trois (i) _10 }
</quiz>

In the hhvm/error.log, I see:

\nFatal error: An expression is expected here. in /var/www/wikichem.org/w/includes/TemplateParser.php(126)(da1efd9918434ee54f1ffabcb28501e9) : eval()'d code on line 39

Event Timeline

Here a better example:

<quiz>
{ test }
</quiz>

FWIW, HHVM support is kinda deprecated, and will be removed (or not guaranteed to work; even more so on newer HHVM where they started diverging away from Zend) from MW in the near future when WMF remove support

Does it work fine on PHP 7.0+ or older HHVM?

Also, MW 1.29 isn't supported either... So see if it's still broken on 1.30 or 1.31?

Reedy changed the task status from Open to Stalled.Dec 27 2018, 5:36 PM
Aklapper renamed this task from Quiz extension imcompatibility with HHVM to Quiz extension incompatibility with HHVM: RuntimeException: Requested template, Quiz, is not callable.Dec 27 2018, 10:14 PM

@Reedy Thank you for your quick feedback. I was not aware that Mediawiki HHVM support will be deprecated. As a consequence, I have replaced HHVM with php-fpm and the problem disappeared.

@Reedy Thank you for your quick feedback. I was not aware that Mediawiki HHVM support will be deprecated. As a consequence, I have replaced HHVM with php-fpm and the problem disappeared.

See https://www.mediawiki.org/wiki/HHVM and as such T176209: Future of HHVM, PHP7, and what it means for the MediaWiki software? and T192166: Drop HHVM support from MediaWiki

Also do take note you're running an unsupported version of MW currently :)

Change 486393 had a related patch set uploaded (by Daimona Eaytoy; owner: Daimona Eaytoy):
[mediawiki/extensions/AbuseFilter@master] Fix shortcircuit for consecutive operations

https://gerrit.wikimedia.org/r/486393