odd runtime error

David Brown dmlb2000 at gmail.com
Wed Dec 1 20:04:33 EST 2010


On Wed, Dec 1, 2010 at 4:59 PM, Chris Rebert <clp2 at rebertia.com> wrote:
> On Wed, Dec 1, 2010 at 4:49 PM, David Brown <dmlb2000 at gmail.com> wrote:
>> So I'm not subscribed to python-list but would like to get an answer
>> to my question. I've made a small test program that dumps a
>> RuntimeError and I'd like to know why.
>>
>> $ python test2.py
>> doing stuff
>> Traceback (most recent call last):
>>  File "test2.py", line 3, in <module>
>>    import test
>> RuntimeError: not holding the import lock
>> child 3693 exited with 256
>> $
>>
>> Here's the setup, there's two files test.py and test2.py
>>
>> $ cat test.py
>> #!/usr/bin/python
>>
>> import os, sys
>>
>> if os.fork() == 0:
>>        print "doing stuff"
>>        sys.exit()
>>
>> print "child %d exited with %d" % os.wait()
>
> It's *quite* strange for a module that's being imported to execute a
> fork() in its body; this is almost assuredly the cause of the
> RuntimeError. Why are you fork()ing in an importable module in the
> first place?

Well, to be specific the fork isn't the cause of the RuntimeError, the
sys.exit() causes the runtime error. I agree that forking in a module
is bad coding practice and I'm working with the developer to help him
understand why that's bad. If that makes sense. However, knowing why
sys.exit() is producing a RuntimeError on some versions of python and
not others also more interesting a question.

Thanks,
- David Brown

> Cheers,
> Chris
> --
> http://blog.rebertia.com
>



More information about the Python-list mailing list