Hello. I investigated ref leak report related to thread. Please run python regrtest.py -R :: test_leak.py (attached file) Sometimes ref leak is reported.
# I saw this as regression failure on python-checkins.
# total ref count 92578 -> 92669
_Condition 2 Thread 6 _Event 1 bool 10 instancemethod 1 code 2 dict 9 file 1 frame 3 function 2 int 1 list 2 builtin_function_or_method 5 NoneType 2 str 27 thread.lock 7 tuple 5 type 5
Probably this happens because threading.Thread is implemented as Python code, (expecially threading.Thread#join), the code of regrtest.py
if i >= nwarmup:
deltas.append(sys.gettotalrefcount() - rc - 2)
can run before thread really quits. (before Moudles/threadmodule.c t_bootstrap()'s
Py_DECREF(boot->func); Py_DECREF(boot->args); Py_XDECREF(boot->keyw);
runs)
So I experimentally inserted the code to wait for thread termination. (attached file experimental.patch) And I confirmed error was gone.
# Sorry for hackish patch which only runs on windows. It should run
# on other platforms if you replace Sleep() in Python/sysmodule.c
# sys_debug_ref_leak_leave() with appropriate function.
Sorry, mailer striped spaces... I'll try attaching files again.
On Mon, Jun 18, 2007, ocean wrote: >
Hello. I investigated ref leak report related to thread. Please run python regrtest.py -R :: test_leak.py (attached file) Sometimes ref leak is reported.
Please post a bug report to SF and report the bug number here. When you
Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/
"as long as we like the same operating system, things are cool." --piranha
Please post a bug report to SF and report the bug number here. When you
Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/
"as long as we like the same operating system, things are cool." --piranha
Thank you for pointing it out. Done. http://www.python.org/sf/1739118