[Ironpython-users] struct pack / unpack not thread safe?

John Dickinson jhcd.jhcd at gmail.com
Thu Sep 20 16:56:51 CEST 2012


Sorry, I've just found this:
http://ironpython.codeplex.com/workitem/30228so I see that it is a
bug.

On Thu, Sep 20, 2012 at 3:48 PM, John Dickinson <jhcd.jhcd at gmail.com> wrote:

> I have at least two threads that end up calling struct.pack and
> struct.unpack, and regularly get two exceptions: "SystemError: Object
> reference not set to an instance of an object." and "SystemError: The
> LinkedList node does not belong to current LinkedList.". The following code
> reproduces the problem:
>
> import threading
> import struct
> import time
> import traceback
> import sys
>
> class TestThread(threading.Thread):
>
>     def __init__(self):
>         super(TestThread, self).__init__()
>         self.setDaemon(True)
>
>     def run(self):
>         while True:
>             try:
>                 struct.unpack('!H', '\x4f\x00')
>                 struct.pack('H', 20224)
>                 time.sleep(0.005)
>             except Exception, e:
>                 print(str(e))
>                 traceback.print_exception(*sys.exc_info())
>
> if __name__ == '__main__':
>
>     thread_1 = TestThread()
>     thread_2 = TestThread()
>
>     thread_1.start()
>     thread_2.start()
>
>     while True:
>         print(".")
>         time.sleep(1)
>
> (adding more TestThreads makes the error occur more regularly). Running
> the same code in CPython (2.7) I get no errors (presumably because of the
> GIL). It seems that struct isn't thread safe - is this a bug? I'm running
> IronPython "2.7.3 (2.7.0.40) on .NET 4.0.30319.269 (32-bit)" on Windows 7.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20120920/3a0998fa/attachment.html>


More information about the Ironpython-users mailing list