From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22435 invoked by alias); 18 Oct 2011 14:33:24 -0000 Received: (qmail 22408 invoked by uid 22791); 18 Oct 2011 14:33:24 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_CP X-Spam-Check-By: sourceware.org Received: from localhost (HELO sourceware.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 18 Oct 2011 14:33:11 +0000 From: "dmalcolm at redhat dot com" To: gdb-prs@sourceware.org Subject: [Bug python/13316] New: (cpychecker) Suspected memory leak in gdb/python/py-param.c: compute_enum_values Date: Tue, 18 Oct 2011 14:33:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: python X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: dmalcolm at redhat dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gdb-prs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-prs-owner@sourceware.org X-SW-Source: 2011-q4/txt/msg00088.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=13316 Bug #: 13316 Summary: (cpychecker) Suspected memory leak in gdb/python/py-param.c: compute_enum_values Product: gdb Version: HEAD Status: NEW Severity: normal Priority: P2 Component: python AssignedTo: unassigned@sourceware.org ReportedBy: dmalcolm@redhat.com Classification: Unclassified Created attachment 6018 --> http://sourceware.org/bugzilla/attachment.cgi?id=6018 HTML report showing the execution paths that leak memory See the attached HTML report from gcc-python-plugin's cpychecker. It looks like a reference count on "*item" is leaked for each time through the loop in compute_enum_values(). Reading http://docs.python.org/c-api/sequence.html#PySequence_GetItem a successful call to PySequence_GetItem() is meant to give the caller ownership of a reference count on the returned PyObject* Double-checking with Python's Objects/abstract.c: PyObject * PySequence_GetItem(PyObject *s, Py_ssize_t i) { [... setup and error handling ...] return m->sq_item(s, i); } and looking at e.g. Objects/listobject.c: list_item (the sq_item callback for PyList_Type): it Py_INCREFs the returned item. Hence I believe that cpychecker is correctly reporting a memory leak here (for both the case of a successful execution of compute_enum_values(), and the failure path it shows). -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.