This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2010年04月07日 00:45 by dmalcolm, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| fix-test_gdb-deprection-warning.patch | dmalcolm, 2010年04月07日 16:43 | Use BaseException.args, rather than BaseException.message in test_gdb PrettyPrintTests.test_unicode, to fix deprecation warning on narrow unicode builds | review | |
| fix-overfussy-gdb_text_corruption-tests-and-deprecation-warning.patch | dmalcolm, 2010年04月07日 22:26 | review | ||
| Messages (6) | |||
|---|---|---|---|
| msg102509 - (view) | Author: Dave Malcolm (dmalcolm) (Python committer) | Date: 2010年04月07日 00:45 | |
http://www.python.org/dev/buildbot/trunk/builders/alpha%20Debian%20trunk/builds/52/steps/test/logs/stdio shows some failures in test_gdb: ====================================================================== FAIL: test_corrupt_ob_type (test.test_gdb.PrettyPrintTests) Ensure that a PyObject* with a corrupt ob_type is handled gracefully ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/doko/buildarea/trunk.klose-debian-alpha/build/Lib/test/test_gdb.py", line 361, in test_corrupt_ob_type 'set op->ob_type=0xDEADBEEF') File "/home/doko/buildarea/trunk.klose-debian-alpha/build/Lib/test/test_gdb.py", line 341, in assertSane (gdb_repr, gdb_output)) AssertionError: Unexpected gdb representation: '< at remote 0x1202cf5a8>' Breakpoint 1 at 0x12007a9e8: file Objects/object.c, line 330. [Thread debugging using libthread_db enabled] Breakpoint 1, PyObject_Print (op=42, fp=0x200002f87b0, flags=1) at Objects/object.c:330 330 return internal_print(op, fp, flags, 0); #0 PyObject_Print (op=< at remote 0x1202cf5a8>, fp=0x200002f87b0, flags=1) at Objects/object.c:330 #1 0x000000012003eaa0 in file_PyObject_Print (op=< at remote 0x1202cf5a8>, f= 0x20000326280, flags=1) at Objects/fileobject.c:110 #2 0x0000000120045bc8 in PyFile_WriteObject (v=< at remote 0x1202cf5a8>, f= <file at remote 0x20000326280>, flags=1) at Objects/fileobject.c:2470 #3 0x000000012010bb90 in PyEval_EvalFrameEx (f= Frame 0x1203a0ba0, for file <string>, line 1, in <module> (), throwflag=0) at Python/ceval.c:1769 #4 0x00000001201134bc in PyEval_EvalCodeEx (co=0x120305880, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253 #5 0x0000000120107294 in PyEval_EvalCode (co=0x120305880, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}) at Python/ceval.c:666 #6 0x0000000120152e08 in run_mod (mod=0x12038b848, filename= 0x12021cf00 "<string>", globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, flags=0x11f48b4d8, arena=0x1203406b0) at Python/pythonrun.c:1340 #7 0x0000000120152c2c in PyRun_StringFlags (str=0x1202b2010 "print 42\n", start=257, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, flags=0x11f48b4d8) at Python/pythonrun.c:1303 #8 0x0000000120150f50 in PyRun_SimpleStringFlags (command= 0x1202b2010 "print 42\n", flags=0x11f48b4d8) at Python/pythonrun.c:962 #9 0x00000001200185a0 in Py_Main (argc=4, argv=0x11f48b6b8) at Modules/main.c:525 #10 0x0000000120016e88 in main (argc=4, argv=0x11f48b6b8) at ./Modules/python.c:23 ====================================================================== FAIL: test_corrupt_tp_name (test.test_gdb.PrettyPrintTests) Ensure that a PyObject* with a type with corrupt tp_name is handled ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/doko/buildarea/trunk.klose-debian-alpha/build/Lib/test/test_gdb.py", line 372, in test_corrupt_tp_name 'set op->ob_type->tp_name=0xDEADBEEF') File "/home/doko/buildarea/trunk.klose-debian-alpha/build/Lib/test/test_gdb.py", line 341, in assertSane (gdb_repr, gdb_output)) AssertionError: Unexpected gdb representation: '42' Breakpoint 1 at 0x12007a9e8: file Objects/object.c, line 330. [Thread debugging using libthread_db enabled] Breakpoint 1, PyObject_Print (op=42, fp=0x200002f87b0, flags=1) at Objects/object.c:330 330 return internal_print(op, fp, flags, 0); #0 PyObject_Print (op=42, fp=0x200002f87b0, flags=1) at Objects/object.c:330 #1 0x000000012003eaa0 in file_PyObject_Print (op=42, f=0x20000326280, flags=1) at Objects/fileobject.c:110 #2 0x0000000120045bc8 in PyFile_WriteObject (v=42, f= <file at remote 0x20000326280>, flags=1) at Objects/fileobject.c:2470 #3 0x000000012010bb90 in PyEval_EvalFrameEx (f= Frame 0x1203a0ba0, for file <string>, line 1, in <module> (), throwflag=0) at Python/ceval.c:1769 #4 0x00000001201134bc in PyEval_EvalCodeEx (co=0x120305880, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253 #5 0x0000000120107294 in PyEval_EvalCode (co=0x120305880, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}) at Python/ceval.c:666 #6 0x0000000120152e08 in run_mod (mod=0x12038b848, filename= 0x12021cf00 "<string>", globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, flags=0x11f4174d8, arena=0x1203406b0) at Python/pythonrun.c:1340 #7 0x0000000120152c2c in PyRun_StringFlags (str=0x1202b2010 "print 42\n", start=257, globals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, locals= {'__builtins__': <module at remote 0x20000337470>, '__name__': '__main__', '__doc__': None, '__package__': None}, flags=0x11f4174d8) at Python/pythonrun.c:1303 #8 0x0000000120150f50 in PyRun_SimpleStringFlags (command= 0x1202b2010 "print 42\n", flags=0x11f4174d8) at Python/pythonrun.c:962 #9 0x00000001200185a0 in Py_Main (argc=4, argv=0x11f4176b8) at Modules/main.c:525 #10 0x0000000120016e88 in main (argc=4, argv=0x11f4176b8) at ./Modules/python.c:23 ---------------------------------------------------------------------- Ran 31 tests in 27.624s FAILED (failures=2) |
|||
| msg102546 - (view) | Author: Dave Malcolm (dmalcolm) (Python committer) | Date: 2010年04月07日 16:43 | |
There's also a deprecation warning in that log: /home/doko/buildarea/trunk.klose-debian-alpha/build/Lib/test/test_gdb.py:229: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 if e.message != 'unichr() arg not in range(0x10000) (narrow Python build)': I'm attaching a fix for this; tested with -Wd and it works. This doesn't yet address the other two failures. |
|||
| msg102571 - (view) | Author: Dave Malcolm (dmalcolm) (Python committer) | Date: 2010年04月07日 22:26 | |
Both of the failing tests use "set" inside gdb to try to corrupt the memory of the inferior process. I believe the issue here is that reading through 0xDEADBEEF within gdb on this machine isn't generating a RuntimeError; perhaps that _is_ a valid pointer in the address space of that process (or perhaps we're seeing another gdb-vs-gdb version difference aka issue #8279) Within PrettyPrintTests.test_corrupt_tp_name, such a situation leads to the use of tp_flags, and the presence of Py_TPFLAGS_INT_SUBCLASS leads to python-gdb.py using PyIntObject, and it correctly print "42", even after op->ob_type->tp_name now has a garbage value, whereas the test was expecting the fallback handler. Within PrettyPrintTests.test_corrupt_ob_type, it appears that we're using FakeRepr, and that ((PyTypeObject*)0xDEADBEEF->tp_name) within the process pointed at a NUL byte, when my code was expecting gdb to fail to read through ((PyTypeObject*)0xDEADBEEF->tp_name) with a RuntimeError. I'm attaching a patch which tries to generalize the expected output from these tests, so that they pass if the corruption in the inferior process doesn't manage to confuse gdb, and if 0xDEADBEEF happens to point at something unexpected. I tested this with PrettyPrintTests active (it continues to all pass on my machine), but commented it out when generating the patch. This also includes the fix for the DeprecationWarning mentioned in msg102546 |
|||
| msg102917 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2010年04月12日 05:23 | |
I have now applied file16808 as r79986. I'm detaching file16804, as it was superceded by the other patch. I also reenabled all tests in r79987, to see how the buildbots react. |
|||
| msg160885 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2012年05月16日 16:42 | |
Shouldn't this be closed? |
|||
| msg160895 - (view) | Author: Dave Malcolm (dmalcolm) (Python committer) | Date: 2012年05月16日 17:50 | |
Oops; closing. Thanks. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:59 | admin | set | github: 52577 |
| 2012年05月16日 17:50:10 | dmalcolm | set | status: open -> closed resolution: fixed messages: + msg160895 |
| 2012年05月16日 16:42:22 | pitrou | set | nosy:
+ pitrou messages: + msg160885 |
| 2010年04月12日 05:23:31 | loewis | set | messages: + msg102917 |
| 2010年04月08日 15:51:30 | dmalcolm | set | nosy:
+ loewis |
| 2010年04月07日 22:26:46 | dmalcolm | set | files:
+ fix-overfussy-gdb_text_corruption-tests-and-deprecation-warning.patch messages: + msg102571 |
| 2010年04月07日 19:28:40 | loewis | link | issue8337 superseder |
| 2010年04月07日 16:43:52 | dmalcolm | set | files:
+ fix-test_gdb-deprection-warning.patch keywords: + patch messages: + msg102546 stage: patch review |
| 2010年04月07日 00:45:24 | dmalcolm | create | |