Bug #76446 [Com]: zend_variables.c:73: zend_string_destroy: Assertion `!(zval_gc_flags((str)->gc.
| From: | spam2 at rhsoft dot net | Date: | Wed, 13 Jun 2018 09:02:36 +0000 |
| Subject: | Bug #76446 [Com]: 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-215675@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
Comment by: spam2 at rhsoft dot 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)
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
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
Previous Comments:
------------------------------------------------------------------------
[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
------------------------------------------------------------------------
[2018-06-12 21:47:39] spam2 at rhsoft dot net
whatever optimization it was - it's not worth the trouble - frankly half of my codebase
segfaults without the slightest chance to make any workarounds because it segfaults long before any
code is executed and so even trigger_error(__FILE__ . ' ' . __LINE__) spread around source
files don't help becaus eit never get executed
"just mark ROPE_END as having side-effects with a FIXME that this may be improved"
don't help anybody - i can't even build a binary because as long as the test-suite crashes
the rpmbuild is stopped for good reasons and all my gdb-stuff was with the intermediate binary after
the build crashed
------------------------------------------------------------------------
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