[New-bugs-announce] [issue45481] gc is disabled without explict calling gc.disable()

EricLin report at bugs.python.org
Fri Oct 15 03:31:36 EDT 2021


New submission from EricLin <linxiaojun1 at huawei.com>:

First, I would like to clarify that this is a Python 2.7.5 issue. I know python2 is no longer maintained, but I still wish to look for some help here.

We have observed a long running Python 2.7.5 process leaking memory. I tried to inject some code into the process using gdb, to see what's happening inside.
The gdb command looks like:
gdb -p $pid -batch -eval-command='call PyGILState_Ensure()' -eval-command='call PyRun_SimpleString("exec(open(\"/path/to/code\").read())")' -eval-command='call PyGILState_Release($1)'

I printed gc.get_objects() information into a file and took 2 snapshots, but failed to find obvious object size increase. But after calling gc.collect() in the injected code, a dramatic memory decrease is observed. So I tried to print the return value following:

gc.isenabled()
gc.get_count()
gc.get_threshold()

which gives me:

False
(56107, 0, 0)
(700, 10, 10)

This obviously shows that gc is disabled, but I'm sure non of our code does it explicitly. And the same code is running on hundreds of servers but only one has this problem.

Does anyone have any idea what might be the cause, or what to check to find the root cause?

----------
components: Library (Lib)
messages: 403980
nosy: linxiaojun
priority: normal
severity: normal
status: open
title: gc is disabled without explict calling gc.disable()
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45481>
_______________________________________


More information about the New-bugs-announce mailing list