[jit] doctrine migrations behave weird and result in random errors and hanging processes
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The following code: https://github.com/verfriemelt-dot-org/doctrine-migrations-repro
Resulted in this output:
$ php -d opcache.jit=on bin/console doc:mi:mi -vv --no-interaction
[notice] Migrating up to DoctrineMigrations\Version_1000
[info] ++ migrating DoctrineMigrations\Version_0001
[debug] CREATE TABLE tab_0001 ()
[info] Migration DoctrineMigrations\Version_0001 migrated (took 22.3ms, used 10M memory)
[info] ++ migrating DoctrineMigrations\Version_0002
***hangs at 100% cpu***
or fails with strange errors instead. disabling jit does solve the issue. check out the reproducer, which results in the hanging process, on a private project it fails with
In TableDoesNotExist.php line 16:
[Doctrine\DBAL\Schema\Exception\TableDoesNotExist]
There is no table with name "customer_anonymisation_request" in the schema.
Exception trace:
at ./core/vendor/doctrine/dbal/src/Schema/Exception/TableDoesNotExist.php:16
Doctrine\DBAL\Schema\Exception\TableDoesNotExist::new() at ./core/vendor/doctrine/dbal/src/Schema/Schema.php:226
Doctrine\DBAL\Schema\Schema->getTable() at ./core/vendor/doctrine/dbal/src/Schema/Comparator.php:64
Doctrine\DBAL\Schema\Comparator->compareSchemas() at ./core/vendor/doctrine/migrations/src/Provider/DBALSchemaDiffProvider.php:53
Doctrine\Migrations\Provider\DBALSchemaDiffProvider->getSqlDiffToMigrate() at ./core/vendor/doctrine/migrations/src/Provider/LazySchemaDiffProvider.php:90
Doctrine\Migrations\Provider\LazySchemaDiffProvider->getSqlDiffToMigrate() at ./core/vendor/doctrine/migrations/src/Version/DbalExecutor.php:144
Doctrine\Migrations\Version\DbalExecutor->executeMigration() at ./core/vendor/doctrine/migrations/src/Version/DbalExecutor.php:72
Doctrine\Migrations\Version\DbalExecutor->execute() at ./core/vendor/doctrine/migrations/src/DbalMigrator.php:87
Doctrine\Migrations\DbalMigrator->executePlan() at ./core/vendor/doctrine/migrations/src/DbalMigrator.php:54
Doctrine\Migrations\DbalMigrator->executeMigrations() at ./core/vendor/doctrine/migrations/src/DbalMigrator.php:134
Doctrine\Migrations\DbalMigrator->migrate() at ./core/vendor/doctrine/migrations/src/Tools/Console/Command/MigrateCommand.php:225
Doctrine\Migrations\Tools\Console\Command\MigrateCommand->execute() at ./core/vendor/symfony/console/Command/Command.php:291
Symfony\Component\Console\Command\Command->run() at ./core/vendor/symfony/console/Application.php:1092
Symfony\Component\Console\Application->doRunCommand() at ./core/vendor/symfony/framework-bundle/Console/Application.php:123
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at ./core/vendor/symfony/console/Application.php:356
Symfony\Component\Console\Application->doRun() at ./core/vendor/symfony/framework-bundle/Console/Application.php:77
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at ./core/vendor/symfony/console/Application.php:195
Symfony\Component\Console\Application->run() at ./core/bin/console:100
which is completly unrelated to the migration, so i expect this to be a jit bug rather than a bug in doctrine 🤔
PHP Version
php -v
PHP 8.5.3 (cli) (built: Feb 13 2026 15:50:47) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.5.3, Copyright (c) Zend Technologies
with Xdebug v3.5.0, Copyright (c) 2002-2025, by Derick Rethans
with Zend OPcache v8.5.3, Copyright (c), by Zend Technologies
Operating System
debian sid
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem verknüpften doctrine-migrations-repro-Projekt und führe den bereitgestellten bin/console doc:mi:mi-Befehl mit PHP 8.5.3 und aktiviertem opcache.jit aus; vergleiche ihn anschließend mit deaktiviertem JIT. Verfolge den Fehler vom OPcache-JIT-Pfad durch die Einträge des Migrationsstapels und stelle eine reproduzierbare, JIT-spezifische Ursache für den Hänger oder den nicht zusammenhängenden Schemafehler fest.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- compilers, performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100