Bug 1379632

Summary: fails to link on s390x
Product: [Fedora] Fedora Reporter: Dan Horák <dan>
Component: tbbAssignee: Jiri Kastner <cz172638>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 25CC: c.david86, cz172638, dakingun, deekej, loganjerry, me, nphilipp, richmattes, taylor, xjakub
Target Milestone: ---   
Target Release: ---   
Hardware: s390x   
OS: Unspecified   
Whiteboard:
Fixed In Version: tbb-2017-3.20160916.fc25 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-10-12 18:58:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 467765    

Description Dan Horák 2016-09-27 09:24:23 UTC
ceres-solver fails to build on s390x due missing symbols when linking

...
[ 44%] Linking CXX executable ../bin/ellipse_approximation
cd /builddir/build/BUILD/ceres-solver-1.11.0/build/examples && /usr/bin/cmake -E cmake_link_script CMakeFiles/ellipse_approximation.dir/link.txt --verbose=1
/usr/bin/c++   -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -march=z9-109 -mtune=z10  -fopenmp -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers -DNDEBUG    -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld CMakeFiles/ellipse_approximation.dir/ellipse_approximation.cc.o  -o ../bin/ellipse_approximation -rdynamic ../lib/libceres.so.1.11.0 -lglog -Wl,-rpath,/builddir/build/BUILD/ceres-solver-1.11.0/build/lib 
/usr/lib64/libspqr.so.2: undefined reference to `tbb::internal::allocate_child_proxy::allocate(unsigned long) const'
/usr/lib64/libspqr.so.2: undefined reference to `tbb::task_scheduler_init::initialize(int, unsigned long)'
/usr/lib64/libspqr.so.2: undefined reference to `tbb::internal::allocate_root_proxy::allocate(unsigned long)'
collect2: error: ld returned 1 exit status
examples/CMakeFiles/ellipse_approximation.dir/build.make:99: recipe for target 'bin/ellipse_approximation' failed
make[2]: *** [bin/ellipse_approximation] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/ceres-solver-1.11.0/build'
CMakeFiles/Makefile2:3037: recipe for target 'examples/CMakeFiles/ellipse_approximation.dir/all' failed
make[1]: *** [examples/CMakeFiles/ellipse_approximation.dir/all] Error 2
[ 45%] Linking CXX shared library ../../lib/libtest_util.so
cd /builddir/build/BUILD/ceres-solver-1.11.0/build/internal/ceres && /usr/bin/cmake -E cmake_link_script CMakeFiles/test_util.dir/link.txt --verbose=1
/usr/bin/c++  -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -march=z9-109 -mtune=z10  -fopenmp -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers -DNDEBUG   -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -shared -Wl,-soname,libtest_util.so -o ../../lib/libtest_util.so CMakeFiles/test_util.dir/evaluator_test_utils.cc.o CMakeFiles/test_util.dir/numeric_diff_test_utils.cc.o CMakeFiles/test_util.dir/test_util.cc.o ../../lib/libceres.so.1.11.0 ../../lib/libgtest.so -lglog /usr/lib64/libgflags.so.2.1.2 -lpthread -Wl,-rpath,/builddir/build/BUILD/ceres-solver-1.11.0/build/lib 
make[2]: Leaving directory '/builddir/build/BUILD/ceres-solver-1.11.0/build'
[ 45%] Built target test_util
[ 46%] Linking CXX executable ../bin/more_garbow_hillstrom
cd /builddir/build/BUILD/ceres-solver-1.11.0/build/examples && /usr/bin/cmake -E cmake_link_script CMakeFiles/more_garbow_hillstrom.dir/link.txt --verbose=1
/usr/bin/c++   -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -march=z9-109 -mtune=z10  -fopenmp -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers -DNDEBUG    -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld CMakeFiles/more_garbow_hillstrom.dir/more_garbow_hillstrom.cc.o  -o ../bin/more_garbow_hillstrom -rdynamic ../lib/libceres.so.1.11.0 /usr/lib64/libgflags.so.2.1.2 -lglog -lpthread -Wl,-rpath,/builddir/build/BUILD/ceres-solver-1.11.0/build/lib 
/usr/lib64/libspqr.so.2: undefined reference to `tbb::internal::allocate_child_proxy::allocate(unsigned long) const'
/usr/lib64/libspqr.so.2: undefined reference to `tbb::task_scheduler_init::initialize(int, unsigned long)'
/usr/lib64/libspqr.so.2: undefined reference to `tbb::internal::allocate_root_proxy::allocate(unsigned long)'
collect2: error: ld returned 1 exit status
examples/CMakeFiles/more_garbow_hillstrom.dir/build.make:100: recipe for target 'bin/more_garbow_hillstrom' failed
make[2]: *** [bin/more_garbow_hillstrom] Error 1
...

for full logs please see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2359599

It might be a problem in suitesparse if I can understand the problem correctly.

Version-Release number of selected component (if applicable):
ceres-solver-1.11.0-8.fc25

Comment 1 Dan Horák 2016-09-27 10:21:11 UTC
FWIW http://s390.koji.fedoraproject.org/koji/packageinfo?packageID=19778 shows only the f25 build is broken

Comment 2 Dan Horák 2016-10-07 09:19:43 UTC
same problem with mrpt-1.3.2-9.fc25 - http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2367367

switching to suitesparse for investigation

Note: suitesparse-4.4.6-6 hasn't been rebuilt for new TBB in Rawhide

Comment 3 Jiri Kastner 2016-10-07 09:44:48 UTC
asking tbb co-maintainer for his input

Comment 4 Dan Horák 2016-10-07 12:05:05 UTC
The problem is in TBB build scripts. Based on architecture they select the version script used to filter symbols in the resulting library and wrongly considered s390x as 32-bit arch. As result
tbb::task_scheduler_init::initialize(int, unsigned int)
was expected in the lib while
tbb::task_scheduler_init::initialize(int, unsigned long)
existed in the built source code. The 2nd parameter is size_t in this function whose definition differs between 32-bit and 64-bit arches.

Comment 5 Fedora Update System 2016-10-09 12:30:18 UTC
suitesparse-4.4.6-7.fc25, tbb-2017-3.20160916.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-3fbb30af18

Comment 6 Fedora Update System 2016-10-12 18:58:28 UTC
suitesparse-4.4.6-7.fc25, tbb-2017-3.20160916.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.