Memory leak in sqlite3.Connection.load_extension()
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Public issue regarding the issue found by @sushi-gif. Here is a summary of the discussion:
The function sqlite3.Connection.load_extension() has a minor memory leak that occurs when SQLite throws an error while loading an extension (sqlite3_load_extension). According to SQLite specifications, the buffer of the error message must be freed manually after use. The attached PR fixes the issue.
Reproduction code:
import sqlite3
cx = sqlite3.connect(":memory:")
cx.enable_load_extension(True)
for _ in range(1000000):
try:
cx.load_extension("does_not_exist")
except sqlite3.Error:
pass
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
- gh-154110
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne bei der Implementierung von sqlite3.Connection.load_extension() und folge ihrem Aufruf von sqlite3_load_extension. Verwende die bereitgestellte Reproduktion mit wiederholten fehlgeschlagenen Ladevorgängen, um den Fehlerpfad zu untersuchen, und verifiziere, dass das gemeldete Speicherleck behoben ist, ohne das erfolgreiche Laden von Erweiterungen zu verändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python, sqlite
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100