Page MenuHomePhabricator

Error: Class "MediaWiki\Extension\Math\WikiTexVC\pegCachedPosDetails" not found
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
  • service.version: 1.46.0-wmf.11
  • timestamp: 2026-01-21T02:18:59.623Z
  • labels.phpversion: 8.3.29
  • trace.id: cf91db4f-c35b-416e-83c7-946f8dcf3c09
  • Find trace.id in Logstash
labels.normalized_message
[{reqId}] {exception_url}   Error: Class "MediaWiki\Extension\Math\WikiTexVC\pegCachedPosDetails" not found
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.11/extensions/Math/src/WikiTexVC/Parser.php(411)
#0/srv/mediawiki/php-1.46.0-wmf.11/extensions/Math/src/WikiTexVC/TexVC.php(42)MediaWiki\Extension\Math\WikiTexVC\Parser->__construct()
#1/srv/mediawiki/php-1.46.0-wmf.11/extensions/Math/src/InputCheck/LocalChecker.php(112)MediaWiki\Extension\Math\WikiTexVC\TexVC->__construct()
#2/srv/mediawiki/php-1.46.0-wmf.11/includes/libs/ObjectCache/WANObjectCache.php(1831)MediaWiki\Extension\Math\InputCheck\LocalChecker->runCheck(array, int, array, float, array)
#3/srv/mediawiki/php-1.46.0-wmf.11/includes/libs/ObjectCache/WANObjectCache.php(2593)Wikimedia\ObjectCache\WANObjectCache->fetchOrRegenerate(string, int, array, array, array)
#4/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/MWCallableUpdate.php(52)Wikimedia\ObjectCache\WANObjectCache->Wikimedia\ObjectCache\{closure}(string)
#5/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdates.php(444)MediaWiki\Deferred\MWCallableUpdate->doUpdate()
#6/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdates.php(187)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\MWCallableUpdate)
#7/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdates.php(274)MediaWiki\Deferred\DeferredUpdates::run(MediaWiki\Deferred\MWCallableUpdate)
#8/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdatesScope.php(229)MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}(MediaWiki\Deferred\MWCallableUpdate, int)
#9/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdatesScope.php(158)MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(int, int, Closure)
#10/srv/mediawiki/php-1.46.0-wmf.11/includes/Deferred/DeferredUpdates.php(268)MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(int, Closure)
#11/srv/mediawiki/php-1.46.0-wmf.11/includes/MediaWikiEntryPoint.php(653)MediaWiki\Deferred\DeferredUpdates::doUpdates()
#12/srv/mediawiki/php-1.46.0-wmf.11/includes/MediaWikiEntryPoint.php(475)MediaWiki\MediaWikiEntryPoint->restInPeace()
#13/srv/mediawiki/php-1.46.0-wmf.11/includes/MediaWikiEntryPoint.php(433)MediaWiki\MediaWikiEntryPoint->doPostOutputShutdown()
#14/srv/mediawiki/php-1.46.0-wmf.11/includes/MediaWikiEntryPoint.php(190)MediaWiki\MediaWikiEntryPoint->postOutputShutdown()
#15/srv/mediawiki/php-1.46.0-wmf.11/rest.php(25)MediaWiki\MediaWikiEntryPoint->run()
#16/srv/mediawiki/w/rest.php(3)require(string)
#17{main}
Impact

Low; happens only with this specific URI

Notes

Details

MediaWiki Version
1.46.0-wmf.11
Request URL
https://fr.wikisource.org/w/rest.php/v1/revision/14728764/html

Event Timeline

Dynamically loaded classes and functions in ParserIntent looks... messy...

Dynamically loaded classes and functions in ParserIntent looks... messy...

It's generated and messy. However, I still don't understand how this can happen. I was assuming that

https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/Math/+blame/refs/heads/wmf/1.46.0-wmf.11/src/WikiTexVC/Parser.php#164

ensures that the class exists.

I suspect would be that it's not autoloaded, so when it's required, MW (et al) doesn't know where to find it (due to AutoloadNamespaces).

However, by the time later execution of that file exists, it should have been loaded in...

Maybe it would be less confusing to use different namespaces for parser and parserIntent.
I would also like to see a feature that the phpeggy js library generates the classes as separate files.
However, for me all this seem nice to have and does not really explain to me how one can reproducible find a code path that generates that error.