[IronPython] Problem with random module in IPY 1.1.1

Ronnie Maor ronnie.maor at gmail.com
Tue Oct 14 01:37:50 CEST 2008


I was using David Beazley's reference and saw a comment that says it isn't
thread safe, but I must admit that my repro doesn't work for CPython.

anyway, opened codeplex item:
http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=18926

On Tue, Oct 14, 2008 at 1:12 AM, Curt Hagenlocher <curt at hagenlocher.org>wrote:

> The underlying problem in the Python code is likely to be because of the
> behavior of the "random" function in the C library.  And for us, this is
> actually a problem in the BCL.  Someone just posted the exact same behavior
> to an internal mailing list, but from a C# program.  They wrote: "I just
> encountered this behavior of Random.Next(): if I create one Random object
> and call Next() from one thread (doesn't need to be the main thread),
> everything works fine. However, if I create one Random object and call
> Next() on it from two or more threads, after a while it will start to return
> 0 all the time, and its internal SeedArray becomes all 0."
>
> The Python library contains a comment which reads "The random() method is
> implemented in C, executes in a single Python step, and is, therefore,
> threadsafe" so arguably, this is a bug in the _random module of IronPython.
>  Please report it to CodePlex.
>
> On Mon, Oct 13, 2008 at 1:57 PM, Ronnie Maor <ronnie.maor at gmail.com>wrote:
>
>> problem was caused by calling random from several threads without locking.
>> it reproduces more easily in IPy than in CPython because of the GIL, but
>> it's documented as not thread safe for CPython too.
>>
>> On Sun, Oct 12, 2008 at 11:27 AM, Asaf Kleinbort <asaf at itstructures.com>wrote:
>>
>>>  Hi,
>>>
>>> We have encountered two strange errors in the 'random' module:
>>>
>>> 1.       At some point the random method 'getrandbits(63)' started (and
>>> kept) returning 0 – until we restarted the application.
>>>
>>> 2.       The random method 'shuffle' when applied on a list kept
>>> returning the same ordered list. Again – restarting the application solved
>>> the problem
>>>
>>> An interesting remark is that issue #1 happened to us today in two
>>> different applications, around the same time.
>>>
>>> Any ideas?
>>>
>>> Thanks,
>>>
>>> Asaf
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20081014/64471216/attachment.html>


More information about the Ironpython-users mailing list