On Thu, 18 May 2017, Bernd Edlinger wrote:

> Hi,
> 
> unfortunately the first patch was still insufficient.  I identified many
> more relatively new places where static tree objects are invisible to
> GC.
> 
> Nathan, whatever you are doing, please do it a bit more slowly, thanks.
> 
> Bootstrap and reg-testing on x86_64-pc-linux-gnu in progress.
> Is it OK after successful reg-testing?

Index: gcc/c-family/c-format.c
===================================================================
--- gcc/c-family/c-format.c     (revision 248242)
+++ gcc/c-family/c-format.c     (working copy)
@@ -55,6 +55,8 @@ struct function_format_info
 
 /* Initialized in init_dynamic_diag_info.  */
 static GTY(()) tree local_tree_type_node;
+static GTY(()) tree hwi;
+static GTY(()) tree locus;
 
 static bool decode_format_attr (tree, function_format_info *, int);
 static int decode_format_type (const char *);
@@ -3675,8 +3677,6 @@ find_length_info_modifier_index (const format_leng
 static void
 init_dynamic_asm_fprintf_info (void)
 {
-  static tree hwi;
-
   if (!hwi)
     {
       format_length_info *new_asm_fprintf_length_specs;
@@ -3734,8 +3734,6 @@ init_dynamic_asm_fprintf_info (void)
 static void
 init_dynamic_gfc_info (void)
 {
-  static tree locus;
-
   if (!locus)
     {
       static format_char_info *gfc_fci;
@@ -3828,8 +3826,6 @@ init_dynamic_diag_info (void)
        local_tree_type_node = void_type_node;
     }
 
-  static tree hwi;
-

you are commoning 'hwi' here.   Also a bad (very short) name for a global
(even if static).

I'll leave review to Nathan anyway.

Richard.

> 
> Thanks
> Bernd.
> 
> 
> On 05/18/17 17:33, Richard Biener wrote:
> > On May 18, 2017 5:15:43 PM GMT+02:00, Bernd Edlinger 
> > <bernd.edlin...@hotmail.de> wrote:
> >> Hi,
> >>
> >>
> >> this attempts to fix occasional segmentation faults that are present in
> >> the current snapshot, while previous snapshot was stable.
> >>
> >> I observed numerous crashes but all were non-reproducible,
> >> like the following example:
> >>
> >> In file included from
> >> /home/ed/gnu/gcc-build-1/x86_64-pc-linux-gnu/libstdc++-v3/include/string:52:0,
> >>                   from
> >> /home/ed/gnu/gcc-8-20170514-1/gcc/testsuite/g++.dg/asan/asan_test_config.h:19,
> >>                   from
> >> /home/ed/gnu/gcc-8-20170514-1/gcc/testsuite/g++.dg/asan/asan_test_utils.h:17,
> >>                   from
> >> /home/ed/gnu/gcc-8-20170514-1/gcc/testsuite/g++.dg/asan/asan_globals_test.cc:12,
> >>                   from
> >> /home/ed/gnu/gcc-8-20170514-1/gcc/testsuite/g++.dg/asan/asan_globals_test-wrapper.cc:2:
> >> /home/ed/gnu/gcc-build-1/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:6277:22:
> >>
> >> internal compiler error: Segmentation fault
> >> 0xd7e17f crash_signal
> >>          ../../gcc-8-20170514-1/gcc/toplev.c:337
> >> 0x8f23fe ggc_set_mark(void const*)
> >>          ../../gcc-8-20170514-1/gcc/ggc-page.c:1546
> >> 0x7e6a5f gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:133
> >> 0x7e8c7a gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:235
> >> 0x7e8882 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:365
> >> 0x81b26d gt_ggc_mx_cp_binding_level(void*)
> >>          ./gt-cp-name-lookup.h:72
> >> 0x7e6d85 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:648
> >> 0x7e8ad2 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:221
> >> 0x7e8eeb gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:337
> >> 0x7e8a3c gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:441
> >> 0x7e7304 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:606
> >> 0x81b352 gt_ggc_mx_cxx_binding(void*)
> >>          ./gt-cp-name-lookup.h:60
> >> 0x7e6d85 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:648
> >> 0x7e8ef5 gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:336
> >> 0x7e8a3c gt_ggc_mx_lang_tree_node(void*)
> >>          ./gt-cp-tree.h:441
> >> 0xb2edbe void gt_ggc_mx<tree_node*>(vec<tree_node*, va_gc, vl_embed>*)
> >>          ../../gcc-8-20170514-1/gcc/vec.h:1110
> >> 0xb2edbe gt_ggc_mx_vec_tree_va_gc_(void*)
> >>          /home/ed/gnu/gcc-build-1/gcc/gtype-desc.c:1737
> >> 0xac59f5 ggc_mark_root_tab
> >>          ../../gcc-8-20170514-1/gcc/ggc-common.c:77
> >> 0xac5c50 ggc_mark_roots()
> >>          ../../gcc-8-20170514-1/gcc/ggc-common.c:94
> >> 0x8f2de7 ggc_collect()
> >>          ../../gcc-8-20170514-1/gcc/ggc-page.c:2206
> >> Please submit a full bug report,
> >> with preprocessed source if appropriate.
> >> Please include the complete backtrace with any bug report.
> >>
> >>
> >> The following patch fixes one rather suspicious static tree
> >> object that did not have the GTY attribute, and was therefore
> >> apparently not in the GC root set.
> >>
> >>
> >> Bootstrapped and reg-tested on x86_64-pc-linux-gnu.
> >> Is it OK for trunk?
> > 
> > OK.
> > 
> > Richard.
> > 
> >>
> >> Thanks
> >> Bernd.
> > 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to