FYI on powerpc64: an apparent ctfmerge unbounded recursion error on kernel.full built by system clang (7) and devel/powerpc64-binutils ?

Mark Millard via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc,gmane.os.freebsd.devel.toolchain
Message-ID <[email protected]>
The context here is head -r344018 based that was built via
devel/powerpc64-xtoolchain-gcc facilities (that included
building system clang 7). I attempted to have a
system-clang based buildworld buildkernel that used
/usr/local/powerpc64-unknown-freebsd13.0/bin/ld and such.

Until I can synchronize and test a more modern head
(including an updated clang) and ports, the below is
probably just informational in case someone else runs into
something similar.

The:

ctfmerge -L VERSION -g -o kernel.full locore.o cam.o cam_compat.o cam_iosched.o

got a segmentation fault but gdb shows over 13,000
levels of subroutine calls and a stack-access related
failure:


# gdb /usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/powerpc.powerpc64/tmp/usr/bin/ctfmerge /usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/powerpc.powerpc64/sys/GENERIC64vtsc-NODBG/ctfmerge.57350.core
. . .
Core was generated by `ctfmerge -L VERSION -g -o kernel.full locore.o cam.o cam_compat.o cam_iosched.o'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000010006588 in .hash_find_first_cb ()
[Current thread is 1 (LWP 100604)]
(gdb) info reg r1
r1             0x3fffffffdf9fc000  4611686017884209152
(gdb) disass
Dump of assembler code for function .hash_find_first_cb:
   0x0000000010006584 <+0>:	mflr    r0
=> 0x0000000010006588 <+4>:	std     r31,-8(r1)
   0x000000001000658c <+8>:	std     r0,16(r1)
. . .
(gdb) info threads
  Id   Target Id         Frame 
* 1    LWP 100604        0x0000000010006588 in .hash_find_first_cb ()
  2    LWP 100220        0x0000000010045f88 in .__sys.umtx_op ()
  3    LWP 100602        0x0000000010045f84 in .__sys.umtx_op ()
  4    LWP 100603        0x0000000010045f84 in .__sys.umtx_op ()
  5    LWP 100605        0x0000000010045f84 in .__sys.umtx_op ()
  6    LWP 100606        0x0000000010045f84 in .__sys.umtx_op ()(gdb) bt
#0  0x0000000010006588 in hash_find_first_cb (node=0x81cfc28b0, arg=0x3fffffffdf9fc128) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:187
#1  0x0000000010008250 in list_iter (list=0x81cfc28b0, func=<optimized out>, private=0x3fffffffdf9fc128) at /usr/src/cddl/contrib/opensolaris/tools/ctf/common/list.c:127
#2  0x0000000010006538 in hash_match (hash=0x81711dc40, key=<optimized out>, fun=@0x100f5360: 0x10006584 <hash_find_first_cb>, private=0x81711dc40)
    at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:149
#3  hash_find (hash=<optimized out>, key=<optimized out>, value=<optimized out>) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:207
#4  0x0000000010000cb8 in alist_find (alist=<optimized out>, name=<optimized out>, value=0x3fffffffdf9fc280) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/alist.c:130
#5  0x000000001000a290 in get_mapping (ta=<optimized out>, srcid=<optimized out>) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:195
#6  equiv_node (ctdp=0x81c109180, mtdp=0x81df6dfc0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:365
#7  0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#8  0x000000001000a34c in equiv_node (ctdp=0x81c10b740, mtdp=0x81df7a1c0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#9  0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#10 0x000000001000a34c in equiv_node (ctdp=0x81c1091c0, mtdp=0x81df7a000, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#11 0x000000001000a34c in equiv_node (ctdp=0x81c109180, mtdp=0x81df6dfc0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#12 0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#13 0x000000001000a34c in equiv_node (ctdp=0x81c10b740, mtdp=0x81df7a1c0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#14 0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#15 0x000000001000a34c in equiv_node (ctdp=0x81c1091c0, mtdp=0x81df7a000, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#16 0x000000001000a34c in equiv_node (ctdp=0x81c109180, mtdp=0x81df6dfc0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#17 0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#18 0x000000001000a34c in equiv_node (ctdp=0x81c10b740, mtdp=0x81df7a1c0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#19 0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#20 0x000000001000a34c in equiv_node (ctdp=0x81c1091c0, mtdp=0x81df7a000, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#21 0x000000001000a34c in equiv_node (ctdp=0x81c109180, mtdp=0x81df6dfc0, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#22 0x0000000010009290 in equiv_su (stdp=<optimized out>, ttdp=<optimized out>, ed=0x3fffffffdfbfa1f8) at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
. . .

Going the other way:
. . .
#13082 0x0000000000000000 in ?? ()
(gdb) down
#13081 0x0000000010035010 in .thread_start ()
(gdb) 
#13080 0x0000000010005864 in .worker_thread ()
(gdb) 
#13079 0x0000000010008900 in .merge_into_master ()
(gdb) 
#13078 0x00000000100060c8 in .hash_iter ()
(gdb) 
#13077 0x0000000010008250 in .list_iter ()
(gdb) 
#13076 0x0000000010009794 in .merge_type_cb ()
(gdb) 
#13075 0x000000001000d500 in .iitraverse ()
(gdb) 
#13074 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13073 0x000000001000d654 in .tdtrav_plain ()
(gdb) 
#13072 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13071 0x000000001000d654 in .tdtrav_plain ()
(gdb) 
#13070 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13069 0x000000001000d764 in .tdtrav_func ()
(gdb) 
#13068 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13067 0x000000001000d654 in .tdtrav_plain ()
(gdb) 
#13066 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13065 0x000000001000d7f8 in .tdtrav_su ()
(gdb) 
#13064 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13063 0x000000001000d654 in .tdtrav_plain ()
(gdb) 
#13062 0x000000001000d320 in .tdtraverse ()
(gdb) 
#13061 0x000000001000d7f8 in .tdtrav_su ()
(gdb) 
#13060 0x000000001000d368 in .tdtraverse ()
(gdb) 
#13059 0x000000001000a468 in .map_td_tree_post ()
(gdb) 
#13058 0x00000000100063dc in .hash_find_iter ()
(gdb) 
#13057 0x0000000010008250 in .list_iter ()
(gdb) 
#13056 0x0000000010006494 in .hash_find_list_cb ()
(gdb) 
#13055 0x000000001000a0dc in .equiv_cb ()
(gdb) 
#13054 0x000000001000a34c in .equiv_node ()
(gdb) 
#13053 0x000000001000a34c in .equiv_node ()
(gdb) 
#13052 0x0000000010009290 in .equiv_su ()
(gdb) 
#13051 0x000000001000a34c in .equiv_node ()
(gdb) 
#13050 0x0000000010009290 in .equiv_su ()
(gdb) 
#13049 0x000000001000a34c in .equiv_node ()
(gdb) 
#13048 0x000000001000a34c in .equiv_node ()
(gdb) 
#13047 0x0000000010009290 in .equiv_su ()
(gdb) 
#13046 0x000000001000a34c in .equiv_node ()
. . .


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ppc
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.