Fix use of a dangling pointer for Python breakpoint objects
When a Python script tries to create a breakpoint but fails to do so, gdb.Breakpoint.__init__ raises an exception and the breakpoint does not exist anymore in the Python interpreter. However, GDB still keeps a reference to the Python object to be used for a later hook, which is wrong. This commit adds the necessary cleanup code so that there is no stale reference to this Python object. It also adds a new testcase to reproduce the bug and check the fix. 2016-06-25 Pierre-Marie de Rodat <derodat@adacore.com> gdb/ * python/py-breakpoint.c (bppy_init): Clear bppy_pending_object when there is an error during the breakpoint creation. gdb/testsuite * gdb.python/py-breakpoint-create-fail.c, gdb.python/py-breakpoint-create-fail.exp, gdb.python/py-breakpoint-create-fail.py: New testcase.
This commit is contained in:
parent
3cd72572cb
commit
f495252396
6 changed files with 127 additions and 0 deletions
|
@ -705,6 +705,7 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
bppy_pending_object = NULL;
|
||||
PyErr_Format (except.reason == RETURN_QUIT
|
||||
? PyExc_KeyboardInterrupt : PyExc_RuntimeError,
|
||||
"%s", except.message);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue