Modify
Warning Please read the Ticket HowTo before creating or commenting on a ticket. Failure to do so may cause your ticket to be rejected or result in a slower response.

Opened 10 months ago

Closed 9 months ago

Last modified 9 months 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: jyavenard
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 10 months ago.
output from running make in mythtv/libs/libmyth/test/test_audioutils/
Makefile (12.4 KB) - added by paulh 10 months ago.
Makefile from mythtv/libs/libmyth/test/test_audioutils/
test.diff (2.2 KB) - added by jyavenard 9 months ago.
attempted fix

Download all attachments as: .zip

Change History (19)

comment:1 Changed 10 months ago by paulh

  • Version changed from Unspecified to Master Head

comment:2 Changed 10 months ago by jyavenard

works for me and all the buildbot :)

what's your configure line ?

has libmythui been compiled yet?

comment:3 Changed 10 months ago by jyavenard

  • Status changed from new to infoneeded_new

comment:4 Changed 10 months 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 10 months ago by jyavenard

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 10 months ago by paulh

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

Changed 10 months ago by paulh

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

comment:6 Changed 10 months 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 10 months ago by jyavenard

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 10 months ago by jyavenard (previous) (diff)

comment:8 Changed 10 months ago by jyavenard

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 10 months ago by jyavenard (previous) (diff)

comment:9 Changed 10 months 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 9 months ago by jyavenard

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 9 months ago by jyavenard

attempted fix

comment:11 Changed 9 months ago by jyavenard

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 9 months 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 9 months 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 9 months ago by Jean-Yves Avenard <jyavenard@…>

  • Resolution set to fixed
  • Status changed from infoneeded_new to closed

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 9 months ago by paulh

  • Milestone changed from unknown to 0.27

comment:16 Changed 9 months ago by brian@…

Confirmed fixed in latest.

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'new'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.