[Bug python/23615] release the GIL in python.c:execute_gdb_command

cvs-commit at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Wed Jan 30 14:34:00 GMT 2019


https://sourceware.org/bugzilla/show_bug.cgi?id=23615

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom Tromey <tromey@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b5eba2d8c050b39943918057283470959a5d18c3

commit b5eba2d8c050b39943918057283470959a5d18c3
Author: Tom Tromey <tom@tromey.com>
Date:   Fri Sep 7 20:02:21 2018 -0600

    Release the GIL while running a gdb command or expression

    PR python/23615 points out that gdb.execute_gdb_command does not
    release the Python GIL.  This means that, while the gdb command is
    running, other Python threads do not run.

    This patch solves the problem by introducing a new RAII class that can
    be used to temporarily release and then re-acquire the GIL, then puts
    this into the appropriate places in execute_gdb_command and
    gdbpy_parse_and_eval.

    This does not include a test case, because after some research I could
    not find a way to write one that was not racy.

    gdb/ChangeLog
    2019-01-30  Tom Tromey  <tom@tromey.com>

        PR python/23615:
        * python/python.c (execute_gdb_command): Use gdbpy_allow_threads.
        (gdbpy_parse_and_eval): Likewise.
        * python/python-internal.h (gdbpy_allow_threads): New class.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Gdb-prs mailing list