c75bd3a239
https://bugzilla.redhat.com/show_bug.cgi?id=1126177 ERROR: AddressSanitizer: SEGV on unknown address 0x000000000050 (pc 0x000000992bef sp 0x7ffff9039530 bp 0x7ffff9039540 T0) #0 0x992bee in value_type .../gdb/value.c:925 #1 0x87c951 in py_print_single_arg python/py-framefilter.c:445 #2 0x87cfae in enumerate_args python/py-framefilter.c:596 #3 0x87e0b0 in py_print_args python/py-framefilter.c:968 It crashes because frame_arg::val is documented it may contain NULL (frame_arg::error is then non-NULL) but the code does not handle it. Another bug is that py_print_single_arg() calls goto out of its TRY_CATCH which messes up GDB cleanup chain crashing GDB later. It is probably 7.7 regression (I have not verified it) due to the introduction of Python frame filters. gdb/ChangeLog PR python/17355 * python/py-framefilter.c (py_print_single_arg): Handle NULL FA->VAL. Fix goto out of TRY_CATCH. gdb/testsuite/ChangeLog PR python/17355 * gdb.python/amd64-py-framefilter-invalidarg.S: New file. * gdb.python/py-framefilter-invalidarg-gdb.py.in: New file. * gdb.python/py-framefilter-invalidarg.exp: New file. * gdb.python/py-framefilter-invalidarg.py: New file. |
||
---|---|---|
.. | ||
amd64-py-framefilter-invalidarg.S | ||
lib-types.cc | ||
lib-types.exp | ||
Makefile.in | ||
py-arch.c | ||
py-arch.exp | ||
py-block.c | ||
py-block.exp | ||
py-breakpoint.c | ||
py-breakpoint.exp | ||
py-caller-is.c | ||
py-caller-is.exp | ||
py-cmd.c | ||
py-cmd.exp | ||
py-completion.exp | ||
py-completion.py | ||
py-error.exp | ||
py-error.py | ||
py-events-shlib.c | ||
py-events.c | ||
py-events.exp | ||
py-events.py | ||
py-evsignal.exp | ||
py-evthreads.c | ||
py-evthreads.exp | ||
py-explore-cc.exp | ||
py-explore.c | ||
py-explore.cc | ||
py-explore.exp | ||
py-finish-breakpoint.c | ||
py-finish-breakpoint.exp | ||
py-finish-breakpoint.py | ||
py-finish-breakpoint2.cc | ||
py-finish-breakpoint2.exp | ||
py-finish-breakpoint2.py | ||
py-frame-args.c | ||
py-frame-args.exp | ||
py-frame-args.py | ||
py-frame-inline.c | ||
py-frame-inline.exp | ||
py-frame.c | ||
py-frame.exp | ||
py-framefilter-gdb.py.in | ||
py-framefilter-invalidarg-gdb.py.in | ||
py-framefilter-invalidarg.exp | ||
py-framefilter-invalidarg.py | ||
py-framefilter-mi.c | ||
py-framefilter-mi.exp | ||
py-framefilter.c | ||
py-framefilter.exp | ||
py-framefilter.py | ||
py-function.exp | ||
py-inferior.c | ||
py-inferior.exp | ||
py-infthread.c | ||
py-infthread.exp | ||
py-linetable.c | ||
py-linetable.exp | ||
py-linetable.S | ||
py-mi.exp | ||
py-objfile-script-gdb.py.in | ||
py-objfile-script.c | ||
py-objfile-script.exp | ||
py-objfile.c | ||
py-objfile.exp | ||
py-parameter.exp | ||
py-pp-integral.c | ||
py-pp-integral.exp | ||
py-pp-integral.py | ||
py-pp-maint.c | ||
py-pp-maint.exp | ||
py-pp-maint.py | ||
py-pp-re-notag.c | ||
py-pp-re-notag.exp | ||
py-pp-re-notag.py | ||
py-prettyprint.c | ||
py-prettyprint.exp | ||
py-prettyprint.py | ||
py-progspace.c | ||
py-progspace.exp | ||
py-prompt.c | ||
py-prompt.exp | ||
py-section-script.c | ||
py-section-script.exp | ||
py-section-script.py | ||
py-shared-sl.c | ||
py-shared.c | ||
py-shared.exp | ||
py-strfns.c | ||
py-strfns.exp | ||
py-symbol.c | ||
py-symbol.exp | ||
py-symtab.exp | ||
py-sync-interp.c | ||
py-sync-interp.exp | ||
py-template.cc | ||
py-template.exp | ||
py-type.c | ||
py-type.exp | ||
py-typeprint.cc | ||
py-typeprint.exp | ||
py-typeprint.py | ||
py-value-cc.cc | ||
py-value-cc.exp | ||
py-value.c | ||
py-value.exp | ||
py-xmethods.cc | ||
py-xmethods.exp | ||
py-xmethods.py | ||
python-1.c | ||
python.c | ||
python.exp | ||
source1 | ||
source2.py |