This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: sqlite3 memory leaks in cursor.execute
Type: resource usage Stage:
Components: Extension Modules Versions: Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: alibotean, ghaering, ned.deily, vstinner
Priority: normal Keywords:

Created on 2014-08-25 16:26 by alibotean, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
leaking.py alibotean, 2014-08-25 16:26 SQLITE3 module memory leakage example
leaking_tracemalloc.py vstinner, 2014-08-25 16:53
Messages (5)
msg225878 - (view) Author: A. Libotean (alibotean) Date: 2014-08-25 16:26
There are significant memory leaks when multiple insert statements are executed with distinct values.

sqlite3 version is 2.6.0

The attached file contains two variants:

* one which uses string interpolation to build the query: this generates severe leakeage
* the other one is using parametrized queries and the leakeage is not as bad

I'm assuming that somehow the query string reference is not freed properly.
msg225879 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2014-08-25 16:53
leaking_tracemalloc.py: leaking.py adapted for tracemalloc.

Output:

[ Top 3 lines ]
leaking_tracemalloc.py:24: size=46.0 KiB (+46.0 KiB), count=476 (+476), average=99 B
leaking_tracemalloc.py:17: size=847 B (+847 B), count=6 (+6), average=141 B
/home/haypo/prog/python/default/Lib/_weakrefset.py:37: size=368 B (+368 B), count=2 (+2), average=184 B

I'm not sure that it's a leak because it doesn't depend on the number of queries nor the number of run of the test. It's maybe an internal sqlite cache.
msg225909 - (view) Author: A. Libotean (alibotean) Date: 2014-08-26 06:46
> I'm not sure that it's a leak because it doesn't depend on the number of queries nor the number of run of the test. It's maybe an internal sqlite cache.

You're right, the "leak" does not increase past ~300 queries executed.
msg225930 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-08-26 21:09
Can we close this issue then?
msg225964 - (view) Author: A. Libotean (alibotean) Date: 2014-08-27 10:41
> Can we close this issue then?

Yes, please. Sorry for the false alarm.
History
Date User Action Args
2022-04-11 14:58:07adminsetgithub: 66468
2014-08-27 11:03:21vstinnersetstatus: open -> closed
resolution: not a bug
2014-08-27 10:41:12aliboteansetmessages: + msg225964
2014-08-26 21:09:51ned.deilysetnosy: + ned.deily
messages: + msg225930
2014-08-26 06:46:44aliboteansetmessages: + msg225909
2014-08-25 16:53:19vstinnersetfiles: + leaking_tracemalloc.py

messages: + msg225879
2014-08-25 16:36:45vstinnersetnosy: + vstinner
2014-08-25 16:26:49aliboteancreate