Assertion failure with ext/date DateInterval property hash construction
Ouverte
Personne n'a encore pris cette issue.
Bug
Extension: date
Status: Verified
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?
for ($i = 0; $i <= 2; $j++) {
$a[] = $$x[ ! 0] = $obj = new DateInterval('P1W');
$a = false;
$aniay['abc'] = $obj->prop3 = $y = (array) $a[] =& $ $u;
$$x[$key]-= $aniay['abc'] = $a === $ao = new ArrayObject();
var_dump(json_decode(json_encode($a), '1000001'));
}
Resulted in this output:
php: /path/to/php-src/Zend/zend_hash.c:912: _zend_hash_str_add_or_update_i: Assertion `(zend_gc_refcount(&(ht)->gc) == 1) || ((ht)->u.flags & (1<<6))' failed.
Aborted
Commit:
035f95cf5e016236cca11bc293dc04d40b40e45c
Build configuration:
CC="clang" CXX="clang++" CFLAGS="-fsanitize=address -g -O0" CXXFLAGS="-fsanitize=address -g -O0" LDFLAGS="-fsanitize=address" ./buildconf --force && ./configure --enable-debug --enable-address-sanitizer --disable-shared --with-pic --enable-mbstring --with-zlib
PHP Version
PHP 8.6.0-dev (cli) (built: Nov 16 2025 19:51:33) (NTS DEBUG)
Copyright (c) The PHP Group
Zend Engine v4.6.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.6.0-dev, Copyright (c), by Zend Technologies
Operating System
Ubuntu 22.04
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Construisez PHP au commit 035f95cf5e016236cca11bc293dc04d40b40e45c avec la configuration fournie de debug et AddressSanitizer, puis exécutez le reproducer. Inspectez l’assertion à Zend/zend_hash.c:912 et le comportement de DateInterval dans ext/date ; le travail est terminé lorsque le reproducer n’abandonne plus et que l’échec bénéficie d’une couverture de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100