php / php/php-src

[jit] doctrine migrations behave weird and result in random errors and hanging processes

Offen
#21,240 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Category: JIT Status: Needs Triage
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.