Bug 10788 - pulseaudio canot find symbol orc_program_new_from_static_bytecode
Summary: pulseaudio canot find symbol orc_program_new_from_static_bytecode
Status: RESOLVED MOVED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: i586 Linux
Priority: Normal major
Target Milestone: ---
Assignee: Colin Guthrie
QA Contact:
URL: https://github.com/ValveSoftware/stea...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-17 19:27 CEST by Nikita Krupenko
Modified: 2013-09-08 21:28 CEST (History)
2 users (show)

See Also:
Source RPM: pulseaudio-4.0-2.mga4.src.rpm
CVE:
Status comment:


Attachments

Description Nikita Krupenko 2013-07-17 19:27:13 CEST
Description of problem:

I've found, that native version of Half-Life now works without sound. I run it from the console, and as I see from output, the game cannot connect to the pulseaudio server, because pulseaudio cannot find some symbol.
I found, that it is from liborc version 0.17 (http://upstream-tracker.org/compat_reports/liborc/0.4.16_to_0.4.17/abi_compat_report.html) that is installed.
I suppose, that pulseaudio may be incorrectly linked.


Version-Release number of selected component (if applicable):
4.0-2.mga4

Here is the program's output:

Platform config directory: platform/config
0:Initializing platform...
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: ÐÑказ в подклÑÑении

S_Startup: SNDDMA_Init failed.

AL lib: pulseaudio.c:612: Context did not connect: ÐÐµÑ Ð´Ð¾ÑÑÑпа
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: ÐÑказ в подклÑÑении

AL lib: alsa.c:512: Could not open playback device 'default': Ð Ñоединении оÑказано
AL lib: oss.c:169: Could not open /dev/dsp: ÐÐµÑ Ñакого Ñайла или каÑалога
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
/usr/bin/pulseaudio: symbol lookup error: /lib/libpulsecore-4.0.so: undefined symbol: orc_program_new_from_static_bytecode
Could not open component .so '/usr/lib/jack/jack_firewire.so': /lib/libglibmm-2.4.so.1: undefined symbol: g_regex_get_has_cr_or_lf
Could not open component .so '/usr/lib/jack/jack_firewire.so': /lib/libglibmm-2.4.so.1: undefined symbol: g_regex_get_has_cr_or_lf
jack_get_descriptor : dll jack_firewire.so is not a driver
Server module initialized.

World module initialized.

STEAM Auth Server

AppActive: active
AppActive: active
Installing breakpad exception handler for appid(steam)/version(1372892800_client)
World module shutdown.

Server module shutdown.

SDL_InitSubSystem(SDL_INIT_AUDIO) failed.
Game removed: AppID 70 "Half-Life", ProcID 6479

Reproducible: 

Steps to Reproduce:
Nikita Krupenko 2013-08-07 13:00:32 CEST

Summary: pulseaudio canot fin symbol orc_program_new_from_static_bytecode => pulseaudio canot find symbol orc_program_new_from_static_bytecode

Comment 1 Nikita Krupenko 2013-08-07 13:02:12 CEST
Seems that not only Half-Life, but all games from Steam has no sound.

Severity: normal => major

Comment 2 Marja Van Waes 2013-08-11 10:18:22 CEST
@ Colin

Sorry, I didn't do any attempt to reproduce this issue (I even never played any Steam game)

CC: (none) => marja11
Assignee: bugsquad => mageia

Comment 3 Colin Guthrie 2013-08-19 10:47:59 CEST
Interesting Nikita. Thanks for the report.

Seems quite strange actually as pulseaudio package in cauldron was build after the latest orc package, so I don't think it's incorrectly linked specifically.

That said, on my 64-bit machine, the symbols appear to be there just fine:

[colin@jimmy ~]$ strings /usr/lib64/libpulsecore-4.0.so | grep orc_program_new_from_static_bytecode
orc_program_new_from_static_bytecode
[colin@jimmy ~]$ strings /usr/lib64/liborc-0.4.so.0 | grep orc_program_new_from_static_bytecode
orc_program_new_from_static_bytecode

So both pulse and liborc seem to have the relevant symbols.


A more thorough check of liborc itself:

[colin@jimmy ~]$ readelf -Ws /usr/lib64/liborc-0.4.so.0 | grep orc_program_new_from_static_bytecode
   220: 00000037c6814290    54 FUNC    GLOBAL DEFAULT   11 orc_program_new_from_static_bytecode

And the 32-bit versions:

[colin@jimmy ~]$ readelf -Ws /usr/lib/liborc-0.4.so.0 | grep orc_program_new_from_static_bytecode
   219: 00010490    59 FUNC    GLOBAL DEFAULT   11 orc_program_new_from_static_bytecode


So for me both the 64 and 32 bit versions are OK.

I'm wondering if perhaps you have a 64 bit system, but somehow have outdated 32bit libs?

Can you show the result of rpm -qf /usr/lib/liborc-0.4.so.0?

It should say: liborc0.4_0-0.4.17-1.mga4

Cheers
Comment 4 Nikita Krupenko 2013-08-19 20:32:50 CEST
No, I have pure 32bit system.

The result of `rpm -qf /usr/lib/liborc-0.4.so.0`:

liborc0.4_0-0.4.17-1.mga4

Calling readelf on liborc also finds this symbol.

libpusecore linked with liborc:

[nekit@localhost ~]$ ldd /usr/lib/libpulsecore-4.0.so | grep liborc
liborc-0.4.so.0 => /usr/lib/liborc-0.4.so.0 (0xb725f000)

and I have only one version of that library:

[nekit@localhost ~]$ ls -l /usr/lib/liborc-0.4*
-rw-r--r-- 1 root root 2490756 ÐÑн 23 05:56 /usr/lib/liborc-0.4.a
-rwxr-xr-x 1 root root     976 ÐÑн 23 05:56 /usr/lib/liborc-0.4.la*
lrwxrwxrwx 1 root root      20 ÐÑл 15 20:02 /usr/lib/liborc-0.4.so -> liborc-0.4.so.0.17.0*
lrwxrwxrwx 1 root root      20 ÐÑл 15 20:02 /usr/lib/liborc-0.4.so.0 -> liborc-0.4.so.0.17.0*
-rwxr-xr-x 1 root root  614852 ÐÑн 23 05:56 /usr/lib/liborc-0.4.so.0.17.0*
Comment 5 Colin Guthrie 2013-08-20 15:42:32 CEST
I'm at a bit of a loss to explain this...

Can you do an "rpm -qa | grep -E '(pulse|orc)'"

I just want to see if any stale binaries are involved.

I presume PulseAudio runs OK for other apps? In which case it could just be a certain sample spec (i.e. freq) triggers the re-sampling code that causes this symbol lookup error.

Can you perhaps try putting "export PULSE_NO_SIMD=1" into your ~/.bashrc and doing a reboot to see if this helps. It should avoid any resampling code that is ASM/orc based IIRC which may help isolate the problem.
Comment 6 Nikita Krupenko 2013-08-21 20:09:06 CEST
Other PulseAudio applications and non-Steam games are OK. I added export to the .bashrc and after reboot result is the same.

[nekit@localhost ~]$ rpm -qa | grep -E '(pulse|orc)'
pulseaudio-module-bluetooth-4.0-2.mga4
pulseaudio-client-config-4.0-2.mga4
libpulsecommon4.0-4.0-2.mga4
pulseaudio-utils-4.0-2.mga4
gstreamer1.0-pulse-1.0.9-1.mga4
libpulsecore4.0-4.0-2.mga4
orc-0.4.17-1.mga4
kcolorchooser-4.10.97-1.mga4
liborc-devel-0.4.17-1.mga4
pulseaudio-module-gconf-4.0-2.mga4
liborcus0.6_0-0.5.1-8.mga4
alsa-plugins-pulse-config-1.0.27-2.mga4
libpulsecore2.99-2.99.3-1.mga3
task-pulseaudio-2011.0-3.mga3
pulseaudio-4.0-2.mga4
libpulseaudio0-4.0-2.mga4
libpulseaudio-devel-4.0-2.mga4
pulseaudio-module-x11-4.0-2.mga4
libpulseglib20-4.0-2.mga4
libalsa-plugins-pulseaudio-1.0.27-2.mga4
gstreamer0.10-pulse-0.10.31-5.mga4
libpulsecore3.0-3.0-7.mga3
libpulsecommon3.0-3.0-7.mga3
libpulsecommon2.99-2.99.3-1.mga3
liborc0.4_0-0.4.17-1.mga4
vlc-plugin-pulse-2.1.0-0.pre3.4.mga4.tainted
Comment 7 j m 2013-09-08 06:51:41 CEST
Had this happen on my Fedora 19 system today. It has been working and I have absolutely no idea what changed. I had a few Steam games that were working, but most were not, and it still works on my laptop. I'd love to know what the difference is, but I honestly have no idea.

Anyway, what I found is that it's not your system liborc that's the problem, it's the steam runtime version. 

This was my workaround:
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/liborc-0.4.so.0.16.0 ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/liborc-0.4.so.0 ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/liborc-0.4.so.0.16.0

Hope it helps you.

CC: (none) => monty19

Comment 8 Colin Guthrie 2013-09-08 12:01:34 CEST
Ahh thanks j m, yes that does explain it. Seems they are shipping an old liborc. It might also be possible to do LD_PRELOAD=/usr/lib64/liborc-0.4.so.0 (or perhaps the 32 bit path) before running steam.

Either way we cannot really fix it (in any way I can think off). It's perhaps worth reporting to the guys upstream tho' to see if they'll ship a newer liborc officially which shouldn't hurt anyone.
Nikita Krupenko 2013-09-08 16:31:54 CEST

URL: (none) => https://github.com/ValveSoftware/steam-for-linux/issues/2834

Comment 9 Colin Guthrie 2013-09-08 16:49:52 CEST
Thanks for the upstream report+link.

I think we should probably close this bug report here as there is likely little we can do at our end (if you find a way in which we can do something clever to work around this, then please feel free to reopen!)

Sadly we don't have a "Resolved, Upstream" resolution so I'll use "moved" for want of something better :)

I'm watching the github issue also.

Status: NEW => RESOLVED
Resolution: (none) => MOVED

Comment 10 j m 2013-09-08 21:28:51 CEST
No problem. You could also try to export 'STEAM_RUNTIME=0 steam' or export it in your .bashrc or somewhere. That worked for me for some things

But the problem with that is you will need to make sure you have every dependency installed by hand. And then they have things like libssl.so.1.0.0 in the runtime that games are linked against whereas on my distro I have libssl.so.1.0.1e, so you end up in the create links and pray scenario, which doesn't seem any more ideal.

Valve updating the version they provide is probably the right answer in the end.

Note You need to log in before you can comment on or make changes to this bug.