[PATCH] Fix use-after-scope error.

Martin Liška mliska@suse.cz
Wed Oct 11 06:24:00 GMT 2017


Hello.

One can see use-after-scope error in boostrap-asan:

Executing on host: /home/marxin/gcc/objdir2/gcc/xgcc -B/home/marxin/gcc/objdir2/gcc/  -fno-diagnostics-show-caret -fdiagnostics-color=never  -w  -O3 -g   -dumpbase dump1/dump-noaddr.c -DMASK=1 -x c --param ggc-min-heapsize=1 -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -
fdump-noaddr -c   -o /home/marxin/gcc/objdir2/gcc/testsuite/gcc27/dump-noaddr.o /home/marxin/gcc/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c    (timeout = 300)
spawn /home/marxin/gcc/objdir2/gcc/xgcc -B/home/marxin/gcc/objdir2/gcc/ -fno-diagnostics-show-caret -fdiagnostics-color=never -w -O3 -g -dumpbase dump1/dump-noaddr.c -DMASK=1 -x c --param ggc-min-heapsize=1 -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr -c -o
 /home/marxin/gcc/objdir2/gcc/testsuite/gcc27/dump-noaddr.o /home/marxin/gcc/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
=================================================================
==88887==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7fffffff9890 at pc 0x0000009d9361 bp 0x7fffffff9280 sp 0x7fffffff8a30
READ of size 4 at 0x7fffffff9890 thread T0
    #0 0x9d9360 in __interceptor_strlen ../../../../libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:225
    #1 0x3189f03 in pp_string(pretty_printer*, char const*) ../../gcc/pretty-print.c:990
    #2 0x318cb5a in pp_format(pretty_printer*, text_info*) ../../gcc/pretty-print.c:599
    #3 0x318ecfe in pp_printf(pretty_printer*, char const*, ...) ../../gcc/pretty-print.c:937
    #4 0x17ac387 in print_insn(pretty_printer*, rtx_insn const*, int) ../../gcc/print-rtl.c:1816
    #5 0x17ac837 in print_insn_with_notes ../../gcc/print-rtl.c:1897
    #6 0x17b5c73 in dump_insn_slim(_IO_FILE*, rtx_insn const*) ../../gcc/print-rtl.c:1934
    #7 0x2e61d85 in combine_instructions ../../gcc/combine.c:1218
    #8 0x2e61d85 in rest_of_handle_combine ../../gcc/combine.c:14784
    #9 0x2e61d85 in execute ../../gcc/combine.c:14829
    #10 0x173d971 in execute_one_pass(opt_pass*) ../../gcc/passes.c:2495
    #11 0x173f126 in execute_pass_list_1 ../../gcc/passes.c:2584
    #12 0x173f150 in execute_pass_list_1 ../../gcc/passes.c:2585
    #13 0x173f1af in execute_pass_list(function*, opt_pass*) ../../gcc/passes.c:2595
    #14 0xeb7957 in cgraph_node::expand() ../../gcc/cgraphunit.c:2115
    #15 0xeba71e in expand_all_functions ../../gcc/cgraphunit.c:2251
    #16 0xeba71e in symbol_table::compile() ../../gcc/cgraphunit.c:2599
    #17 0xec0e40 in symbol_table::compile() ../../gcc/cgraphunit.c:2695
    #18 0xec0e40 in symbol_table::finalize_compilation_unit() ../../gcc/cgraphunit.c:2692
    #19 0x19e3a8b in compile_file ../../gcc/toplev.c:481
    #20 0x9a2a3f in do_compile ../../gcc/toplev.c:2037
    #21 0x9a2a3f in toplev::main(int, char**) ../../gcc/toplev.c:2172
    #22 0x9acd24 in main ../../gcc/main.c:39
    #23 0x7ffff6a396e4 in __libc_start_main (/lib64/libc.so.6+0x206e4)
    #24 0x9adf28 in _start (/home/marxin/gcc/objdir2/gcc/cc1+0x9adf28)

Address 0x7fffffff9890 is located in stack of thread T0 at offset 96 in frame
    #0 0x17abfdf in print_insn(pretty_printer*, rtx_insn const*, int) ../../gcc/print-rtl.c:1777

  This frame has 2 object(s):
    [32, 64) 'uid_prefix'
    [96, 128) 'idbuf' <== Memory access at offset 96 is inside this variable
...

This is fix of that. It's quite clear.
Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

Ready to be installed?
Martin

gcc/ChangeLog:

2017-10-10  Martin Liska  <mliska@suse.cz>

	* print-rtl.c (print_insn): Move declaration of idbuf
	to same scope as name.
---
 gcc/print-rtl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-use-after-scope-error.patch
Type: text/x-patch
Size: 530 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20171011/7a3da115/attachment.bin>


More information about the Gcc-patches mailing list