Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Oct 2018 20:42:27 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, freeBSD <freebsd-hackers@freebsd.org>
Subject:   head -r339076 amd64 -> armv7 port cross build attempt with native tools involved: hangs between a cc (wait) and its child ld (uwait)
Message-ID:  <33C58480-1E76-4748-83B4-CB39FAD8584A@yahoo.com>

next in thread | raw e-mail | index | archive | help
In trying to amd64 -> armv7 cross build ports via poudriere-devel
use with native cross tools involved (and UFS, not ZFS), I'm
getting about 117 ports that built and then one that ends up stuck
in wait/uwait . ^C to poudriere and restarting it repeats the
stuck behavior at the same point (a cc and its ld), for example:


[00:02:51] [01] [00:00:00] Building print/texinfo | texinfo-6.5,1

ps output extraction (blank lines added for each of
scanning):

UID   PID  PPID CPU PRI NI    VSZ   RSS MWCHAN STAT TT     TIME COMMAND
. . .
  0 42312 32181   0  52  0  12904  3904 select I     1  0:00.02 sh: =
poudriere[FBSDFSSDjailArmV7-default][01]: build_pkg (texinfo-6.5,1) (sh)
  0 42974 42312   0  52  0  12904  3900 wait   I     1  0:00.00 sh: =
poudriere[FBSDFSSDjailArmV7-default][01]: build_pkg (texinfo-6.5,1) (sh)
  0 42975 42974   0  52  0  10408  1840 wait   IJ    1  0:00.01 =
/usr/bin/make -C /usr/ports/print/texinfo configure
  0 43077 42975   0  52  0  10252  1792 wait   IJ    1  0:00.00 /bin/sh =
-e -c (cd /wrkdirs/usr/ports/print/texinfo/work/texinfo-6.5 &&  =
_LATE_CONFIGURE_ARGS=3D"" ;  if [ -z "" ] &&  ./configure --help=20
  0 43375 43077   0  52  0  11164  2392 wait   IJ    1  0:00.19 /bin/sh =
./configure --enable-nls --prefix=3D/usr/local --localstatedir=3D/var =
--mandir=3D/usr/local/man --disable-silent-rules --infodir=3D/usr
  0 46850 43375   0  52  0  11164  2388 wait   IJ    1  0:00.00 /bin/sh =
./configure --enable-nls --prefix=3D/usr/local --localstatedir=3D/var =
--mandir=3D/usr/local/man --disable-silent-rules --infodir=3D/usr
  0 46857 46850   0  52  0  11080  2060 wait   IJ    1  0:00.04 /bin/sh =
./configure --disable-option-checking --prefix=3D/usr/local --enable-nls =
--localstatedir=3D/var --mandir=3D/usr/local/man --disable-s

  0 47796 46857   0  52  0 113840 26184 wait   IJ    1  0:00.15 =
/usr/local/bin/qemu-arm-static /usr/bin/cc -o conftest -O2 -pipe =
-mcpu=3Dcortex-a7 -DLIBICONV_PLUG -g -fno-strict-aliasing -mcpu=3Dcortex-a=


  0 47801 47796   0  52  0 285300 39672 uwait  IJ    1  0:00.22 =
qemu-arm-static -L /usr/gnemul/qemu-arm /usr/bin/ld --eh-frame-hdr =
-dynamic-linker /libexec/ld-elf.so.1 --hash-style=3Dboth --enable-new-

So the "/usr/local/bin/qemu-arm-static /usr/bin/cc . . ."
creates the child "qemu-arm-static -L /usr/gnemul/qemu-arm /usr/bin/ld . =
. ."
process and the two get hung up. Letting it sit for long periods does
not let it progress.

The full commands are (note the "-pipe" vs. the =
"/tmp/conftest-6c0832.o"):

/usr/local/bin/qemu-arm-static /usr/bin/cc -o conftest -O2 -pipe =
-mcpu=3Dcortex-a7 -DLIBICONV_PLUG -g -fno-strict-aliasing =
-mcpu=3Dcortex-a7 -DLIBICONV_PLUG conftest.c

and:

qemu-arm-static -L /usr/gnemul/qemu-arm /usr/bin/ld --eh-frame-hdr =
-dynamic-linker /libexec/ld-elf.so.1 --hash-style=3Dboth =
--enable-new-dtags -o conftest /usr/lib/crt1.o /usr/lib/crti.o =
/usr/lib/crtbegin.o -L/usr/lib /tmp/conftest-6c0832.o -lgcc --as-needed =
-lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed =
/usr/lib/crtend.o /usr/lib/crtn.o

For reference for /tmp/conftest-6c0832.o :

# ls -lTd =
/usr/local/poudriere/data/.m/FBSDFSSDjailArmV7-default/01/tmp/conftest-6c0=
832.o
-rw-r--r--  1 root  wheel  4204 Oct 26 17:33:13 2018 =
/usr/local/poudriere/data/.m/FBSDFSSDjailArmV7-default/01/tmp/conftest-6c0=
832.o

(I'm not using tmpfs or the like at all.)


The context is based on head -r339076 an is on a
Ryzen Threadripper 1950X system, natively booted
(not Hyper-V). (I've not tried under Hyper-V yet.)

Note: I have built ports similarly before --but the
last time was back in March-May sometime.

# poudriere jail -jFBSDFSSDjailArmV7 -i
Jail name:         FBSDFSSDjailArmV7
Jail version:      12.0-ALPHA8
Jail arch:         arm.armv7
Jail method:       null
Jail mount:        /usr/obj/DESTDIRs/clang-armv7-installworld-poud
Jail fs:          =20
Jail updated:      2018-10-26 16:42:55
Tree name:         default
Tree method:       null
Status:            parallel_build:
Building started:  2018-10-26 17:29:36
Elapsed time:      02:47:50
Packages built:    0
Packages failed:   0
Packages ignored:  0
Packages skipped:  0
Packages total:    84
Packages left:     84

# poudriere ports -l
PORTSTREE METHOD TIMESTAMP           PATH
default   null   2017-08-14 21:07:05 /usr/ports


I have yet to think of a way to look into this or to work around
it. But my long running build on an Orange Pi Plus 2nd Edition
has finished so I'll update from that for now.

=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?33C58480-1E76-4748-83B4-CB39FAD8584A>