Review Request 121527: backport the latest gdb fixes from master to 4.7

Andreas Roth aroth at arsoft-online.com
Wed Dec 17 18:37:03 UTC 2014



> On Dec. 15, 2014, 3:43 p.m., Nicolai Hähnle wrote:
> > Thank you for taking the time to do this. Obviously I'm happy with the code itself. I expect the questions here may be (a) whether these changes are too large to be added to 4.7 and (b) whether the new i18n strings are okay (see below). I'll defer to the opinion of others there...
> 
> Nicolai Hähnle wrote:
>     If this goes into 4.7, please make sure you also cherry-pick commit 67acc5f "gdb: defend against use-after-free of breakpoint structures", as I am now fairly convinced that this fixes a genuine regression introduced by these changes.
> 
> Andreas Roth wrote:
>     I just update the patch to include the very latest changes including the commit 67acc5f.
> 
> Milian Wolff wrote:
>     reminder: you did not update the patch yet (did you forgot it, or did you miss the future-tense "will" in the sentence above? :))

I seems that i missed something ;-). Hope the patch is now up-to-date!


- Andreas


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121527/#review72067
-----------------------------------------------------------


On Dec. 17, 2014, 6:34 p.m., Andreas Roth wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/121527/
> -----------------------------------------------------------
> 
> (Updated Dec. 17, 2014, 6:34 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Repository: kdevelop
> 
> 
> Description
> -------
> 
> I backported all the gdb related changes from master to the 4.7 branch. This also includes fixes to restore the gdb unit tests. Many thanks to Nikolai who did a great job there.
> My entire git tree is available at https://github.com/aroth-arsoft/kdevelop/tree/4.7-gdb-fixes-from-master
> 
> 
> gdb: do not use addCommandToFront in DisassembleWidget
> 
> 
> gdb: DebugSession: add a testing mode for unit tests
> 
> Attempt to provide a cleaner environment during unit tests, in particular do
> not read the user's .gdbinit files (those can mess up breakpoint counts etc.).
> 
> gdb: match structure more closely to the GDB/MI documentation and use cmd tokens
> 
> In particular, split Result and Async records into separate categories to mirror
> the GDB documentation and account for the reality that async records can come
> at any time according to the GDB doc, and need to be processed in any case.
> These changes should help make the debugger more robust in the long term.
> 
> fix merge error
> 
> 
> gdb: always process async notifications from GDB
> 
> The GDB documentation says that async notifications may arrive at any time,
> even when all commands have returned a result.
> 
> gdb: remove magic constants in GDBMI::StreamRecord
> 
> 
> gdb: remove flaky DebugSession::parseStreamRecord
> 
> 
> gdb: add braces around multi-line if statement
> 
> 
> gdb: examineCoreFile: update IDebugSession::state() to match unit tests
> 
> 
> gdb: update session state more robustly based on async notifications
> 
> This is a first step towards picking up changes of the running state that are
> caused by user commands to GDB.
> 
> gdb: make testIgnoreHitsBreakpoint more robust to timing issues
> 
> Instead of waiting for a debugger state, wait for a combination of debugger
> state + breakpoint hit-count. This ensures that the test does the right thing
> even when an intermediate PausedState is encountered during program startup.
> It also happens to verify that the breakpoint hitCount is updated correctly.
> gdb: testManualAttach: fix timing
> 
> gdb: unit tests: make timing more robust in some tests
> 
> Wait explicitly until the debugger is idle, which should avoid accidentally
> accepting an intermittent pause state; it also ensures that data reloading
> has completed e.g. for the frame stack model.
> 
> gdb: unittests: remove unused WAIT_FOR_STATE_FAIL
> 
> 
> gdb: source code formatting changes
> 
> 
> test_gdb: remove code duplication in check whether ptrace attach is allowed
> 
> 
> test_gdb: add missing gdb_script_empty
> 
> 
> gdb: make loading of our Python pretty printers into gdb more robust
> 
> Instead of relying on a cmake-configured gdbinit that might end up being
> moved around by the user, we add the Python path at the point where we also
> determine the path to gdbinit.
> 
> REVIEW: 121464
> 
> gdb: do not crash when receiving thread-info responses with running threads
> 
> gdb can operate in a mode where gdb receives commands while the inferior (or
> a subset of the threads of the inferior) is running.
> 
> REVIEW: 121465
> 
> gdb: quick fix for compile error on OSX
> 
> 
> gdb: fix two compile errors that were missed in the previous commit
> 
> 
> test_gdb: make more unit tests more robust to timing variances
> 
> 
> gdb: ignore "library-loaded" async notifications
> 
> 
> gdb: warn the user when a debug launch will kill a currently running debug session
> 
> REVIEW: 121469
> 
> correct signal/slot connections caused by using different parameter types
> 
> 
> test_gdb: use Breakpoint::State, anticipating potential future API changes
> 
> 
> Diffs
> -----
> 
>   debuggers/gdb/printers/CMakeLists.txt f772c8ad47bd012733f38669a28b83ffcf286fa2 
>   debuggers/gdb/printers/gdbinit c82ac9790b0bc596a9783e093d46f15f2700408d 
>   debuggers/gdb/unittests/gdb_script_empty PRE-CREATION 
>   debuggers/gdb/unittests/gdbtest.h b9a961d6f3922076867f45d3af287e5addf6a56c 
>   debuggers/gdb/unittests/gdbtest.cpp ef3cd4285420621cd1cea75f519c9349caca5e53 
>   debuggers/gdb/variablecontroller.h f5ac8c12f2a2149ba747433d7f94501b3b2fe895 
>   debuggers/gdb/variablecontroller.cpp 5198c09ec9f393cafe1d0737f72e4ba45d25a893 
>   debuggers/gdb/DESIGN.txt ddefb700d8b38f923ee68816de04683e08ef66a3 
>   debuggers/gdb/breakpointcontroller.h 1b8ae0e8d629047d9b7d2365b3ef89cd6a2ea35f 
>   debuggers/gdb/breakpointcontroller.cpp 744e75061886b3b9cbb54344c846eac801f986e1 
>   debuggers/gdb/debuggerplugin.h 0ec300a481b89c34572e530977ae531dc769179e 
>   debuggers/gdb/debuggerplugin.cpp ca2bbafe18213da15cc262025715f19ad89d22a8 
>   debuggers/gdb/debugjob.cpp 2807484b798d18778f5f9f203935cd72e6b1440a 
>   debuggers/gdb/debugsession.h 7a1a3d98d62842fbf512825fcb1ab3407c9b35ab 
>   debuggers/gdb/debugsession.cpp edc0d34473e99230db510457fd609a178bc8fa34 
>   debuggers/gdb/disassemblewidget.cpp 91194ed7e69ff87ebdfbb5383c1b38939760d098 
>   debuggers/gdb/gdb.h 31688cd91860ae0d2802c760fb54967024266854 
>   debuggers/gdb/gdb.cpp 46420876149604a318caec7111f252dcc12b39b4 
>   debuggers/gdb/gdbcommand.h e1ebc6988fb508a187d2775735c13b9123fcda04 
>   debuggers/gdb/gdbcommand.cpp 67abbd87f1f0d10a84a45b3ee9f104c77ffe925b 
>   debuggers/gdb/gdbcommandqueue.h 7d82f45a244d9fffb9b3a2ba5a82eaaa06f5c8d0 
>   debuggers/gdb/gdbcommandqueue.cpp 801bc41e79f62a226de04cd1a91500c86a9cf1a3 
>   debuggers/gdb/gdbframestackmodel.cpp e9e1fce3bd8059b5218e1d084419048ff4a37ea5 
>   debuggers/gdb/gdbglobal.h ef31c027231abed9c917c7fcf8715ffb32ad0159 
>   debuggers/gdb/gdblaunchconfig.cpp 720099894f48cb1676f538cd36482acb4fa9fd6d 
>   debuggers/gdb/mi/gdbmi.h d5e92b8f0b3d989cbe529732fe3d6faf7a74172c 
>   debuggers/gdb/mi/miparser.h 7096af0e7fdc9017fe9bd5127e69d6e59502221d 
>   debuggers/gdb/mi/miparser.cpp 123c97ee9ecb3549ae0ee373a22c6cb9ed90a1a3 
> 
> Diff: https://git.reviewboard.kde.org/r/121527/diff/
> 
> 
> Testing
> -------
> 
> GDB unit tests runs without any failure
> 
> 
> Thanks,
> 
> Andreas Roth
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20141217/7858af31/attachment.html>


More information about the KDevelop-devel mailing list