Edit report at http://bugs.php.net/bug.php?id=53632&edit=1
ID: 53632
Updated by: rasmus@php.net
Reported by: exploringbinary at gmail dot com
Summary: PHP hangs on numeric value 2.2250738585072011e-308
Status: Assigned
Type: Bug
Package: Math related
PHP Version: 5.3.4
Assigned To: dmitry
Block user comment: N
Private report: N
New Comment:
Guys, we already know the problem. We are hitting an annoying x87 FPU
design
flaw. You can read all about it here if you are interested:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323
And there is a good paper on it here:
http://hal.archives-ouvertes.fr/docs/00/28/14/29/PDF/floating-point-article.pdf
We don't need any more compile reports. If you are on an architecture
that uses
the x87 FPU and you haven't forced SSE or float-store then you will see
this
problem.
Previous Comments:
------------------------------------------------------------------------
[2011-01-04 19:11:29] hieu dot ld at vnnb dot net
Re: last comment, I believe "-mfpmath=sse" did the trick. apologies for
cluttering the bug report.
------------------------------------------------------------------------
[2011-01-04 19:06:34] hieu dot ld at vnnb dot net
Does not reproduce on php 5.3.4 (with gentoo patches, compiled -O2).
driana@undine ~/h $ cat numericval.php
<?php $d = 2.2250738585072011e-308; echo $d + 0; echo "\n"; ?>
driana@undine ~/h $ php numericval.php
2.2250738585072E-308
driana@undine ~/h $ php -v
PHP 5.3.4-pl0-gentoo (cli) (built: Dec 24 2010 14:24:29)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
driana@undine ~/h $ uname -a
Linux undine 2.6.28-hardened-r9-hrd-undine #1 SMP Thu Nov 12 02:29:42
CET 2009 i686 Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz GenuineIntel
GNU/Linux
Configure Command => './configure' '--prefix=/usr'
'--build=i686-pc-linux-gnu' '--host=i686-pc-linux-gnu'
'--mandir=/usr/share/man' '--infodir=/usr/share/info'
'--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib'
'--prefix=/usr/lib/php5.3' '--mandir=/usr/lib/php5.3/man'
'--infodir=/usr/lib/php5.3/info' '--libdir=/usr/lib/php5.3/lib'
'--with-libdir=lib' '--without-pear' '--enable-maintainer-zts'
'--disable-bcmath' '--with-bz2' '--disable-calendar'
'--with-curl'
'--without-curlwrappers' '--without-enchant' '--enable-exif'
'--enable-ftp' '--with-gettext' '--without-gmp'
'--disable-intl'
'--without-kerberos' '--enable-mbstring' '--with-mcrypt'
'--without-mssql' '--with-onig=/usr' '--with-openssl'
'--with-openssl-dir=/usr' '--enable-pcntl' '--with-pgsql'
'--without-pspell' '--without-recode' '--disable-shmop'
'--without-snmp'
'--disable-soap' '--disable-sockets' '--without-sybase-ct'
'--disable-sysvmsg' '--disable-sysvsem' '--disable-sysvshm'
'--with-tidy' '--disable-wddx' '--with-xmlrpc'
'--without-xsl'
'--enable-zip' '--with-zlib' '--disable-debug'
'--enable-dba'
'--without-cdb' '--without-db4' '--disable-flatfile'
'--with-gdbm'
'--disable-inifile' '--without-qdbm' '--with-freetype-dir=/usr'
'--with-t1lib=/usr' '--enable-gd-jis-conv' '--with-jpeg-dir=/usr'
'--with-png-dir=/usr' '--without-xpm-dir' '--with-gd'
'--with-imap'
'--with-imap-ssl' '--without-interbase' '--with-mysql=/usr'
'--with-mysql-sock=/var/run/mysqld/mysqld.sock'
'--with-mysqli=/usr/bin/mysql_config' '--without-oci8'
'--without-pdo-dblib' '--with-pdo-mysql=/usr' '--with-pdo-pgsql'
'--with-pdo-sqlite=/usr' '--without-pdo-odbc' '--with-readline'
'--without-libedit' '--without-mm' '--with-sqlite=/usr'
'--enable-sqlite-utf8' '--with-pic' '--with-pcre-regex=/usr'
'--with-pcre-dir=/usr' '--with-config-file-path=/etc/php/cli-php5.3'
'--with-config-file-scan-dir=/etc/php/cli-php5.3/ext-active'
'--enable-cli' '--disable-cgi' '--disable-fpm'
'--disable-embed'
'--without-apxs2'
CFLAGS="-march=core2 -mfpmath=sse -O2 -pipe -fforce-addr
-fomit-frame-pointer"
------------------------------------------------------------------------
[2011-01-04 18:36:42] chris dot tandiono at gmail dot com
[christandiono@hang1 ~]$ uname -a
FreeBSD hang1 8.0-RELEASE-p3 FreeBSD 8.0-RELEASE-p3 #0: Wed May 26
05:45:12 UTC
2010 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
i386
[christandiono@hang1 ~]$ php -v
PHP 5.3.4 with Suhosin-Patch (cli) (built: Dec 20 2010 18:00:57)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[chris@hang2 ~]$ uname -a
Linux hang2 2.6.36-ARCH #1 SMP PREEMPT Wed Nov 24 06:44:11 UTC 2010 i686
Intel(R) Core(TM) Duo CPU T2400 @ 1.83GHz GenuineIntel GNU/Linux
[chris@hang2 ~]$ php -v
PHP 5.3.4 with Suhosin-Patch (cli) (built: Dec 16 2010 21:19:01)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[chris@nohang ~]$ uname -a
Darwin nohang 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov 5 23:20:39
PDT 2010;
root:xnu-1504.9.17~1/RELEASE_I386 i386 i386
[chris@nohang ~]$ php -v
PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Hangs on FreeBSD and Linux, not on Mac OS X. It might be worth noting
that the
last two machines have the same CPU (the Linux and Mac OS X machines).
------------------------------------------------------------------------
[2011-01-04 17:55:00] hion2000 at yahoo dot ca
Same happens on my Ubuntu box as well.
$ php -v
PHP 5.3.3-1ubuntu9.1 with Suhosin-Patch (cli) (built: Oct 15 2010
14:17:04)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
$ uname -a
Linux Server2 2.6.35-23-generic-pae #41-Ubuntu SMP Wed Nov 24 10:35:46
UTC 2010
i686 GNU/Linux
------------------------------------------------------------------------
[2011-01-04 17:41:03] rasmus@php.net
This is an interesting bug. How about we just mark these as volatile
doubles in
that part of the code to make sure they don't end up in registers. My
guess is
that it would fix it. Need to track down a 32-bit machine to test this
though.
------------------------------------------------------------------------
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/bug.php?id=53632--
Edit this bug report at http://bugs.php.net/bug.php?id=53632&edit=1