Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Mar 2019 13:12:10 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>
Subject:   FYI on powerpc64: an apparent ctfmerge unbounded recursion error on kernel.full built by system clang (7) and devel/powerpc64-binutils ?
Message-ID:  <6277E1EE-59C6-4A84-8714-9E0BFFB02A75@yahoo.com>

next in thread | raw e-mail | index | archive | help
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
=3D> 0x0000000010006588 <+4>:	std     r31,-8(r1)
   0x000000001000658c <+8>:	std     r0,16(r1)
. . .
(gdb) info threads
  Id   Target Id         Frame=20
* 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=3D0x81cfc28b0, =
arg=3D0x3fffffffdf9fc128) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:187
#1  0x0000000010008250 in list_iter (list=3D0x81cfc28b0, func=3D<optimized=
 out>, private=3D0x3fffffffdf9fc128) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/common/list.c:127
#2  0x0000000010006538 in hash_match (hash=3D0x81711dc40, key=3D<optimized=
 out>, fun=3D@0x100f5360: 0x10006584 <hash_find_first_cb>, =
private=3D0x81711dc40)
    at /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:149
#3  hash_find (hash=3D<optimized out>, key=3D<optimized out>, =
value=3D<optimized out>) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/hash.c:207
#4  0x0000000010000cb8 in alist_find (alist=3D<optimized out>, =
name=3D<optimized out>, value=3D0x3fffffffdf9fc280) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/alist.c:130
#5  0x000000001000a290 in get_mapping (ta=3D<optimized out>, =
srcid=3D<optimized out>) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:195
#6  equiv_node (ctdp=3D0x81c109180, mtdp=3D0x81df6dfc0, =
ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:365
#7  0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#8  0x000000001000a34c in equiv_node (ctdp=3D0x81c10b740, =
mtdp=3D0x81df7a1c0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#9  0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#10 0x000000001000a34c in equiv_node (ctdp=3D0x81c1091c0, =
mtdp=3D0x81df7a000, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#11 0x000000001000a34c in equiv_node (ctdp=3D0x81c109180, =
mtdp=3D0x81df6dfc0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#12 0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#13 0x000000001000a34c in equiv_node (ctdp=3D0x81c10b740, =
mtdp=3D0x81df7a1c0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#14 0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#15 0x000000001000a34c in equiv_node (ctdp=3D0x81c1091c0, =
mtdp=3D0x81df7a000, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#16 0x000000001000a34c in equiv_node (ctdp=3D0x81c109180, =
mtdp=3D0x81df6dfc0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#17 0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#18 0x000000001000a34c in equiv_node (ctdp=3D0x81c10b740, =
mtdp=3D0x81df7a1c0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#19 0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:291
#20 0x000000001000a34c in equiv_node (ctdp=3D0x81c1091c0, =
mtdp=3D0x81df7a000, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#21 0x000000001000a34c in equiv_node (ctdp=3D0x81c109180, =
mtdp=3D0x81df6dfc0, ed=3D0x3fffffffdfbfa1f8) at =
/usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c:384
#22 0x0000000010009290 in equiv_su (stdp=3D<optimized out>, =
ttdp=3D<optimized out>, ed=3D0x3fffffffdfbfa1f8) 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)=20
#13080 0x0000000010005864 in .worker_thread ()
(gdb)=20
#13079 0x0000000010008900 in .merge_into_master ()
(gdb)=20
#13078 0x00000000100060c8 in .hash_iter ()
(gdb)=20
#13077 0x0000000010008250 in .list_iter ()
(gdb)=20
#13076 0x0000000010009794 in .merge_type_cb ()
(gdb)=20
#13075 0x000000001000d500 in .iitraverse ()
(gdb)=20
#13074 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13073 0x000000001000d654 in .tdtrav_plain ()
(gdb)=20
#13072 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13071 0x000000001000d654 in .tdtrav_plain ()
(gdb)=20
#13070 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13069 0x000000001000d764 in .tdtrav_func ()
(gdb)=20
#13068 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13067 0x000000001000d654 in .tdtrav_plain ()
(gdb)=20
#13066 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13065 0x000000001000d7f8 in .tdtrav_su ()
(gdb)=20
#13064 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13063 0x000000001000d654 in .tdtrav_plain ()
(gdb)=20
#13062 0x000000001000d320 in .tdtraverse ()
(gdb)=20
#13061 0x000000001000d7f8 in .tdtrav_su ()
(gdb)=20
#13060 0x000000001000d368 in .tdtraverse ()
(gdb)=20
#13059 0x000000001000a468 in .map_td_tree_post ()
(gdb)=20
#13058 0x00000000100063dc in .hash_find_iter ()
(gdb)=20
#13057 0x0000000010008250 in .list_iter ()
(gdb)=20
#13056 0x0000000010006494 in .hash_find_list_cb ()
(gdb)=20
#13055 0x000000001000a0dc in .equiv_cb ()
(gdb)=20
#13054 0x000000001000a34c in .equiv_node ()
(gdb)=20
#13053 0x000000001000a34c in .equiv_node ()
(gdb)=20
#13052 0x0000000010009290 in .equiv_su ()
(gdb)=20
#13051 0x000000001000a34c in .equiv_node ()
(gdb)=20
#13050 0x0000000010009290 in .equiv_su ()
(gdb)=20
#13049 0x000000001000a34c in .equiv_node ()
(gdb)=20
#13048 0x000000001000a34c in .equiv_node ()
(gdb)=20
#13047 0x0000000010009290 in .equiv_su ()
(gdb)=20
#13046 0x000000001000a34c in .equiv_node ()
. . .


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6277E1EE-59C6-4A84-8714-9E0BFFB02A75>