ID:               26949
 User updated by:  alucard at vitriolic dot org
 Reported By:      alucard at vitriolic dot org
-Status:           Feedback
+Status:           Open
 Bug Type:         Math related
 Operating System: Solaris 9
 PHP Version:      4CVS-2004-01-18
 New Comment:

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


Previous Comments:
------------------------------------------------------------------------

[2004-01-18 09:36:42] [EMAIL PROTECTED]

Also, what does this output (in zts and in non-zts mode):

# sapi/cli/php 'echo getrandmax();'




------------------------------------------------------------------------

[2004-01-18 09:35:02] [EMAIL PROTECTED]

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] [EMAIL PROTECTED]

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



------------------------------------------------------------------------

[2004-01-17 17:34:41] alucard at vitriolic dot org

Description:
------------
Bug #24909 is still an issue with latest build and Solaris 9.

When rand() is called with no arguments, it operates as expected.  When
rand(min,max) is called, it always returns value 'min'.

This problem only occurs when ZTS is enabled.  When it's not, both
calls to rand() work as expected, though the value ranges are
completely different.

To demonstrate:

# uname -a
SunOS XXXXXX 5.9 Generic_112233-08 sun4u sparc SUNW,Ultra-Enterprise

# rm config.cache
# ./configure --disable-all --disable-cgi --enable-experimental-zts
# make clean && make
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
28909
0
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
21885
0

# rm config.cache
# ./configure --disable-all --disable-cgi
# make clean && make
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
1116498057
87
# sapi/cli/php -r 'echo rand(),"\n"; echo rand(0,100),"\n";'
102735333
95

Note that with zts enabled, the rand() values are much smaller, and
rand(min,max) always returns min.  Without it, rand values are much
larger, and rand(min,max) operates as expected.





------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=26949&edit=1

Reply via email to