FYI on powerpc64: an apparent ctfmerge unbounded recursion error on kernel.full built by system clang (7) and devel/powerpc64-binutils ?
Mark Millard
marklmi at yahoo.com
Tue Mar 5 21:12:17 UTC 2019
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)
More information about the freebsd-ppc
mailing list