ID: 43487
Comment by: oeriksson at mandriva dot com
Reported By: jm at wo dot cz
Status: Open
Bug Type: Strings related
Operating System: Linux
PHP Version: 5.2.5
New Comment:
Update; taken from our bugzilla:
"as peroyvind found, the miscompilation is inside Zend/zend_strtod.c,
and -no-ftree-vrp workaround the bug."
Previous Comments:
------------------------------------------------------------------------
[2008-01-30 19:41:18] oeriksson at mandriva dot com
I think I found the problem. On Mandriva Linux Cooker we are using:
gcc (GCC) 4.2.2 20071128 (prerelease) (4.2.2-2mdv2008.1)
glibc-2.7-1mdv2008.1
If I change the optimization from -O2 to -O0 (-O+zero) the bug goes
away on x86_32.
------------------------------------------------------------------------
[2008-01-28 21:30:37] jm at wo dot cz
The CVS snapshot makes no difference, still getting the same
incorrect strings.
[jm@st5mag ~]$ php -n -r '$f=array(1E-4, 1E-5, 1E-6, 1E-7, 1E-8);
foreach ($f as $fval) echo $fval, "\n";'
0.0001
1.0E-5
:.0E-7
:.0E-8
1.0E-8
[jm@st5mag ~]$ php -v
PHP 5.2.6-dev (cli) (built: Jan 28 2008 16:13:46)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
Previous poster suggested a CPU-related issue. I have encountered
this issue on the following CPUs:
vendor_id : AuthenticAMD
cpu family : 15
model : 5
model name : AMD Opteron(tm) Processor 248
stepping : 8
cpu MHz : 2205.074
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.80GHz
stepping : 6
cpu MHz : 1800.000
vendor_id : AuthenticAMD
cpu family : 15
model : 37
model name : AMD Opteron(tm) Processor 252
stepping : 1
cpu MHz : 2606.078
------------------------------------------------------------------------
[2008-01-28 07:59:48] oeriksson at mandriva dot com
I get the same problem, but it seems related to what CPU is used.
http://qa.mandriva.com/show_bug.cgi?id=37171
$ uname -a
Linux foo.nux.se 2.6.24-server-0.rc8.2mdv #1 SMP Wed Jan 23 17:15:33
UTC 2008
i686 Intel(R) Pentium(R) 4 CPU 2.80GHz GNU/Linux
$ php -r "var_dump(11.1/111);"
float(0.0:)
$ uname -a
Linux oe.nux.tld 2.6.24-desktop-0.rc8.2mdv #1 SMP Wed Jan 23 18:12:45
CET 2008
x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ GNU/Linux
$ php -r "var_dump(11.1/111);"
float(0.1)
It works with 5.1.6 though.
------------------------------------------------------------------------
[2008-01-26 01:12:23] jani@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows (zip):
http://snaps.php.net/win32/php5.2-win32-latest.zip
For Windows (installer):
http://snaps.php.net/win32/php5.2-win32-installer-latest.msi
------------------------------------------------------------------------
[2008-01-16 09:20:36] lmalgras at tennaxia dot com
I have the same problem with PHP 5.2.4 on Linux
Reproduce code:
---------------
php -n -r '$f=array(1E-4, 1E-5, 1E-6, 1E-7, 1E-8); foreach($f as $fval)
echo $fval, "\n";'
Expected result:
----------------
0.0001
1.0E-5
1.0E-6
1.0E-7
1.0E-8
Actual result:
--------------
0.0001
1.0E-5
:.0E-7
:.0E-8
1.0E-8
I have test this code on several configurations with the following
results :
PHP 5.2.0 (Linux) : Actual result
PHP 5.2.2 (Linux) : Actual result
PHP 5.2.3 (Windows): Actual result
------------------------------------------------------------------------
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
http://bugs.php.net/43487--
Edit this bug report at http://bugs.php.net/?id=43487&edit=1