|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-06-03 08:05 UTC] sniper@php.net
[2005-06-11 01:00 UTC] php-bugs at lists dot php dot net
[2007-01-23 01:29 UTC] terry dot s dot duncan at intel dot com
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 19:00:02 2025 UTC |
Description: ------------ On big-endian arm systems, php sometimes crashes (infinite loop) inside zend_strtod(). The problem seems to be the code at line 261 of zend_strtod.c, which apparently assumes that every arm system has little-endian integers: #if defined(IEEE_LITTLE_ENDIAN) + defined(VAX) + defined(__arm__) #define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \ ((unsigned short *)a)[0] = (unsigned short)c, a++) #else #define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \ ((unsigned short *)a)[1] = (unsigned short)c, a++) #endif Reproduce code: --------------- <?php echo "start"; if ("79e88e6db0c25ca1ee5e2aac35a24d6c" == "79e88e6db0c25ca1ee5e2aac35a24d6c") { echo "passed"; } echo "end"; ?> Expected result: ---------------- startend Actual result: -------------- (gdb) run Starting program: /share/hdd/data/home/jp30/t/php foo.php start [...minutes pass, then Ctrl-C is pressed...] Program received signal SIGINT, Interrupt. 0x00146528 in zend_strtod () (gdb) bt #0 0x00146528 in zend_strtod () Cannot access memory at address 0x4