classification
Title: python-gdb.py must be updated for the new Python 3.6 compact dict
Type: Stage: resolved
Components: Demos and Tools Versions: Python 3.7, Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: inada.naoki Nosy List: inada.naoki, jcea, ned.deily, python-dev, vstinner
Priority: release blocker Keywords: needs review, patch

Created on 2016-09-08 16:25 by vstinner, last changed 2017-05-17 17:34 by jcea. This issue is now closed.

Files
File name Uploaded Description Edit
dict_gdb.patch inada.naoki, 2016-10-04 11:27 review
dict_gdb2.patch inada.naoki, 2016-11-21 15:45 review
Pull Requests
URL Status Linked Edit
PR 552 closed dstufft, 2017-03-31 16:36
Messages (15)
msg275058 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-09-08 16:25
The issue #27350 changed the design of Python dictionaries to make them compact. python-gdb.py must be updated for the new structure of Python dict.
msg275064 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-09-08 16:44
New changeset 0bd618fe0639 by Victor Stinner in branch 'default':
Implement compact dict
https://hg.python.org/cpython/rev/0bd618fe0639
msg278028 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-10-04 11:27
I've fixed dict support of python-gdb.py.

But I found py-bt and py-bt-full are broken.  They doesn't show builtin method.
I think it's because FASTCALL.  But I'm not sure.
I just skip the test for py-bt in attached patch.
msg278295 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-10-08 12:32
Could someone review this before 3.6b2?
Without this patch, python-gdb.py causes many RuntimeError.
msg280739 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-11-14 08:04
@haypo, would you review this patch?
msg281346 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-11-21 10:22
ping
msg281359 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-11-21 14:19
I reviewed dict_gdb.patch.
msg281453 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-11-22 09:27
dict_gdb2.patch LGTM. Can you please follow Ned's instructions to get this change merged into 3.6 final? python-gdb.py is an important tool and it's completly broken. The patch cannot make python-gdb.py worse :-D (More seriously, it fixes python-gdb.py.)
msg281460 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-11-22 10:33
https://mail.python.org/pipermail/python-committers/2016-November/004065.html
> The 3.6 branch in the cpython repo is now available again but, as noted, *only* for reviewed release critical fixes appropriate for the 3.6.0 final and for final 3.6.0 doc updates!

So now I think I can commit this for now.
msg281462 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-11-22 10:44
New changeset 4f6fb9e47f6b by INADA Naoki in branch '3.6':
Issue #28023: Fix python-gdb.py didn't support new dict implementation
https://hg.python.org/cpython/rev/4f6fb9e47f6b

New changeset c51045920410 by INADA Naoki in branch 'default':
Issue #28023: Fix python-gdb.py didn't support new dict implementation
https://hg.python.org/cpython/rev/c51045920410
msg281464 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-11-22 11:38
test_gdb failed on a lot of buildbots. Examples:

* http://buildbot.python.org/all/builders/PPC64%20Fedora%203.x/builds/2089
* http://buildbot.python.org/all/builders/AMD64%20Debian%20PGO%203.6/builds/330
* http://buildbot.python.org/all/builders/x86%20Gentoo%20Non-Debug%20with%20X%203.6/builds/287

Extract of the Gentoo non-debug:

(...)
    GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
(...)
======================================================================
FAIL: test_NULL_ob_type (test.test_gdb.PrettyPrintTests)
Ensure that a PyObject* with NULL ob_type is handled gracefully
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/buildbot/buildarea/3.6.ware-gentoo-x86.nondebug/build/Lib/test/test_gdb.py", line 490, in test_NULL_ob_type
    'set v->ob_type=0')
  File "/buildbot/buildarea/3.6.ware-gentoo-x86.nondebug/build/Lib/test/test_gdb.py", line 461, in assertSane
    cmds_after_breakpoint=cmds_after_breakpoint)
  File "/buildbot/buildarea/3.6.ware-gentoo-x86.nondebug/build/Lib/test/test_gdb.py", line 240, in get_gdb_repr
    import_site=import_site)
  File "/buildbot/buildarea/3.6.ware-gentoo-x86.nondebug/build/Lib/test/test_gdb.py", line 218, in get_stack_trace
    self.assertEqual(unexpected_errlines, [])
AssertionError: Lists differ: ["Python Exception <class 'gdb.error'> Can[663 chars].: "] != []

First list contains 10 additional elements.
First extra element 0:
"Python Exception <class 'gdb.error'> Cannot convert value to int.: "

Diff is 745 characters long. Set self.maxDiff to None to see it.
msg281471 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-11-22 12:11
New changeset 9b974f988c95 by Victor Stinner in branch '3.6':
Issue #28023: Fix python-gdb.py on old GDB versions
https://hg.python.org/cpython/rev/9b974f988c95
msg281474 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2016-11-22 12:30
Thanks a lot!

I hope I can run test on multiple environment before merge,
after we move to Github.
msg281478 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-11-22 13:18
Ah nice, it seems like test_gdb pass again.
msg281488 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-11-22 14:54
Thanks Naoki for the fix ;-) gdb scripts are a little bit weird sometimes, and the API has subtle changes in each minor GDB release :-/
History
Date User Action Args
2017-05-17 17:34:55jceasetnosy: + jcea
2017-03-31 16:36:11dstufftsetpull_requests: + pull_request868
2016-11-22 14:54:00vstinnersetmessages: + msg281488
2016-11-22 14:53:15vstinnersetstatus: open -> closed
resolution: fixed
2016-11-22 13:18:02vstinnersetmessages: + msg281478
2016-11-22 12:30:26inada.naokisetmessages: + msg281474
2016-11-22 12:11:40python-devsetmessages: + msg281471
2016-11-22 11:38:09vstinnersetstatus: closed -> open
resolution: fixed -> (no value)
messages: + msg281464
2016-11-22 10:44:24inada.naokisetstatus: open -> closed
resolution: fixed
stage: commit review -> resolved
2016-11-22 10:44:01python-devsetmessages: + msg281462
2016-11-22 10:33:02inada.naokisetmessages: + msg281460
2016-11-22 09:27:43vstinnersetmessages: + msg281453
2016-11-21 15:45:38inada.naokisetfiles: + dict_gdb2.patch
2016-11-21 14:19:01vstinnersetmessages: + msg281359
2016-11-21 10:22:06inada.naokisetmessages: + msg281346
2016-11-14 08:04:12inada.naokisetmessages: + msg280739
versions: + Python 3.7
2016-11-08 03:06:10inada.naokisetpriority: high -> release blocker
nosy: + ned.deily

stage: patch review -> commit review
2016-10-08 12:32:23inada.naokisetkeywords: + needs review

messages: + msg278295
stage: patch review
2016-10-04 11:27:52inada.naokisetfiles: + dict_gdb.patch
priority: normal -> high
messages: + msg278028

assignee: inada.naoki
components: + Demos and Tools
keywords: + patch
2016-09-08 16:44:48python-devsetnosy: + python-dev
messages: + msg275064
2016-09-08 16:25:40vstinnercreate