New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 873201 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Aug 17
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug
Build-Toolchain

Blocked on:
issue 858896



Sign in to add a comment

media-libs/opencv broken by llvm-next update

Project Member Reported by jbrandmeyer@chromium.org, Aug 10

Issue description

https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/1168987

may have broken opencv. Attempts to emerge it on grunt fail with the following error:

/usr/bin/x86_64-cros-linux-gnu-clang++   -O2 -pipe -O2 -pipe -O2 -pipe -march=amdfam10 -g   -O3 -DNDEBUG    -Wl,-O1 -Wl,-O2 -Wl,--as-needed      CMakeFiles/opencv_traincascade.dir/traincascade.o CMakeFiles/opencv_traincascade.dir/cascadeclassifier.o CMakeFiles/opencv_traincascade.dir/boost.o CMakeFiles/opencv_traincascade.dir/features.o CMakeFiles/opencv_traincascade.dir/haarfeatures.o CMakeFiles/opencv_traincascade.dir/lbpfeatures.o CMakeFiles/opencv_traincascade.dir/imagestorage.o  -o ../../bin/opencv_traincascade -rdynamic ../../lib/libopencv_ml.so.2.3.0 ../../lib/libopencv_haartraining_engine.a ../../lib/libopencv_objdetect.so.2.3.0 ../../lib/libopencv_calib3d.so.2.3.0 ../../lib/libopencv_features2d.so.2.3.0 ../../lib/libopencv_highgui.so.2.3.0 ../../lib/libopencv_imgproc.so.2.3.0 ../../lib/libopencv_flann.so.2.3.0 ../../lib/libopencv_core.so.2.3.0 -lz -ldl -lm -lpthread -lrt 
../../lib/libopencv_features2d.so.2.3.0: error: undefined reference to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [modules/traincascade/CMakeFiles/opencv_traincascade.dir/build.make:261: bin/opencv_traincascade] Error 1
make[2]: Leaving directory '/build/grunt/tmp/portage/media-libs/opencv-2.3.0-r12/work/opencv-2.3.0_build'
make[1]: *** [CMakeFiles/Makefile2:954: modules/traincascade/CMakeFiles/opencv_traincascade.dir/all] Error 2
 
Where are you seeing this failure?  The grunt-release builder that ran this morning seems to have successfully built opencv, with the new llvm....
Two engineers' chroots are failing, with either

build_packages --board=grunt

or 

emerge-grunt media-libs/opencv
Several packages are failing, including:

dev-libs/protobuf-3.3.0
dev-libs/libpcre-8.41-r1
sys-devel/llvm-6.0.0-r2
media-libs/opencv-2.3.0-r12
sys-apps/smartmontools-6.6-r1

Attaching the failed build log of sys-devel/llvm


sys-devel:llvm-6.0.0-r2:20180810-171320.log
399 KB View Download
Also of note, both of the failed build_packages were preceded by `repo sync`
testing with the new compiler for Grunt passed yesterday... 

https://cros-goldeneye.corp.google.com/chromeos/healthmonitoring/buildDetails?buildbucketId=8938650290509748592

so, maybe there is a problem with old object files?


can you emerge -C opencv dependencies and try again?

The build failure in LLVM is exactly the same as the one in opencv (linker cannot find a string destructor):

FAILED: bin/llvm-tblgen 
: && /usr/bin/x86_64-cros-linux-gnu-clang++   -O2 -pipe -O2 -pipe -O2 -pipe -march=amdfam10 -g -fno-exceptions -fno-unwind-tables   -fno-asynchronous-unwind-tables -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fcolor-diagnostics -ffunction-sections -fdata-sections  -Wl,-O1 -Wl,-O2 -Wl,--as-needed -Wl,-allow-shlib-undefined    -Wl,-O3 -Wl,--gc-sections utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/InstrDocsEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/SDNodeProperties.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o  -o bin/llvm-tblgen  -Wl,-rpath,"\$ORIGIN/../lib64" lib64/libLLVMSupport.a lib64/libLLVMTableGen.a -lpthread lib64/libLLVMSupport.a -lz -lrt -ldl -lpthread -lm lib64/libLLVMDemangle.a && :
../llvm-6.0.0.src/utils/TableGen/DFAPacketizerEmitter.cpp:566: error: undefined reference to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()'
../llvm-6.0.0.src/lib/Support/ErrorHandling.cpp:161: error: undefined reference to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
I am trying to repro locally.

Step I am doing:
$ repo sync
$ ./setup_board --board=grunt
$ ./build_packages --board=grunt
Owner: manojgupta@chromium.org
Cc: adurbin@chromium.org
This broke on octopus as well on my local checkout performing build_packages:

opencv-2.3.0-r12: ../../lib/libopencv_features2d.so.2.3.0: error: undefined reference to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::al
locator<char> >::~basic_string()'                                              
opencv-2.3.0-r12: clang-7: error: linker command failed with exit code 1 (use -v
 to see invocation)                                                             opencv-2.3.0-r12: make[2]: *** [modules/haartraining/CMakeFiles/opencv_haartraining.dir/build.make:104: bin/opencv_haartraining] Error 1                        
opencv-2.3.0-r12: make[2]: Leaving directory '/build/octopus/tmp/portage/media-l
ibs/opencv-2.3.0-r12/work/opencv-2.3.0_build'                                   
opencv-2.3.0-r12: make[1]: *** [CMakeFiles/Makefile2:1066: modules/haartraining/CMakeFiles/opencv_haartraining.dir/all] Error 2                                 opencv-2.3.0-r12: make[1]: *** Waiting for unfinished jobs....                  
opencv-2.3.0-r12: ../../lib/libopencv_features2d.so.2.3.0: error: undefined refe
rence to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::al
locator<char> >::~basic_string()'                                               opencv-2.3.0-r12: clang-7: error: linker command failed with exit code 1 (use -v to see invocation)                                                             
opencv-2.3.0-r12: make[2]: *** [modules/haartraining/CMakeFiles/opencv_createsamples.dir/build.make:104: bin/opencv_createsamples] Error 1                      
opencv-2.3.0-r12: make[2]: Leaving directory '/build/octopus/tmp/portage/media-l
ibs/opencv-2.3.0-r12/work/opencv-2.3.0_build'                                   
opencv-2.3.0-r12: make[1]: *** [CMakeFiles/Makefile2:1022: modules/haartraining/
CMakeFiles/opencv_createsamples.dir/all] Error 2                                opencv-2.3.0-r12: [ 98%] Linking CXX shared library ../../lib/libopencv_contrib.so                                                                          
I am not able to repro.

$ ./build_packages passed for me.
I also verified that emerge-grunt opencv also works.

CQ also does not show any issues.

So, I suspect there is something weird in the chroot. Can you try the following?

$ rm -rf /build/grunt/var/cache/portage/* 
$ rm -rf /build/grunt/packages/*
# Do build packages again.
$ ./build_packages --board=grunt

My ./build_packages --board=grunt this morning had this failure.
I just finished
./setup_board --board=grunt --force
./build_packages --board=grunt
and it succeeded.
So I guess my problem was maybe caused by some old object files.
adurbin@, could you try doing a setup_board with the --force flag, to force the toolchain to update?  See if that fixes your problem...

Blockedon: 858896
Ping? Please verify whether or not 'setup_board --force' fixed this problem for you.
sent email to chromium-os-dev explaining the workaround (setup_board --force). 
we are working on regenerating the prebuilds. 

https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1171249/1

Still running...
I might have run into a related problem, when building a kernel for cheza (180809 sandbox) with clang:

drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.o: In function `_dpu_core_perf_crtc_update_bus':
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c:260: undefined reference to `dpu_power_data_bus_set_quota'
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c:260:(.text+0x7a8): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dpu_power_data_bus_set_quota'
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c:269: undefined reference to `dpu_power_data_bus_set_quota'
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c:269:(.text+0x7e4): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dpu_power_data_bus_set_quota'
drivers/gpu/drm/msm/msm_fb.o: In function `msm_framebuffer_phys':
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/msm_fb.c:203: undefined reference to `msm_gem_get_dma_addr'
/mnt/host/source/src/third_party/kernel/v4.14/drivers/gpu/drm/msm/msm_fb.c:203:(.text+0x398): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `msm_gem_get_dma_addr'
make[1]: *** [/mnt/host/source/src/third_party/kernel/v4.14/Makefile:1022: vmlinux] Error 1


The problem disappeared after running 'update_chroot'.
$ ./setup_board --force --board=grunt
$ USE=chrome_internal ./build_packages --board=grunt

839 packages later, this does work around the problem.
Labels: -Pri-0 Pri-1
Drop to P1 since "--force" workaround works and llozano@ also sent a message to chromium-os-dev.
As another confirmation it looks like the --force works on octopus as well (to be expected). I'm still building but down to 11 packages.
Status: Assigned (was: Untriaged)
I believe we can close this issue. 
There have been no more complains since we took measures to fix this on Friday and we sent the message to chromium-os-dev.


Status: Fixed (was: Assigned)
Cc: kylec...@chromium.org vapier@chromium.org capn@chromium.org
 Issue 874241  has been merged into this issue.
chromeos simple build is still broken.

> cros chrome-sdk --board=amd64-generic --nogoma --clang 
$ autoninja -C out_amd64-generic/Release/ chrome

It succeeds to build it but cannot execute 'chrome'
/opt/google/chrome/chrome: symbol lookup error: ./chrome: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev

Dongseng, I think you also need to update the Chrome OS image on the test machine to have a recent libc++.
Cc: matthewmwang@chromium.org
Status: Assigned (was: Fixed)
Reopening since Matthew Wang ran into this after a full repo sync today: 

https://paste.googleplex.com/6316275898777600

is the workaround in #20 or #21 not working?
i.e. $ ./setup_board --board=<board> --force

Status: Verified (was: Assigned)
I chatted with Matthew and the workaround worked for him. 


Sign in to add a comment