It looks like _Settings is miscompiled, or more specifically a function descriptor has a bogus value
0x100bcbac <_ZN14__gnu_parallel9_SettingsC1Ev>: addi r12,r2,-168 0x100bcbb0 <_ZN14__gnu_parallel9_SettingsC1Ev+4>: stw r2,20(r1) 0x100bcbb4 <_ZN14__gnu_parallel9_SettingsC1Ev+8>: lwz r0,0(r12) 0x100bcbb8 <_ZN14__gnu_parallel9_SettingsC1Ev+12>: lwz r2,4(r12) 0x100bcbbc <_ZN14__gnu_parallel9_SettingsC1Ev+16>: mtctr r0 => 0x100bcbc0 <_ZN14__gnu_parallel9_SettingsC1Ev+20>: bctr (gdb) x/x $r2-168 0x3002f90c <__dbargs+11440>: 0x100bcbac (gdb) x/x $r12 0x3002f90c <__dbargs+11440>: 0x100bcbac (gdb) p/x $ctr $5 = 0x100bcbac For some reason, the additional inlining is creating the wrong address for the target. - David On Mon, Jun 16, 2014 at 6:06 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >> On Mon, Jun 16, 2014 at 12:35 AM, Jan Hubicka <hubi...@ucw.cz> wrote: >> >> > @@ -512,9 +516,9 @@ function_and_variable_visibility (bool w >> > next = next->same_comdat_group) >> > { >> > next->set_comdat_group (NULL); >> > - if (!next->alias) >> > - next->set_section (NULL); >> > symtab_make_decl_local (next->decl); >> > + if (!node->alias) >> > + node->reset_section (); >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> > next->unique_name = ((next->resolution == >> > LDPR_PREVAILING_DEF_IRONLY >> > || next->unique_name >> > || next->resolution == >> > LDPR_PREVAILING_DEF_IRONLY_EXP) >> >> Honza, did you really intend to change the above from next->alias and >> next->set_section () to node->alias and node->reset_section () ? That >> doesn't look right. > > You are right, this is a pasto in anoying code duplication here. I fixed that > in my local copy of the patch. I have a followup patch in the ipa-visibility > TLC to merge the code duplication here, I am just holding it until we debug > the > issues. > > This bug will not affect AIX, becuase there are no comdat groups. It only > wastes a bit of code size on ELF systems because of extra alignment coming > from the named section. > > The hang happens in > (gdb) bt > #0 0x100be244 in __gnu_parallel::_Settings::_Settings() () > #1 0x10008d54 in _GLOBAL__FI_libstdc___so () > #2 0x10008e88 in _GLOBAL__AIXI_libstdc___so () > #3 0x100be954 in _GLOBAL__FI_genconstants () > #4 0xd017fa54 in mod_init1 () from /usr/lib/libc.a(shr.o) > #5 0xd017f774 in __modinit () from /usr/lib/libc.a(shr.o) > #6 0x100001a0 in __start () > > I suppose it may be crtbegin/crtend miscompile. Any insight would be welcome, > otherwise I will try to progress on debugging tonight or tomorrow. > > Honza