Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#11665 closed Bug Report - General (fixed)

The test_audioconvert and test_audioutils unit tests fail on a clean sytem with no myth libs installed

Reported by: paulh Owned by: JYA
Priority: minor Milestone: 0.27
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

To reproduce just remove all the installed myth libs and compile mythtv from the top level directory

make[2]: Leaving directory `/media/src/mythtv-coverity/mythtv/mythtv/libs/libmythbase/test'
../programs/scripts/unittests.sh
././libmyth/test/test_audioconvert/test_audioconvert: error while loading shared libraries: libmythui-0.27.so.0: cannot open shared object file: No such file or directory
error: A unit test failed.
././libmyth/test/test_audioutils/test_audioutils: error while loading shared libraries: libmythui-0.27.so.0: cannot open shared object file: No such file or directory
error: A unit test failed.
.
.
.
error: At least one unit test failed, returning 1

Attachments (3)

make_output.txt (5.1 KB) - added by paulh 11 years ago.
output from running make in mythtv/libs/libmyth/test/test_audioutils/
Makefile (12.4 KB) - added by paulh 11 years ago.
Makefile from mythtv/libs/libmyth/test/test_audioutils/
test.diff (2.2 KB) - added by JYA 11 years ago.
attempted fix

Download all attachments as: .zip

Change History (19)

comment:1 Changed 11 years ago by paulh

Version: UnspecifiedMaster Head

comment:2 Changed 11 years ago by JYA

works for me and all the buildbot :)

what's your configure line ?

has libmythui been compiled yet?

comment:3 Changed 11 years ago by JYA

Status: newinfoneeded_new

comment:4 Changed 11 years ago by paulh

This build was for coverity so because there tools don't like ccache or distcc I used

./configure --prefix=/usr --disable-ccache --disable-distcc

I used make -j4 but just tried with no -j4 and got the same result

This is failing in the 'make tests' part of the build so I assume libmythui must have been compiled but not installed at that point.

I only get the problem if there are no myth libs installed which makes me think the audio tests are trying to link to the installed libraries that don't exist yet?

comment:5 Changed 11 years ago by JYA

can you go into mythtv/libs/libmyth/test/test_audioutils/

do make clean make

and post Makefile and the output of make here? the makefile should include in the LFLAGS all the rpath required for the unit test to find the libraries it depends on

Changed 11 years ago by paulh

Attachment: make_output.txt added

output from running make in mythtv/libs/libmyth/test/test_audioutils/

Changed 11 years ago by paulh

Attachment: Makefile added

Makefile from mythtv/libs/libmyth/test/test_audioutils/

comment:6 Changed 11 years ago by paulh

Output from ldd test_audioutils

Notice libmyth is found OK but libmythui and a few others are not

        linux-vdso.so.1 (0x00007fff01bff000)
        libmyth-0.27.so.0 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../libmyth-0.27.so.0 (0x00007f3e2e03a000)
        libmythbase-0.27.so.0 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythbase/libmythbase-0.27.so.0 (0x00007f3e2dc7b000)
        libmythavutil.so.52 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavutil/libmythavutil.so.52 (0x00007f3e2da48000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f3e2d7fe000)
        libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007f3e2d5fb000)
        libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f3e2d3f5000)
        libXv.so.1 => /usr/lib64/libXv.so.1 (0x00007f3e2d1ef000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f3e2cfe5000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f3e2cca8000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f3e2c94c000)
        libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007f3e2c578000)
        libass.so.4 => /usr/lib64/libass.so.4 (0x00007f3e2c35b000)
        libmp3lame.so.0 => /usr/lib64/libmp3lame.so.0 (0x00007f3e2c0e4000)
        libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f3e2be00000)
        libudev.so.1 => /lib64/libudev.so.1 (0x00007f3e2bbee000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f3e2b9e9000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3e2b7e5000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f3e2b546000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f3e2b331000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f3e2b121000)
        libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f3e2adfe000)
        libmythzmq.so.1 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/zeromq/src/.libs/libmythzmq.so.1 (0x00007f3e2abc7000)
        libmythnzmqt.so.0 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/nzmqt/src/libmythnzmqt.so.0 (0x00007f3e2a9a8000)
        libmythqjson.so.0 => /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/qjson/lib/libmythqjson.so.0 (0x00007f3e2a764000)
        libQtTest.so.4 => /usr/lib64/qt4/libQtTest.so.4 (0x00007f3e2a53e000)
        libQtSql.so.4 => /usr/lib64/qt4/libQtSql.so.4 (0x00007f3e2a2fc000)
        libQtXml.so.4 => /usr/lib64/qt4/libQtXml.so.4 (0x00007f3e2a0b7000)
        libQtGui.so.4 => /usr/lib64/qt4/libQtGui.so.4 (0x00007f3e2940f000)
        libQtNetwork.so.4 => /usr/lib64/qt4/libQtNetwork.so.4 (0x00007f3e290d0000)
        libQtCore.so.4 => /usr/lib64/qt4/libQtCore.so.4 (0x00007f3e28bed000)
        libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f3e289eb000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f3e287e3000)
        libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f3e284bf000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3e282a2000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/libstdc++.so.6 (0x00007f3e27f9d000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f3e27ca3000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/libgcc_s.so.1 (0x00007f3e27a8d000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3e276e5000)
        libmythui-0.27.so.0 => not found
        libmythupnp-0.27.so.0 => not found
        libmythservicecontracts-0.27.so.0 => not found
        libmythavcodec.so.54 => not found
        libmythavformat.so.54 => not found
        libmythswresample.so.0 => not found
        libQtDBus.so.4 => /usr/lib64/qt4/libQtDBus.so.4 (0x00007f3e27467000)
        libQtScript.so.4 => /usr/lib64/qt4/libQtScript.so.4 (0x00007f3e26fae000)
        libudf.so.0 => /usr/lib64/libudf.so.0 (0x00007f3e26da9000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f3e26b9f000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f3e2697e000)
        libfribidi.so.0 => /usr/lib64/libfribidi.so.0 (0x00007f3e26766000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f3e2652b000)
        libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f3e26295000)
        libenca.so.0 => /usr/lib64/libenca.so.0 (0x00007f3e26061000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3e2e5ff000)
        libnvidia-tls.so.313.26 => /usr/lib64/libnvidia-tls.so.313.26 (0x00007f3e25e5e000)
        libnvidia-glcore.so.313.26 => /usr/lib64/libnvidia-glcore.so.313.26 (0x00007f3e2395b000)
        libpng15.so.15 => /usr/lib64/libpng15.so.15 (0x00007f3e2372e000)
        libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f3e23525000)
        libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f3e23308000)
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007f3e230f8000)
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f3e22ef2000)
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f3e22ce7000)
        libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007f3e22a7c000)
        libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f3e2283e000)
        libcdio.so.14 => /usr/lib64/libcdio.so.14 (0x00007f3e22614000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f3e22410000)
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f3e2220a000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f3e21fe0000)
        libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f3e21d90000)
        libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007f3e21b72000)
        libicule.so.50 => /usr/lib64/libicule.so.50 (0x00007f3e2192e000)
        libicuuc.so.50 => /usr/lib64/libicuuc.so.50 (0x00007f3e215ba000)
        libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007f3e213b2000)
        libicudata.so.50 => /usr/lib64/libicudata.so.50 (0x00007f3e1fdde000)

comment:7 Changed 11 years ago by JYA

makes no sense.. utility was compiled with: LFLAGS = -fprofile-arcs -Wl,-rpath=$(PWD)/../../../../external/zeromq/src/.libs/ -Wl,-rpath=$(PWD)/../../../../external/nzmqt/src/ -Wl,-rpath=$(PWD)/../../../../external/qjson/lib/ -Wl,-rpath=$(PWD)/../../../../external/FFmpeg/libavcodec -Wl,-rpath=$(PWD)/../../../../external/FFmpeg/libavutil -Wl,-rpath=$(PWD)/../../../../external/FFmpeg/libavformat -Wl,-rpath=$(PWD)/../../../../external/FFmpeg/libswresample -Wl,-rpath=$(PWD)/../.. -Wl,-rpath=$(PWD)/../../../libmythbase -Wl,-rpath=$(PWD)/../../../libmythui -Wl,-rpath=$(PWD)/../../../libmythupnp -Wl,-rpath=$(PWD)/../../../libmythservicecontracts

the right path to libmythui is provided...

libmythui, libmythupnp etc... aren't directly required by the test executable; they are dependencies of libmyth itself. wonder if that's why those aren't found...

but it does build on all systems I've tried on, including the buildbot.. So something is different in your setting...

Last edited 11 years ago by JYA (previous) (diff)

comment:8 Changed 11 years ago by JYA

It's definitely compiled the right way: g++ -fprofile-arcs -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/zeromq/src/.libs/ -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/nzmqt/src/ -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/qjson/lib/ -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavcodec -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavutil -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavformat -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libswresample -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../.. -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythbase -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythui -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythupnp -Wl,-rpath=/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythservicecontracts -o test_audioutils test_audioutils.o moc_test_audioutils.o -L../.. -lmyth-0.27 -L../../../libmythbase -lmythbase-0.27 -L../../../../external/FFmpeg/libavutil -lmythavutil -lXext -lXinerama -lXxf86vm -lXv -lXrandr -lX11 -lxml2 -lcrypto -lass -lmp3lame -lasound -lm -ludev -luuid -pthread -ldl -lfreetype -lz -lbz2 -L/usr/X11R6/lib -lGL -L/media/src/mythtv-git-coverity/mythtv/mythtv/external/zeromq/src/.libs -lmythzmq -L/media/src/mythtv-git-coverity/mythtv/mythtv/external/nzmqt/src -lmythnzmqt -L/media/src/mythtv-git-coverity/mythtv/mythtv/external/qjson/lib -lmythqjson -L/usr/lib -L/usr/lib64/qt4 -lQtTest -L/usr/lib64 -lQtSql -L/usr/lib64/mysql -lQtXml -lQtGui -lQtNetwork -lQtCore -lgthread-2.0 -lrt -lglib-2.0 -lpthread

all the rpath are there...

Can you run: readelf -d test_audioutils | grep RPATH or: objdump -x test_audioutils | grep RPATH

Last edited 11 years ago by JYA (previous) (diff)

comment:9 Changed 11 years ago by paulh

Output from readelf -d test_audioutils | grep RPATH

 0x000000000000000f (RPATH)              Library rpath: [/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/zeromq/src/.libs/:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/nzmqt/src/:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/qjson/lib/:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavcodec:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavutil:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavformat:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libswresample:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../..:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythbase:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythui:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythupnp:/media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythservicecontracts]

comment:10 Changed 11 years ago by JYA

can you post the result of the command:

ls -l /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../libmythui/lib*

and

ls -l /media/src/mythtv-git-coverity/mythtv/mythtv/libs/libmyth/test/test_audioutils/../../../../external/FFmpeg/libavcodec/lib*

Changed 11 years ago by JYA

Attachment: test.diff added

attempted fix

comment:11 Changed 11 years ago by JYA

I notice the only path missing are those we aren't explicitly linking too (and we shouldn't have to as it's up to the linker to do that task)

but just in case.

Please try this patch, and test if test_audioutils work.

thanks

comment:12 Changed 11 years ago by paulh

Sorry for the delay.

With the test.diff patch test_audioutils compiles and runs fine :)

There is another similar error appeared since I last tried

test_mpegtables/test_mpegtables: error while loading shared libraries: libmythupnp-0.27.so.0: cannot open shared object file: No such file or directory

There's also this compiler warning in the same area

compiling test_audioconvert.cpp
In file included from test_audioconvert.cpp:1:0:
test_audioconvert.h: In member function ‘void TestAudioConvert::S16ToS24LSB()’:
test_audioconvert.h:164:13: warning: suggest parentheses around ‘+’ inside ‘<<’

comment:13 Changed 11 years ago by brian@…

I'm having the same problem on two systems. One with an existing installed head from two months ago and one on a new fresh laptop.

This is the error from the previously installed system:

../programs/scripts/unittests.sh
././libmyth/test/test_audioconvert/test_audioconvert: symbol lookup error: /usr/src/mythtv.20130803/mythtv/libs/libmyth/test/test_audioconvert/../../libmyth-0.27.so.0: undefined symbol: _ZN15MythUIComposite14SetTextFromMapERK5QHashI7QStringS1_E
error: A unit test failed.
././libmyth/test/test_audioutils/test_audioutils: symbol lookup error: /usr/src/mythtv.20130803/mythtv/libs/libmyth/test/test_audioutils/../../libmyth-0.27.so.0: undefined symbol: _ZN15MythUIComposite14SetTextFromMapERK5QHashI7QStringS1_E
error: A unit test failed.

This is the error from the clean laptop:

********* Finished testing of TestTemplate *********

././libmyth/test/test_audioutils/test_audioutils: error while loading shared libraries: libmythui-0.27.so.0: cannot open shared object file: No such file or directory
error: A unit test failed.
././libmyth/test/test_audioconvert/test_audioconvert: error while loading shared libraries: libmythui-0.27.so.0: cannot open shared object file: No such file or directory
error: A unit test failed.
error: At least one unit test failed, returning 1
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/src/mythtv.20130803/mythtv/libs'
make: [test] Error 2 (ignored)

Is this related? What other information can I provide?

comment:14 Changed 11 years ago by Jean-Yves Avenard <jyavenard@…>

Resolution: fixed
Status: infoneeded_newclosed

In 19b24f5c7bc9aeb71d9175fcae936c5cec53e7bf/mythtv:

Explicitly link against all libraries

Shouldn't be required if the linker did its job properly, but on some systems it doesn't..

Fixes #11665

comment:15 Changed 11 years ago by paulh

Milestone: unknown0.27

comment:16 Changed 11 years ago by brian@…

Confirmed fixed in latest.

Note: See TracTickets for help on using tickets.