This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 0/4] Disallow the return of borrowed references
- From: Tom Tromey <tom at tromey dot com>
- To: gdb-patches at sourceware dot org
- Date: Wed, 12 Sep 2018 23:30:03 -0600
- Subject: [PATCH 0/4] Disallow the return of borrowed references
While working on a different Python patch, I misread
pspace_to_pspace_object and thought it was not handling reference
counts properly.
It is -- but I found it difficult to reason about because it returns a
borrowed reference, but uses gdbpy_ref as well.
This series changes gdb so that none of the Python functions will
return a borrowed reference. These functions are modified instead to
return a new reference using gdbpy_ref<>, which not only makes the
intent clear, but also makes it more difficult to have a buggy caller.
This could go further and make all functions return gdbpy_ref<>.
(Even Python-facing ones could be done via template fuction wrappers.)
However I have not done this.
I think now gdb should disallow Python functions returning borrowed
references. Accepting a borrowed reference is still ok, and I think
should continue to be.
I think this series found at least one bug:
infpy_thread_from_thread_handle could return None without incref'ing
it.
Let me know what you think. I tested this on x86-64 Fedora 28.
Tom