Bug #76446 [Csd]: zend_variables.c:73: zend_string_destroy: Assertion `!(zval_gc_flags((str)->gc.
| From: | cmb@php.net | Date: | Wed, 13 Jun 2018 10:38:21 +0000 |
| Subject: | Bug #76446 [Csd]: zend_variables.c:73: zend_string_destroy: Assertion `!(zval_gc_flags((str)->gc. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-215677@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=76446&edit=1
ID: 76446
Updated by: cmb@php.net
Reported by: spam2 at rhsoft dot net
Summary: zend_variables.c:73: zend_string_destroy: Assertion
`!(zval_gc_flags((str)->gc.
Status: Closed
Type: Bug
Package: Reproducible crash
PHP Version: master-Git-2018-06-11 (Git)
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
> this one is indeed fixed now bu topcache obviously ha still
> terrible problems given that with opcache disabled the complete
> testsuite runs without any warning
Thanks for reporting! Since this is apparently another issue,
though, I've filed it as bug #76466.
Previous Comments:
------------------------------------------------------------------------
[2018-06-13 09:02:32] spam2 at rhsoft dot net
this one is indeed fixed now bu topcache obviously ha still terrible problems given that with
opcache disabled the complete testsuite runs without any warning
hell, how can that lead to Duplicate column name 'pal_field1'
/**
* Ziel-Tabelle neu anlegen
*
* @param bool $only_if_not_exists
* @param bool $tmp
* @return void
* @access private
*/
private function create_clear_table($only_if_not_exists=false, $tmp=false): void
{
/** Wenn angegeben abrechen falls Tabelle existiert */
if($only_if_not_exists)
{
if($this->cl_api->db->table_exists($this->get_table_name($tmp)))
{
return;
}
}
/** Datenfeld-Array generieren */
$field_array =
[
['name'=>'pal_id'],
['name'=>'pal_kat', 'type'=>'varchar',
'length'=>255, 'unsigned'=>1]
];
for($i=1; $i<=$this->maxfield; $i++)
{
if($i == 4 || $i == 6 || $i == 12 || $i == 13)
{
$type = 'text';
}
else
{
$type = 'varchar';
}
$field_array[] = ['name'=>"pal_field{$i}", 'type'=>$type,
'length'=>255, 'unsigned'=>1];
}
$field_array[] = ['name'=>'pal_checksum',
'type'=>'varchar', 'length'=>255, 'unsigned'=>1];
$field_array[] = ['name'=>'pal_timestamp',
'type'=>'int', 'length'=>10, 'unsigned'=>1];
/** Tabelle erzeugen und wenn bereits vorhanden im Vorfeld loeschen */
$this->cl_api->db->create_table
(
/**$name*/$this->get_table_name($tmp),
/**$field_array*/$field_array,
/**$key_array*/
[
'pal_key' => ['type'=>'key',
'fields'=>['pal_kat']],
'pal_fulltext' => ['type'=>'fulltext',
'fields'=>['pal_field2', 'pal_field3', 'pal_field4',
'pal_field5', 'pal_field6', 'pal_field12']],
'import_key' => ['type'=>'unique',
'fields'=>[$this->artikel_nr_field, 'pal_checksum']],
],
/**$drop_if_exists*/1
);
}
DATABASE-ERROR 1060: localhost/autotest.php - /cms/cms/modules/pal/api_pal.php line 567 (parent
call: /cms/cms/modules/pal/api_pal.php on line 645): create table
cl_autotest_pal_zsp_stock_tmp (pal_id mediumint(7) unsigned not null
auto_increment, pal_kat varchar(255) not null default '',
pal_field1 varchar(255) not null default '', pal_field1
varchar(255) not null default '', pal_field1 varchar(255) not null default
'', pal_field1 varchar(255) not null default '',
pal_field1 varchar(255) not null default '', pal_field1
varchar(255) not null default '', pal_field1 varchar(255) not null default
'', pal_field1 varchar(255) not null default '',
pal_field1 varchar(255) not null default '', pal_field1
varchar(255) not null default '', pal_field1 varchar(255) not null default
'', pal_field1 varchar(255) not null default '',
pal_field1 varchar(255) not null default '', pal_field1
varchar(255) not null default '', pal_field1 varchar(255) not null d!
efault '', pal_field1 varchar(255) not null default '',
pal_field1 varchar(255) not null default '', pal_field1
varchar(255) not null default '', pal_field1 varchar(255) not n - Duplicate
column name 'pal_field1' - 127.0.0.1
------------------------------------------------------------------------
[2018-06-13 07:17:13] laruence@php.net
Automatic comment on behalf of laruence@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=609385bbf8fc82f334778bdfef5e16b7a3bd72c6
Log: Fixed bug #76446 (zend_variables.c:73: zend_string_destroy: Assertion
`!(zval_gc_flags((str)->gc)).
------------------------------------------------------------------------
[2018-06-13 07:09:15] laruence@php.net
> However, in this case we are not able to prove that the ROPE_ADD will not generate an error
> (e.g. array to string conversion warning).
this is checked in may_throw , I think make ROPE_END having side-affect is a safe way for 7.3, we
could seek more aggressive way for 7.4
I am going to commit the fix, thanks
------------------------------------------------------------------------
[2018-06-12 22:27:42] cmb@php.net
> "just mark ROPE_END as having side-effects with a FIXME that
> this may be improved" don't help anybody [â¦]
Please try âdisable-ROPE_END-dce.patchâ.
------------------------------------------------------------------------
[2018-06-12 22:27:06] cmb@php.net
The following patch has been added/updated:
Patch Name: disable-ROPE_END-dce
Revision: 1528842426
URL: https://bugs.php.net/patch-display.php?bug=76446&patch=disable-ROPE_END-dce&revision=1528842426
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=76446
--
Edit this bug report at https://bugs.php.net/bug.php?id=76446&edit=1