While reading the code I found a couple of spots where the GIL is treated weirdly. I don't see why gdbpy_decode_line should acquire the GIL. This function will only be called in a Python context. Acquiring the GIL in inferior_to_inferior object seems weird. It isn't necessarily incorrect but it seems like it would be preferable to acquire this in whichever callers need it; usually these X_to_X_object calls are expected to be used in a Python context.
CVSROOT: /cvs/src Module name: src Changes by: pmuldoon@sourceware.org 2011-11-28 15:49:43 Modified files: gdb : ChangeLog gdb/python : py-block.c py-breakpoint.c py-inferior.c py-type.c py-value.c python.c Log message: 2011-11-28 Phil Muldoon <pmuldoon@redhat.com> PR python/13369 PR python/13374 * python/python.c (gdbpy_decode_line): Do not acquire GIL. * python/py-inferior.c (inferior_to_inferior_object): Ditto. * python/py-value.c (valpy_nonzero): Use TRY_CATCH to catch GDB exceptions. * python/py-type.c (typy_strip_typedefs): Ditto. (typy_legacy_template_argument): Ditto. * python/py-inferior.c (inferior_to_inferior_object): Ditto. * python/py-breakpoint.c (bppy_set_ignore_count): Ditto. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.13554&r2=1.13555 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-block.c.diff?cvsroot=src&r1=1.9&r2=1.10 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-breakpoint.c.diff?cvsroot=src&r1=1.28&r2=1.29 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-inferior.c.diff?cvsroot=src&r1=1.16&r2=1.17 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-type.c.diff?cvsroot=src&r1=1.30&r2=1.31 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-value.c.diff?cvsroot=src&r1=1.29&r2=1.30 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/python.c.diff?cvsroot=src&r1=1.77&r2=1.78
Closed with commit details in comment #1. Thanks.