Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Mar 2015 22:56:30 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        freebsd-ports@freebsd.org, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   powerpc64 10.1-STABLE context; cmake's /usr/local/bin/ctest broken but graphics/png configuration defaults use it
Message-ID:  <A57B3364-B573-45A1-8970-D0E69DE0671A@dsl-only.net>

next in thread | raw e-mail | index | archive | help
powerpc64 context (more details are listed much later):

$ freebsd-version -ku; uname -a
10.1-STABLE
10.1-STABLE
FreeBSD FBSDG5S0 10.1-STABLE FreeBSD 10.1-STABLE #0 r279507M: Fri Mar  6 =
23:08:59 PST 2015     root@FBSDG5S0:/usr/obj/usr/src/sys/GENERIC64vtsc  =
powerpc

Ports Revision 380683 via svnlite update. I've been using portmaster.


The problem (which I've not figured out yet)...

When png-1.6.16 has PNGTEST enabled (default and "recommended") it tries =
to use cmake's /usr/local/bin/ctest. But in my context ctest is broken, =
trying to reserve 2305843009213693952 Hashtable_node<...>*'s [see #8's =
...::reserve (..., __n=3D...) below] when _M_initialize_buckets(..., =
__n=3D100) in #9. (Note: 2305843009213693952 =3D=3D 0x2000000000000000.) =
I have yet to figure out how that magic number is becoming involved. See =
below from one of the crash dumps:

#0  0x0000000050d17298 in .__sys_thr_kill () from /lib/libc.so.7
[New Thread 51c06400 (LWP 100091/ctest)]
(gdb) bt
#0  0x0000000050d17298 in .__sys_thr_kill () from /lib/libc.so.7
#1  0x0000000050d171ac in .__raise () from /lib/libc.so.7
#2  0x0000000050d15788 in .abort () from /lib/libc.so.7
#3  0x00000000514c9ae0 in ._ZN9__gnu_cxx27__verbose_terminate_handlerEv =
() from /usr/lib/libsupc++.so.1
#4  0x00000000514cf1d8 in ._ZSt14set_unexpectedPFvvE () from =
/usr/lib/libsupc++.so.1
#5  0x00000000514cf230 in ._ZSt9terminatev () from =
/usr/lib/libsupc++.so.1
#6  0x00000000514cf0dc in .__cxa_throw () from /usr/lib/libsupc++.so.1
#7  0x0000000050ab4e54 in ._ZSt20__throw_length_errorPKc () from =
/usr/lib/libstdc++.so.6
#8  0x000000001024659c in =
std::vector<cmsys::_Hashtable_node<std::pair<std::string const, =
cmDefinitions::Def> >*, =
std::allocator<cmsys::_Hashtable_node<std::pair<std::string const, =
cmDefinitions::Def> >*> >::reserve (this=3D0xffffffffffffb108, =
__n=3D2305843009213693952) at vector.tcc:72
#9  0x00000000104749bc in cmsys::hashtable<std::pair<std::string const, =
cmDefinitions::Def>, std::string, cmsys::hash<std::string>, =
cmsys::hash_select1st<std::string const, cmDefinitions::Def>, =
std::equal_to<std::string>, std::allocator<char> =
>::_M_initialize_buckets (this=3D0xffffffffffffb100, __n=3D100) at =
hashtable.hxx:797
#10 0x0000000010474ae4 in hashtable (this=3D0xffffffffffffb100, __n=3D100,=
 __hf=3D@0xffffffffffffaeb2, __eql=3D@0xffffffffffffaeb1, =
__a=3D@0xffffffffffffaeb0) at hashtable.hxx:545
#11 0x0000000010474bb8 in hash_map (this=3D0xffffffffffffb100) at =
hash_map.hxx:113
#12 0x0000000010472ba4 in cmDefinitions (this=3D0xffffffffffffb0f8, =
parent=3D0x0) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmDefinit=
ions.cxx:19
#13 0x000000001020dc40 in cmMakefile (this=3D0x51cb1800) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmMakefil=
e.cxx:56
#14 0x00000000101efb0c in cmLocalGenerator::SetGlobalGenerator =
(this=3D0x51c3f480, gg=3D0xffffffffffffc138) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmLocalGe=
nerator.cxx:244
#15 0x00000000101874b0 in cmGlobalGenerator::CreateLocalGenerator =
(this=3D0xffffffffffffc138) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmGlobalG=
enerator.cxx:1906
#16 0x00000000100224dc in cmCTest::Initialize (this=3D0xffffffffffffcf50, =
binary_dir=3D0x51c890f8 =
"/usr/obj/portswork/usr/ports/graphics/png/work/libpng-1.6.16", =
command=3D0x0)
    at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmCTest.c=
xx:511
#17 0x000000001002c704 in cmCTest::Run (this=3D0xffffffffffffcf50, =
args=3D@0xffffffffffffcb80, output=3D0xffffffffffffcb98) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/cmCTest.c=
xx:2474
#18 0x0000000010010c10 in main (argc=3D2, argv=3D0x51c1a040) at =
/usr/obj/portswork/usr/ports/devel/cmake/work/cmake-3.1.3/Source/ctest.cxx=
:189
#19 0x000000001000fc9c in ._start ()
#20 0x000000005074c8a0 in .text () from /libexec/ld-elf.so.1

The specific Makefile code to invoke ctest is...

# Special rule for the target test
test:
        @$(CMAKE_COMMAND) -E cmake_echo_color --switch=3D$(COLOR) --cyan =
"Running tests..."
        /usr/local/bin/ctest --force-new-ctest-process $(ARGS)
.PHONY : test
       =20
# Special rule for the target test
test/fast: test
.PHONY : test/fast

which because of ctest's problem leads to...

...
Linking C executable pngvalid
[100%] Built target pngvalid
(cd /usr/obj/portswork/usr/ports/graphics/png/work/libpng-1.6.16; if ! =
/usr/bin/env =
XDG_DATA_HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work  =
XDG_CONFIG_HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work  =
HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work TMPDIR=3D"/tmp" =
XDG_DATA_HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work  =
XDG_CONFIG_HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work  =
HOME=3D/usr/obj/portswork/usr/ports/graphics/png/work TMPDIR=3D"/tmp" =
DONTSTRIP=3Dyes NO_PIE=3Dyes SHELL=3D/bin/sh NO_LINT=3DYES =
PREFIX=3D/usr/local  LOCALBASE=3D/usr/local  LIBDIR=3D"/usr/lib"  =
CC=3D"cc" CFLAGS=3D"-pipe  -g -fno-strict-aliasing"  CPP=3D"cpp" =
CPPFLAGS=3D""  LDFLAGS=3D"" LIBS=3D""  CXX=3D"c++" CXXFLAGS=3D"-pipe -g =
-fno-strict-aliasing "  MANPREFIX=3D"/usr/local" =
BSD_INSTALL_PROGRAM=3D"install   -o root -g wheel -m 555"  =
BSD_INSTALL_LIB=3D"install   -o root -g wheel -m 444"  =
BSD_INSTALL_SCRIPT=3D"install  -o root -g wheel -m 555"  =
BSD_INSTALL_DATA=3D"install  -o root -g wheel -m 0644"  =
BSD_INSTALL_MAN=3D"install  -o root -g wheel -m 444" /usr/bin/make -f =
Makefile -j4 =
DESTDIR=3D/usr/obj/portswork/usr/ports/graphics/png/work/stage test; =
then  if [ x !=3D xTry to set MAKE_JOBS_UNSAFE=3Dyes and rebuild before =
reporting the failure to the maintainer. ] ; then  echo "=3D=3D=3D> =
Compilation failed unexpectedly.";  (echo Try to set =
MAKE_JOBS_UNSAFE=3Dyes and rebuild before reporting the failure to the =
maintainer.) | /usr/bin/fmt 75 79 ;  fi;  false;  fi)
Running tests...
terminate called after throwing an instance of 'std::length_error'
  what():  vector::reserve
Abort trap (core dumped)
*** [test] Error code 134

make[2]: stopped in =
/usr/obj/portswork/usr/ports/graphics/png/work/libpng-1.6.16
1 error

make[2]: stopped in =
/usr/obj/portswork/usr/ports/graphics/png/work/libpng-1.6.16
[: xTry: unexpected operator
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/graphics/png
*** Error code 1

Stop.
make: stopped in /usr/ports/graphics/png


Even just ctest as a command gets the vector::reserve size problem from =
the large magic number:

$ ctest
*********************************
No test configuration file found!
*********************************
terminate called after throwing an instance of 'std::length_error'
  what():  vector::reserve
Abort trap (core dumped)


[So far I've only sidestepped having graphic/png run ctest to allow some =
things that depend on graphics/png to not be blocked by this.]




For my context the overall environment has (but ports might force other =
ports as alternatives to):

# more /etc/make.conf
#CPP=3Dclang-cpp
#CC=3Dclang
#CXX=3Dclang++
WRKDIRPREFIX=3D/usr/obj/portswork
WITH_DEBUG=3D
MALLOC_PRODUCTION=3D

# more /etc/src.conf
#CPP=3Dclang-cpp
#CC=3Dclang
#CXX=3Dclang++
#CFLAGS+=3D-DELF_VERBOSE
#WITH_DEBUG_FILES=3D
#WITHOUT_CLANG

# which cc
/usr/bin/cc

# cc --version
cc (GCC) 4.2.1 20070831 patched [FreeBSD]
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is =
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR =
PURPOSE.

# which clang
/usr/bin/clang

# clang --version
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: powerpc64-unknown-freebsd10.1
Thread model: posix





Other context details:

$ cd /usr/ports
$ svnlite info
Path: .
Working Copy Root Path: /usr/ports
URL: https://svn0.us-west.freebsd.org/ports/head
Relative URL: ^/head
Repository Root: https://svn0.us-west.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 380683
Node Kind: directory
Schedule: normal
Last Changed Author: demon
Last Changed Rev: 380683
Last Changed Date: 2015-03-07 03:31:11 -0800 (Sat, 07 Mar 2015)

$ svnlite st --no-ignore
?       .snap
I       distfiles
M       graphics/libGL/bsd.mesalib.mk
I       packages
?       restoresymtable

$ svnlite diff graphics/libGL/bsd.mesalib.mk
Index: graphics/libGL/bsd.mesalib.mk
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- graphics/libGL/bsd.mesalib.mk	(revision 380683)
+++ graphics/libGL/bsd.mesalib.mk	(working copy)
@@ -136,6 +136,10 @@
CONFIGURE_ARGS+=3D--enable-vdpau
.endif

+.if ${ARCH} =3D=3D powerpc64
+CFLAGS+=3D	-mminimal-toc
+.endif
+
post-patch:
	@${REINPLACE_CMD} -e 's|-ffast-math|${FAST_MATH}|' -e =
's|x86_64|amd64|' \
		${WRKSRC}/configure

$ cd /usr/src
$ svnlite info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/stable/10
Relative URL: ^/stable/10
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 279507
Node Kind: directory
Schedule: normal
Last Changed Author: ngie
Last Changed Rev: 279507
Last Changed Date: 2015-03-01 14:12:24 -0800 (Sun, 01 Mar 2015)

$ svnlite st --no-ignore
?       .snap
?       restoresymtable
M       sys/ddb/db_main.c
M       sys/ddb/db_script.c
I       sys/powerpc/conf/GENERIC64vtsc
I       sys/powerpc/conf/GENERICvtsc
M       sys/powerpc/ofw/ofw_machdep.c
M       sys/powerpc/ofw/ofwcall64.S
M       sys/powerpc/powerpc/dump_machdep.c

sys/powerpc/ofw/ofw_machdep.c has a PowerMac G5 specific change to avoid =
intermittent boot problems.

sys/ddb/... and sys/powerpc/ofw/ofwcall64.S are just to help me get =
evidence if I do end up with another early-boot failure. DDB and GDB are =
listed in sys/powerpc/conf/GENERIC64vtsc for the same reason.

sys/powerpc/powerpc/dump_machdep.c is from me forcing the DMA transfer =
size for dumps to be small enough not to be rejected as too large of a =
DMA request size.

sys/powerpc/conf/GENERIC64vtsc turns off ps3 in order to turn on both vt =
and sc. It includes the standard GENERIC64.

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A57B3364-B573-45A1-8970-D0E69DE0671A>