The problem is best described using example code (also see http://trac.saddi.com/flup/ticket/12#comment:3): * file foo.py: see attachment * file bar.py: import foo Running foo.py directly produces the expected result (html output from cgitb), running bar.py outputs nothing as it seems to hang internally (only the thread which should print the html). Moving all non-import into a function in foo.py and calling that function after the import in bar.py leads to the expected result, so it seems to be related to code which is executed while still in import and while using threads. I don't think it is serious problem as it's only triggered in that unusual case. I'm running python-2.4.4 on Gentoo Linux. Linux tux 2.6.20-gentoo #2 PREEMPT Mon Feb 5 19:20:30 CET 2007 i686 AMD Athlon(tm) XP 2600+ AuthenticAMD GNU/Linux
The freeze is occurring from cgitb importing from within the html function. That is hitting the import lock that is being held in bar. Moving the imports out of the functions to the top of the module should fix this.
So this issue -- as seems to happen to me at PyCon -- was deeper than I thought. cgitb was importing in functions so that was fixed (r70956 for 2.x, r70957 for 3.x). But I also found out that _warnings.c was also importing (r70965 for 2.x, r70966 for 3.x). But the example still locks up thanks to re doing imports. Basically, don't launch threads during an import, but I have done all that is reasonable to rectify the situation.
History
Date
User
Action
Args
2022-04-11 14:56:22
admin
set
github: 44599
2009-04-01 18:20:20
brett.cannon
set
status: open -> closedresolution: wont fixmessages: +