On Tue, Nov 8, 2011 at 6:10 PM, Xinliang David Li <davi...@google.com> wrote: > Here is the revised patch. Bootstrap and regression tested on linux/x86-64. > > Honza, can you comment on the implication of this change?
Jason also seems to have touched this again, so maybe it's already fixed? > thanks, > > David > > On Mon, Nov 7, 2011 at 2:09 PM, Richard Guenther > <richard.guent...@gmail.com> wrote: >> On Mon, Nov 7, 2011 at 5:41 PM, Xinliang David Li <davi...@google.com> wrote: >>> Here is the stack trace when the watch point is hit (the watch point >>> is on address &cleanups->base.prefix.num >>> >>> David >>> >>> #0 memset () at ../sysdeps/x86_64/memset.S:336 >>> #1 0x0000000000d1528d in poison_pages () at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/ggc-page.c:1983 >>> #2 0x0000000000d15424 in ggc_collect () at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/ggc-page.c:2076 >>> #3 0x0000000001028d7f in cgraph_finalize_function >>> (decl=0x7ffff577d600, nested=0 '\000') at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cgraphunit.c:376 >> >> Hm. We already conditionally arrange for cgraph_finalize_function to not >> call ggc_collect - so it seems that doing so is even less safe than >> originally >> thought. >> >> Which means I think we should push calling ggc_collect to the callers, >> which for the C++ frontend means ... >> >>> #4 0x0000000000988010 in expand_or_defer_fn (fn=0x7ffff577d600) at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/semantics.c:3797 >>> #5 0x0000000000a678a7 in maybe_clone_body (fn=0x7ffff5770700) at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/optimize.c:426 >>> #6 0x0000000000987aa3 in expand_or_defer_fn_1 (fn=0x7ffff5770700) at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/semantics.c:3722 >>> #7 0x0000000000987fe0 in expand_or_defer_fn (fn=0x7ffff5770700) at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/semantics.c:3792 >>> #8 0x000000000091c5f5 in synthesize_method (fndecl=0x7ffff5770700) at >>> /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/method.c:773 >>> #9 0x0000000000551fa0 in cp_finish_decl (decl=0x7ffff5770700, >>> init=0x7ffff6d8f898, init_const_expr_p=0 '\000', asmspec_tree=0x0, >>> flags=11) at /usr/local/google/davidxl/dev/gcc/tot/gcc/cp/decl.c:6286 >> >> ... probably here. Though I'd also approve a patch that simply removes >> the ggc_collect call (and the nested parameter). Honza - you probably >> added the ggc_collect - what's the reason to do it in this lowlevel place? >> >> Thanks, >> Richard. >> >