Sonarqube-developer-7.4: build-wrapper exits unexpecedly with build-wrapper: SQ_WRAPPER_SOCKET is missing

build-wrapper
sonarcfamily

(gve) #1

Must-share information (formatted with Markdown):

  • Sonarqube Developer 7.4
  • CFamily Plugin 5.1.1 (build 10386)

We are trying to analyze a C/C++ Project with sonarqube.

The build takes place inside a docker container.
the process looks roughly like this:

  1. run a sonar-provider.sh before build
    1.1 fetch https://sonar-dev.internal.********.com/static/cpp/build-wrapper-linux-x86.zip
    1.2 unpack the file and copy content to /usr/bin
  2. run build
    2.1 execute the build wrapper’ed make command
    2.2 here it fails

see last line of the snippet below:

06-Dec-2018 14:32:12 	+ ls /usr/bin/libinterceptor-i686.so /usr/bin/libinterceptor-x86_64.so
06-Dec-2018 14:32:12 	/usr/bin/libinterceptor-i686.so
06-Dec-2018 14:32:12 	/usr/bin/libinterceptor-x86_64.so
06-Dec-2018 14:32:12 	+ ls /usr/bin/build-wrapper-linux-i686 /usr/bin/build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	/usr/bin/build-wrapper-linux-i686
06-Dec-2018 14:32:12 	/usr/bin/build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	+ ldconfig
06-Dec-2018 14:32:12 	++ which build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	+ test '!' -z /usr/bin/build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	++ which build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	+ ldd /usr/bin/build-wrapper-linux-x86_64
06-Dec-2018 14:32:12 	        linux-vdso.so.1 (0x00007ffc7f7c2000)
06-Dec-2018 14:32:12 	        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa619295000)
06-Dec-2018 14:32:12 	        /lib64/ld-linux-x86-64.so.2 (0x00007fa61945e000)
06-Dec-2018 14:32:12 	+++ nproc
06-Dec-2018 14:32:12 	++ expr 8 / 2
06-Dec-2018 14:32:12 	+ LD_PRELOAD=/usr/bin/libinterceptor-x86_64.so
06-Dec-2018 14:32:12 	+ /usr/bin/build-wrapper-linux-x86_64 --out-dir bw_output make -j 4
06-Dec-2018 14:32:12 	build-wrapper: SQ_WRAPPER_SOCKET is missing

There is no content on google or the official documentation which I could find. How should I proceed?


(Loïc Joly) #2

Hello @gve,

Could you please send us the build-wrapper.log file that is in your bw_output folder?

Thank you!


(gve) #3

Hello,

I tried hard to find this Logfile, but I can confirm: It is not generated at all.

root@4c9c8230dc2f:/code/build_prod# ls
CMakeCache.txt	CMakeFiles  Makefile  cmake_install.cmake  wta
root@4c9c8230dc2f:/code/build_prod# LD_PRELOAD=/usr/bin/libinterceptor-x86_64.so /usr/bin/build-wrapper-linux-x86-64 --out-dir bw_output make -j $(expr $(nproc) / 2)    
build-wrapper: SQ_WRAPPER_SOCKET is missing
root@4c9c8230dc2f:/code/build_prod# find . -name "bw_output"
root@4c9c8230dc2f:/code/build_prod# ls -a
.  ..  CMakeCache.txt  CMakeFiles  Makefile  cmake_install.cmake  wta
root@4c9c8230dc2f:/code/build_prod# cd /
root@4c9c8230dc2f:/# find . -name "bw_output"
root@4c9c8230dc2f:/# find . -name "build-wrapper.log"
root@4c9c8230dc2f:/# 

Since build-wrapper is run inside docker, could this be related to a missing capability?


(Loïc Joly) #4

Hello @gve

We noticed that the way you launch the build wrapper is very strange, and is the source of the issue: Before launching it, you change the LD_PRELOAD environment variable to pre-load our libinterceptor libraries. You should not do that!

If you remove this strange LD_PRELOAD=/usr/bin/libinterceptor-x86_64.so from your command line, it should work better.

Best regards,


(gve) #5

Helo again!

LD_PRELOAD is used to selectivly force ld.so to load a shared object like libinterceptor.so. So using LD_PRELOAD in the case of ld.so throwing an error is very common path for troubleshooting, which I went down since I got this huge amount of (misleading?) errors:

Trying your suggestion leads to:

/usr/bin/build-wrapper-linux-x86-64 --out-dir bw_output make -j 4
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/bin/libinterceptor-${PLATFORM}.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

<many screens full of more of this lines>

However, the dir bw_output is created and contains files now:

build-wrapper-dump.json:

# (C) SonarSource SA, 2014-2017, info@sonarsource.com
# All SONARSOURCE programs and content are copyright protected.
# SONARSOURCE and SONARQUBE are trademarks of SonarSource SA. All rights are expressly reserved.
#
# This file is designed exclusively for use with the SONARSOURCE C / C++ / Objective-C Plugin.
# It may not be used in connection with any other software.
# Any other use is prohibited by law and may be grounds for immediate termination of your License.
{
"version":0,
"captures":[
]}

build-wrapper.log:

Tue Dec 11 10:29:57 2018: System name: Linux Nodename: 7f5179434c71 Release: 4.13.0-46-generic Version: #51-Ubuntu SMP Tue Jun 12 12:36:29 UTC 2018 Machine: x86_64
Tue Dec 11 10:29:57 2018: socket path: /tmp/build-wrapper-socket.CSTBsG
Tue Dec 11 10:29:57 2018: dynamic library found: /usr/bin/libinterceptor-i686.so
Tue Dec 11 10:29:57 2018: dynamic library found: /usr/bin/libinterceptor-x86_64.so
Tue Dec 11 10:29:57 2018: command executed as: <build-wrapper-linux-x86-64>
Tue Dec 11 10:29:57 2018: command line received: <make -j 4>
Tue Dec 11 10:29:57 2018: env 0: <HOSTNAME=7f5179434c71>
Tue Dec 11 10:29:57 2018: env 1: <OLDPWD=/root>
Tue Dec 11 10:29:57 2018: env 2: <PWD=/code/build_prod>
Tue Dec 11 10:29:57 2018: env 3: <OS_DEP=  build-essential   curl   ca-certificates   unzip   libboost-graph1.62-dev   libboost-program-options1.62-dev   libgmock-dev   libgmp-dev   libegl1-mesa-dev   libglu1-mesa-dev   libglew-dev   libtbb-dev   m4   cmake   git   strace >
Tue Dec 11 10:29:57 2018: env 4: <HOME=/root>
Tue Dec 11 10:29:57 2018: env 5: <TERM=xterm>
Tue Dec 11 10:29:57 2018: env 6: <PLATFORM=x86_64>
Tue Dec 11 10:29:57 2018: env 7: <SHLVL=1>
Tue Dec 11 10:29:57 2018: env 8: <PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin>
Tue Dec 11 10:29:57 2018: env 9: <_=/usr/bin/build-wrapper-linux-x86-64>
Tue Dec 11 10:29:57 2018: executing: <make -j 4>
Tue Dec 11 10:29:57 2018: initializing json file
Tue Dec 11 10:29:57 2018: finalizing json file
Tue Dec 11 10:29:57 2018: returned with code: 0

The same happens, when build-wrapper/libinterceptor-* are situated in the build root directory.

So it seems there is an empty result or build-wrapper not working the way I run it. I propose the latter… :slight_smile:


(Loïc Joly) #6

Hello again @gve,

You might be affected by the same issue that was reported in this thread: SonarQube - C++ - Ubuntu - build-wrapper LD_PRELOAD Error

To check if this is the case, you can run the command:

strace -f -E LD_DEBUG=all ./build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir bw-output /bin/echo test >stdout.txt 2>stderr.txt

And search if the resulting output contains libinterceptor-haswell.so. If so, you are in the same situation, and you can work around it by using the same way that was proposed there:

If not, we don’t yet know what happens, and we might be interested in getting the files generated by this strace command to look at them more deeply.

Hope this helps…


(gve) #7

Hey,

Thanks for the tip about ubuntu! :slight_smile:
Copying to libinterceptor-haswell.so did the trick!

tyvm!