Hello,
Please, have a look to the following bug.
>Environment:
System : OpenBSD 5.8
Details : OpenBSD 5.8 (CUSTOM.MP-2) #0: Fri Jul 31 19:48:09
CEST 2015
r...@makix.my.domain:/usr/src/sys/arch/amd64/compile/CUSTOM.MP-2
Architecture: OpenBSD.amd64
Machine : amd64
I have already sent the dmesg to tech@ the 4 august
>Description:
5.8 amd64 :
With kdebase alone artsd work as excepted.
With kdebase and kdemultimedia artsd coredumps with ogg & mp3 and work
with wav.
The bug happens in 5.7-release and 5.8.
>How-To-Repeat:
1) In 5.7-release or 5.8 you need to install kdebase-3.5.10 and
kdemultimedia-3.5.10.
2) With KDE3 started, you stop artsd :
kill -15 $(ps -aux|grep artsd|grep -v grep|awk '{print $2}')
3) You check that artsd is stopped :
ps -aux|grep artsd
4) In a ttyC (or in a Konsole) you launch a new artsd :
artsd
5) In another ttyC (or in another Konsole) you launch the following
command (you can choose another mp3 or a ogg file) :
artsplay song57.mp3
In the first console you will have the following output :
artsd:/usr/local/lib/libarts_xine.so.0.0: undefined symbol 'ao_new_port'
lazy binding failed!
Segmentation fault (core dumped)
And you will find a file artsd.core.
-----------------------------------------------------------
# gdb -e artsd -c artsd.core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd5.8".
Core was generated by `artsd'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libpthread.so.19.0...done.
Loaded symbols for /usr/lib/libpthread.so.19.0
Loaded symbols for /usr/local/bin/artsd
Reading symbols from /usr/local/lib/libsoundserver_idl.so.2.0...done.
Loaded symbols for /usr/local/lib/libsoundserver_idl.so.2.0
Reading symbols from /usr/local/lib/libkmedia2_idl.so.2.0...done.
Loaded symbols for /usr/local/lib/libkmedia2_idl.so.2.0
Reading symbols from /usr/local/lib/libartsflow.so.2.0...done.
Loaded symbols for /usr/local/lib/libartsflow.so.2.0
Reading symbols from /usr/local/lib/libmcop.so.2.0...done.
Loaded symbols for /usr/local/lib/libmcop.so.2.0
Reading symbols from /usr/local/lib/libgmodule-2.0.so.4200.1...done.
Loaded symbols for /usr/local/lib/libgmodule-2.0.so.4200.1
Reading symbols from /usr/local/lib/libglib-2.0.so.4200.1...done.
Loaded symbols for /usr/local/lib/libglib-2.0.so.4200.1
Reading symbols from /usr/local/lib/libiconv.so.6.0...done.
Loaded symbols for /usr/local/lib/libiconv.so.6.0
Reading symbols from /usr/local/lib/libpcre.so.3.0...done.
Loaded symbols for /usr/local/lib/libpcre.so.3.0
Reading symbols from /usr/local/lib/libintl.so.6.0...done.
Loaded symbols for /usr/local/lib/libintl.so.6.0
Reading symbols from /usr/local/lib/libgthread-2.0.so.4200.1...done.
Loaded symbols for /usr/local/lib/libgthread-2.0.so.4200.1
Reading symbols from /usr/local/lib/libartsflow_idl.so.2.0...done.
Loaded symbols for /usr/local/lib/libartsflow_idl.so.2.0
Reading symbols from /usr/local/lib/libaudiofile.so.1.0...done.
Loaded symbols for /usr/local/lib/libaudiofile.so.1.0
Reading symbols from /usr/local/lib/libFLAC.so.10.0...done.
Loaded symbols for /usr/local/lib/libFLAC.so.10.0
Reading symbols from /usr/local/lib/libogg.so.6.2...done.
Loaded symbols for /usr/local/lib/libogg.so.6.2
Reading symbols from /usr/lib/libsndio.so.6.0...done.
Loaded symbols for /usr/lib/libsndio.so.6.0
Reading symbols from /usr/local/lib/libvorbis.so.9.0...done.
Loaded symbols for /usr/local/lib/libvorbis.so.9.0
Reading symbols from /usr/local/lib/libvorbisfile.so.6.0...done.
Loaded symbols for /usr/local/lib/libvorbisfile.so.6.0
Reading symbols from /usr/local/lib/libvorbisenc.so.3.1...done.
Loaded symbols for /usr/local/lib/libvorbisenc.so.3.1
Reading symbols from /usr/local/lib/libmad.so.2.1...done.
Loaded symbols for /usr/local/lib/libmad.so.2.1
Reading symbols from /usr/local/lib/libmcop_mt.so.2.0...done.
Loaded symbols for /usr/local/lib/libmcop_mt.so.2.0
Reading symbols from /usr/lib/libstdc++.so.57.0...done.
Loaded symbols for /usr/lib/libstdc++.so.57.0
Reading symbols from /usr/lib/libm.so.9.0...done.
Loaded symbols for /usr/lib/libm.so.9.0
Symbols already loaded for /usr/lib/libpthread.so.19.0
Reading symbols from /usr/lib/libc.so.80.1...done.
Loaded symbols for /usr/lib/libc.so.80.1
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
Reading symbols from /usr/local/lib/libartsmidi.so.1.0...done.
Loaded symbols for /usr/local/lib/libartsmidi.so.1.0
Reading symbols from /usr/local/lib/libartsmidi_idl.so.1.0...done.
Loaded symbols for /usr/local/lib/libartsmidi_idl.so.1.0
Reading symbols from /usr/local/lib/libartsbuilder.so.1.0...done.
Loaded symbols for /usr/local/lib/libartsbuilder.so.1.0
Reading symbols from /usr/local/lib/libarts_xine.so.0.0...done.
Loaded symbols for /usr/local/lib/libarts_xine.so.0.0
Reading symbols from /usr/local/lib/libxine.so.32.0...done.
Loaded symbols for /usr/local/lib/libxine.so.32.0
Reading symbols from /usr/X11R6/lib/libfontconfig.so.9.1...done.
Loaded symbols for /usr/X11R6/lib/libfontconfig.so.9.1
Reading symbols from /usr/X11R6/lib/libfreetype.so.24.0...done.
Loaded symbols for /usr/X11R6/lib/libfreetype.so.24.0
Reading symbols from /usr/lib/libz.so.5.0...done.
Loaded symbols for /usr/lib/libz.so.5.0
Reading symbols from /usr/lib/libexpat.so.11.0...done.
Loaded symbols for /usr/lib/libexpat.so.11.0
Reading symbols from /usr/X11R6/lib/libpthread-stubs.so.2.0...done.
Loaded symbols for /usr/X11R6/lib/libpthread-stubs.so.2.0
Reading symbols from /usr/local/lib/libxdg-basedir.so.2.0...done.
Loaded symbols for /usr/local/lib/libxdg-basedir.so.2.0
Reading symbols from /usr/local/lib/libavutil.so.12.3...done.
Loaded symbols for /usr/local/lib/libavutil.so.12.3
Reading symbols from /usr/X11R6/lib/libX11.so.16.1...done.
Loaded symbols for /usr/X11R6/lib/libX11.so.16.1
Reading symbols from /usr/X11R6/lib/libxcb.so.3.1...done.
Loaded symbols for /usr/X11R6/lib/libxcb.so.3.1
Reading symbols from /usr/X11R6/lib/libXext.so.13.0...done.
Loaded symbols for /usr/X11R6/lib/libXext.so.13.0
Reading symbols from /usr/X11R6/lib/libXau.so.10.0...done.
Loaded symbols for /usr/X11R6/lib/libXau.so.10.0
Reading symbols from /usr/X11R6/lib/libXdmcp.so.11.0...done.
Loaded symbols for /usr/X11R6/lib/libXdmcp.so.11.0
#0 _dl_bind (object=0x10f5811d400, index=Variable "index" is not available.
) at /usr/src/libexec/ld.so/amd64/rtld_machine.c:383
383 *(volatile int *)0 = 0; /* XXX */
(gdb) bt full
#0 _dl_bind (object=0x10f5811d400, index=Variable "index" is not available.
) at /usr/src/libexec/ld.so/amd64/rtld_machine.c:383
rel = (Elf64_Rela *) 0x10fb3e570c0
sym = Variable "sym" is not available.
(gdb) list
383 *(volatile int *)0 = 0; /* XXX */
384 }
385
386 newval = ooff + this->st_value + rel->r_addend;
387
388 if (sobj->traced && _dl_trace_plt(sobj, symn))
389 return newval;
390
391 /* if GOT is protected, allow the write */
392 if (object->got_size != 0) {
-----------------------------------------------------------
Adding --enable-debug for configure change nothing.
The last update on arts3 change nothing.
Hopefully it's only artsd with kdemultimedia who has this bug.
>Fix:
I found nothing really useful on the web and the lists.
I have tried some little hacks, no one work.
After some researchs I found two similar errors related to respectively
_x_ao_new_port and ao_new_port with ld in
/usr/ports/pobj/kdemultimedia-3.5.10/build-amd64/config.log :
-----------------------------------------------------------
configure:42290: checking for _x_ao_new_port in -lxine
configure:42325: cc -o conftest -DNDEBUG -O2 -O2 -pipe
-DQT_THREAD_SUPPORT -L/usr/local/lib -L/usr/local/lib/qt3
-L/usr/X11R6/lib -L/usr/local/lib/kde3 -L/usr/local/lib/db4
-L/usr/local/lib/samba -L/usr/local/lib conftest.c -lxine -pthread >&5
/usr/local/lib/libxine.so.32.0: warning: warning: strcpy() is almost
always misused, please use strlcpy()
/usr/local/lib/libxine.so.32.0: warning: warning: strcat() is almost
always misused, please use strlcat()
/usr/local/lib/libxine.so.32.0: warning: warning: sprintf() is often
misused, please use snprintf()
/tmp//cczltori.o: In function `main':
conftest.c:(.text+0x7): undefined reference to `_x_ao_new_port'
collect2: ld returned 1 exit status
configure:42331: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "kdemultimedia"
| #define VERSION "3.5.10"
| #define KDELIBSUFF ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define HAVE_SGI_STL 1
| #define HAVE_STRLCAT 1
| #define HAVE_STRLCAT_PROTO 1
| #define HAVE_STRLCPY 1
| #define HAVE_STRLCPY_PROTO 1
| #define HAVE_CRYPT 1
| #define kde_socklen_t socklen_t
| #define ksize_t socklen_t
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_RES_INIT 1
| #define HAVE_RES_INIT_PROTO 1
| #define SIZEOF_INT 4
| #define SIZEOF_SHORT 2
| #define SIZEOF_LONG 8
| #define SIZEOF_CHAR_P 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_UNSIGNED_LONG 8
| #define HAVE_VSNPRINTF 1
| #define HAVE_SNPRINTF 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_DIRENT_H 1
| #define STDC_HEADERS 1
| #define HAVE_FCNTL_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_SYS_FILIO_H 1
| #define HAVE_SYS_AUDIOIO_H 1
| #define HAVE_SYS_SEM_H 1
| #define HAVE_STRING_H 1
| #define HAVE_GETOPT_H 1
| #define HAVE_MACHINE_ENDIAN_H 1
| #define HAVE_USLEEP 1
| #define HAVE_SNPRINTF 1
| #define TIME_WITH_SYS_TIME 1
| #define RETSIGTYPE void
| #define HAVE_OGG_VORBIS 1
| #define HAVE_VORBIS 2
| #define OGG_VORBIS 1
| #define HAVE_SOUNDCARD_H 1
| #define CDDA_PARANOIA 1
| #define HAVE_TAGLIB 1
| #define HAVE_AKODE 1
| #define HAVE_ARTS 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_LIBAUDIOFILE 1
| #define HAVE_MUSICBRAINZ 0
| #define HAVE_GSTREAMER 1
| #define GSTREAMER_VERSION 10
| #define HAVE_LIBTHEORA 1
| #define HAVE_LIBFLAC 1
| #define HAVE_LIBOGGFLAC 1
| #define USE_ARTS 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_SOUNDCARD_H 1
| #define ATTRIBUTE_ALIGNED_MAX 64
| #define X11_SHARED_MEM 1
| #define X11_DGA2 1
| #define X11_XV 1
| #define X11_XVIDMODE 1
| #define OS_BSD 1
| #define HAVE_DIRENT_H 1
| #define STDC_HEADERS 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_FCNTL_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_PATHS_H 1
| #define HAVE_USLEEP 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char _x_ao_new_port ();
| int
| main ()
| {
| return _x_ao_new_port ();
| ;
| return 0;
| }
configure:42349: result: no
configure:42365: checking for ao_new_port
configure:42421: cc -o conftest -DNDEBUG -O2 -O2 -pipe
-DQT_THREAD_SUPPORT conftest.c >&5
/tmp//ccONgSjb.o: In function `main':
conftest.c:(.text+0x7): undefined reference to `ao_new_port'
collect2: ld returned 1 exit status
configure:42427: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "kdemultimedia"
| #define VERSION "3.5.10"
| #define KDELIBSUFF ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define HAVE_SGI_STL 1
| #define HAVE_STRLCAT 1
| #define HAVE_STRLCAT_PROTO 1
| #define HAVE_STRLCPY 1
| #define HAVE_STRLCPY_PROTO 1
| #define HAVE_CRYPT 1
| #define kde_socklen_t socklen_t
| #define ksize_t socklen_t
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_RES_INIT 1
| #define HAVE_RES_INIT_PROTO 1
| #define SIZEOF_INT 4
| #define SIZEOF_SHORT 2
| #define SIZEOF_LONG 8
| #define SIZEOF_CHAR_P 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_UNSIGNED_LONG 8
| #define HAVE_VSNPRINTF 1
| #define HAVE_SNPRINTF 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_DIRENT_H 1
| #define STDC_HEADERS 1
| #define HAVE_FCNTL_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_SYS_FILIO_H 1
| #define HAVE_SYS_AUDIOIO_H 1
| #define HAVE_SYS_SEM_H 1
| #define HAVE_STRING_H 1
| #define HAVE_GETOPT_H 1
| #define HAVE_MACHINE_ENDIAN_H 1
| #define HAVE_USLEEP 1
| #define HAVE_SNPRINTF 1
| #define TIME_WITH_SYS_TIME 1
| #define RETSIGTYPE void
| #define HAVE_OGG_VORBIS 1
| #define HAVE_VORBIS 2
| #define OGG_VORBIS 1
| #define HAVE_SOUNDCARD_H 1
| #define CDDA_PARANOIA 1
| #define HAVE_TAGLIB 1
| #define HAVE_AKODE 1
| #define HAVE_ARTS 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_LIBAUDIOFILE 1
| #define HAVE_MUSICBRAINZ 0
| #define HAVE_GSTREAMER 1
| #define GSTREAMER_VERSION 10
| #define HAVE_LIBTHEORA 1
| #define HAVE_LIBFLAC 1
| #define HAVE_LIBOGGFLAC 1/usr/ports/x11/kde/multimedia3
| #define USE_ARTS 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_SOUNDCARD_H 1
| #define ATTRIBUTE_ALIGNED_MAX 64
| #define X11_SHARED_MEM 1
| #define X11_DGA2 1
| #define X11_XV 1
| #define X11_XVIDMODE 1
| #define OS_BSD 1
| #define HAVE_DIRENT_H 1
| #define STDC_HEADERS 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_FCNTL_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_PATHS_H 1
| #define HAVE_USLEEP 1/usr/ports/x11/kde/multimedia3
| #define _x_ao_new_port ao_new_port
| /* end confdefs.h. */
| /* Define ao_new_port to an innocuous variant, in case <limits.h>
declares ao_new_port.
| For example, HP-UX 11i <limits.h> declares gettimeofday. */
| #define ao_new_port innocuous_ao_new_port
|
| /* System header to define __stub macros and hopefully few prototypes,
| which can conflict with char ao_new_port (); below.
| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
| <limits.h> exists even on freestanding compilers. */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef ao_new_port
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char ao_new_port ();
| /* The GNU C library defines this for functions which it implements
| to always fail with ENOSYS. Some functions are actually named
| something starting with __ and the normal name is an alias. */
| #if defined __stub_ao_new_port || defined __stub___ao_new_port
| choke me
| #endif
|
| int
| main ()
| {
| return ao_new_port ();
| ;
| return 0;
| }
configure:42444: result: no
-----------------------------------------------------------
So I have tried a more radical hack : adding a real ao_new_port in
libarts_xine.
This means, at least, the file config.log must not have the error.
Firstly (step 1) you must build libxine (it contains _x_ao_new_port) and
after you launch "make configure" for libarts_xine (step 2) :
Step 1] building the new libxine :
==================================
1.1) I have done a "make clean" and "make configure" in
/usr/ports/multimedia/xine.
1.2) I have added a new declaration for ao_new_port in
/usr/ports/pobj/xine-lib-1.2.6/xine-lib-1.2.6/src/xine-engine/audio_out.h
and
/usr/local/include/xine/audio_out.h
by duplicating _x_ao_new_port
1.3) I have added a new definition for ao_new_port in
/usr/ports/pobj/xine-lib-1.2.6/xine-lib-1.2.6/src/xine-engine/audio_out.c
by duplicating the code for _x_ao_new_port
1.4) I have replaced the call of _x_ao_new_port by ao_new_port in
/usr/ports/pobj/xine-lib-1.2.6/xine-lib-1.2.6/src/xine-engine/load_plugins.c
1.5) I have done a "make build", i have checked if the new files
libxine.so.32.0 and
libxine.a contain the new ao_new_port (ao_new_port.av_sync_methods and
ao_new_port.resample_modes)
The new lib seems good so i have copied the files to /usr/local/lib.
Step 2] launching configure for libarts_xine :
==============================================
2.1) Finaly I have done a "make clean" in /usr/ports/x11/kde/multimedia3
(where you create libarts_xine)
followed by a "make configure", but in config.log I have always the same
error!
So it's useless to go further.
It should work!
What is missing?
Thanks for any help.