#26949 [Opn->Csd]: rand(min,max) always returns min when zts enabled
| From: | sniper@php.net | Date: | Mon, 19 Jan 2004 02:25:57 +0000 |
| Subject: | #26949 [Opn->Csd]: rand(min,max) always returns min when zts enabled | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-53549@lists.php.net to get a copy of this message | ||
ID: 26949
Updated by: sniper@php.net
Reported By: alucard at vitriolic dot org
-Status: Open
+Status: Closed
Bug Type: Math related
Operating System: Solaris 9
PHP Version: 4CVS-2004-01-18
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2004-01-18 16:16:54] alucard at vitriolic dot org
No worries, I don't mind helping you troubleshoot this one. Not many
folks run Solaris boxen as their home machines, can't imagine why...;)
Without ZTS:
# sapi/cli/php -r 'echo getrandmax(),"\n";'
2147483647
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
32
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
5
#
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
22
With ZTS:
# sapi/cli/php -r 'echo getrandmax(),"\n";'
2147483647
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
0
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
0
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
0
The value returned by getrandmax() is definitely not what's being used
by rand() with ZTS enabled. Calling rand() approx. 150 times and
sending the output to a file, the highest value I get is 32481. This
leads me to believe that despite what's being returned by getrandmax(),
it's using 32768 as its max in operation.
mt_rand() works as expected with ZTS enabled, both with and without
ranges specified:
# sapi/cli/php -r 'echo mt_rand(),"\n";'
1128343079
# sapi/cli/php -r 'echo mt_rand(),"\n";'
1820256748
# sapi/cli/php -r 'echo mt_rand(0,100),"\n";'
68
# sapi/cli/php -r 'echo mt_rand(0,100),"\n";'
83
# sapi/cli/php -r 'echo mt_rand(0,100),"\n";'
54
mt_getrandmax() returns the same result as getrandmax() (but, as shown
above, appears to actually use it).
# sapi/cli/php -r 'echo mt_getrandmax(),"\n";'
2147483647
------------------------------------------------------------------------
[2004-01-18 09:36:42] sniper@php.net
Also, what does this output (in zts and in non-zts mode):
# sapi/cli/php 'echo getrandmax();'
------------------------------------------------------------------------
[2004-01-18 09:35:02] sniper@php.net
Try adding 'srand();' call there:
# sapi/cli/php -r 'srand(); echo rand(0,100),"\n";'
Does this work better?
(Note: I can not reproduce this within Linux)
------------------------------------------------------------------------
[2004-01-18 02:04:50] alucard at vitriolic dot org
Same results:
# rm config.cache
config.cache: No such file or directory
# ./configure --disable-all --disable-cgi --enable-experimental-zts
# make clean && make
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
29622
0
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
6807
0
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
2050
0
# sapi/cli/php -v
PHP 4.3.5RC2-dev (cli) (built: Jan 18 2004 00:52:22)
Without zts enabled, the results are:
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
2121634529
48
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
1303411959
20
------------------------------------------------------------------------
[2004-01-17 20:20:48] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
------------------------------------------------------------------------
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/26949
--
Edit this bug report at http://bugs.php.net/?id=26949&edit=1