http://bugs.winehq.org/show_bug.cgi?id=29744
Bug #: 29744 Summary: STALKER-SoC/CoP hangs at splash screen due to OpenAL32 Product: Wine Version: 1.3.37 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: blocker Priority: P2 Component: openal32 AssignedTo: wine-bugs@winehq.org ReportedBy: roland@rptd.ch CC: wine-bugs@winehq.org Classification: Unclassified
Starting STALKER-SoC using wine 1.3.37 results in the splash screen shown and then the game hangs. Testing shows that if openal32 is overwritten to be "native" and an OpenAL32.dll from the Internet is used (overwriting OpenAL32.dll in bin directory) the game runs and can be played albeit there is no sound output.
So there are two bugs:
1) "openal32" set to "builtin" => game hangs at splash screen
2) "openal32" set to "native" + replace OpenAL32.dll => game playable but no sound
Could not get further information about the problem. Debug output of wine shows nothing helpful. Looks like the builtin OpenAL is broken and causes the hang most probably on initializing the sound system somehow.
Testing system is GenToo amd64. Installed system openal is media-libs/openal-1.13 . No Pulsed-Audio is installed. Sound output with ALSA works. Sound output with DSound works (tested on various other games). Only OpenAL32 seems to be affected by this bug.
STALKER-CoP does not run no matter with or without setting "openal32" to "native" so most probably a special OpenAL32 would be required to get at last in-game.
http://bugs.winehq.org/show_bug.cgi?id=29744
Vitaliy Margolen vitaliy-bugzilla@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|blocker |minor
--- Comment #1 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-01-29 16:26:22 CST --- Not blocker.
Check that you properly compiled your openAL, including wine's openal32.dll and that it's properly configured in your system.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #2 from Plüss Roland roland@rptd.ch 2012-01-29 21:00:33 CST --- (In reply to comment #1)
Not blocker.
If the game doesn't run (hangs) then I most certainly call this a blocker (severe problem).
Check that you properly compiled your openAL, including wine's openal32.dll and that it's properly configured in your system.
Yes it is properly compiled (I gamedev with it, and it works, and other games work with it properly too). Also wine compiles and installs properly (no emerge failures). What you mean now with "properly configured" I don't know. As mentioned I game-dev with the system installed OpenAL as well as other games (native ones) running fine with it.
For your infos attached the openal-info so you see it's not the problem with my system configuration.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #3 from Plüss Roland roland@rptd.ch 2012-01-29 21:03:02 CST --- Created attachment 38598 --> http://bugs.winehq.org/attachment.cgi?id=38598 openal-info
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #4 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-01-30 09:09:26 CST --- What does this command show when you run it in Wine source directory, after you configured Wine? grep OPENAL include/config.h
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #5 from Plüss Roland roland@rptd.ch 2012-01-30 13:42:30 CST --- (In reply to comment #4)
What does this command show when you run it in Wine source directory, after you configured Wine? grep OPENAL include/config.h
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine64
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine32
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #6 from Austin English austinenglish@gmail.com 2012-01-30 14:41:33 CST --- (In reply to comment #5)
(In reply to comment #4)
What does this command show when you run it in Wine source directory, after you configured Wine? grep OPENAL include/config.h
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine64
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine32
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
Perhaps you're missing a 32-bit openal?
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #7 from Plüss Roland roland@rptd.ch 2012-01-30 15:03:25 CST --- (In reply to comment #6)
(In reply to comment #5)
(In reply to comment #4)
What does this command show when you run it in Wine source directory, after you configured Wine? grep OPENAL include/config.h
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine64
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
called from /var/tmp/portage/app-emulation/wine-1.3.37/work/wine32
#define HAVE_OPENAL 1 /* #undef HAVE_OPENAL_AL_H */ #define SONAME_LIBOPENAL "libopenal.so.1"
Perhaps you're missing a 32-bit openal?
No, there is a 32 and 64 bit version of the library. Here a listing of what is installed:
# find lib* -name "libopenal.so*" | xargs -- dir -l lrwxrwxrwx 1 root root 14 Oct 22 17:13 lib32/libopenal.so -> libopenal.so.1 lrwxrwxrwx 1 root root 21 Oct 22 17:13 lib32/libopenal.so.1 -> libopenal.so.1.11.753 -rwxr-xr-x 1 root root 186680 Sep 28 14:07 lib32/libopenal.so.1.11.753 lrwxrwxrwx 1 root root 14 Mar 26 2011 lib64/libopenal.so -> libopenal.so.1 lrwxrwxrwx 1 root root 19 Mar 26 2011 lib64/libopenal.so.1 -> libopenal.so.1.13.0 -rwxr-xr-x 1 root root 294048 Mar 26 2011 lib64/libopenal.so.1.13.0
The versions are different for whatever reason. I don't think this should be a problem though unless Wine expects a specific openal version.
http://bugs.winehq.org/show_bug.cgi?id=29744
Robert Walker robert_mt_walker@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |robert_mt_walker@yahoo.co.u | |k
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #8 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-01-30 18:44:08 CST --- Different versions mean they came from different packages. This also means what you say "it works for everything else" invalid. You were testing 64-bit binaries weren't you?
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #9 from Plüss Roland roland@rptd.ch 2012-01-30 20:47:18 CST --- (In reply to comment #8)
Different versions mean they came from different packages. This also means what you say "it works for everything else" invalid. You were testing 64-bit binaries weren't you?
32bit and 64bit binaries. I ran a quick qfile on the 32bit library. The 64-bit library comes from media-libs/openal and the 32bit one from app-emulation/emul-linux-x86-sdl . So far this is fine since this is how GenToo handles 32bit libraries. I also ran a full find on the libraries so here it goes:
# find lib* -name "*openal*" lib32/libopenal.so lib32/wine/openal32.dll.so lib32/wine/fakedlls/openal32.dll lib32/libopenal.so.1.11.753 lib32/libopenal.so.1 lib64/libopenal.so lib64/wine/openal32.dll.so lib64/wine/fakedlls/openal32.dll lib64/debug/usr/lib32/wine/openal32.dll.so.debug lib64/debug/usr/lib64/wine/openal32.dll.so.debug lib64/libopenal.so.1.13.0 lib64/pkgconfig/openal.pc lib64/libopenal.so.1
So obviously wine installs an openal32.dll.so in both the 32bit and 64bit library path. I assume these overwrite the system openal libraries when wine runs so the problem should be entirely inside wine then (since these libraries override the system ones).
Anything else that I could run to narrow down where wine has a problem?
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #10 from Plüss Roland roland@rptd.ch 2012-01-30 21:10:50 CST --- Created attachment 38611 --> http://bugs.winehq.org/attachment.cgi?id=38611 EnumerateWin32.exe
For testing purpose installed OpenAL SDK Win32 version into a clean wineprefix and ran EnumerateWin32.exe to test if the OpenAL library is found properly. This is the output.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #11 from Plüss Roland roland@rptd.ch 2012-01-30 21:19:36 CST --- Some more testing with the OpenAL SDK in the clean wineprefix. If "openal32" is set to "builtin" the sample binaries hang. Using "openal32" as "native" (and using oalinst.exe from the sdk) removes the hang and the test sounds play. This shows a bit more clearly where the wine openal is bugged.
With "native" the following output happens for example in EFXReverbWin32.exe :
EFX Reverb Application
Select OpenAL Device:
- Generic Software(DEFAULT)
Opened Generic Software Device Playing Source without Effects Playing Source with Send to 'Hangar' Reverb Effect Playing Source with Send to 'Bathroom' Reverb Effect
Press a key to quit
With "builtin" the output hangs like this:
EFX Reverb Application
Hence the hanging seems to happen while scanning for openal devices. Since EnumerateWin32.exe does not hang I would conclude the test application tries to open the individual devices found by the enumeration to test if they are usable for the test. So I conclude the bug is in the device opening code in wine openal library somewhere. Maybe wine can't handle opening certain enumerated openal devices?
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #12 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-01-31 08:38:58 CST --- Wine does not open any devices with built-in OpenAL. All calls are forwarded to system OpenAL library. You have broken 32-bit library installed. And you verified that it belonged to a different then 64-bit version.
Wine's openal is a thin wrapper around system's opanal library. It does not replace it. As I said earlier, test your setup with 32-bit Linux program.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #13 from Plüss Roland roland@rptd.ch 2012-01-31 14:26:47 CST --- (In reply to comment #12)
Wine does not open any devices with built-in OpenAL. All calls are forwarded to system OpenAL library. You have broken 32-bit library installed. And you verified that it belonged to a different then 64-bit version.
Wine's openal is a thin wrapper around system's opanal library. It does not replace it. As I said earlier, test your setup with 32-bit Linux program.
I hate to repeat myself. I said that I tested (quote)"32bit and 64bit binaries". So the 32bit OpenAL is "perfectly" fine and running with 32bit games or apps. Only wine seems to have a problem both with these games as well as the OpenAL SDK samples as I just tested. I don't know what the problem is but since everything else (32bit) works with the very same openal 32bit library but wine doesn't I just have a hard time believing every other game/application has a lucky time running and wine is the correct working guy in the rink.
Anything with which further tests can be made to narrow down where wine messes up? If the layer is thin then there has to be a way to debug where the problem comes from. Maybe the thin layer has a bug somewhere and doesn't forward properly? Can it be wine loads a different library than the one (the system one) it has been linked against? In my last post I showed that there are special wine openal libraries around. Are they just adaptors or why are there wine versions of the openal library if it is just a wrapper? Just trying to narrow down the problem as only this is going to fix wine not claiming everything else is faulty.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #14 from Plüss Roland roland@rptd.ch 2012-01-31 14:44:13 CST --- Noticed something else. I happened to have Blender open when I did this test here which blocks an unrelated openal device (default ALSA output is a different device). The blocked device is "OSS Software" in the latest attachment I posted. Trying to run a sample test program to check on the hanging I noticed the same error message printed to the consoles as the enumeration test program trying to open the blocked "OSS Software" software. With other words it looks like wine tries not to open the "ALSA Software" device as it should but it tries to use the "OSS Software" one which is outdated and not supported anymore.
So the problem is either that wine fails to send the correct enumeration data (meaning, not translating it for "windows" world) or that it doesn't open the correct default ALSA device when being asked to.
Is there a way I can force wine to use a specific openal device? Or some debug output I can enable to see what wine does during enumeration and opening of devices?
http://bugs.winehq.org/show_bug.cgi?id=29744
Raymond superquad.vortex2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |superquad.vortex2@gmail.com
--- Comment #15 from Raymond superquad.vortex2@gmail.com 2012-02-02 00:06:54 CST ---
(In reply to comment #10)
Created attachment 38611 [details] EnumerateWin32.exe
For testing purpose installed OpenAL SDK Win32 version into a clean wineprefix and ran EnumerateWin32.exe to test if the OpenAL library is found properly. This is the output.
you are using openal-soft , check drivers in .alsoftrc
## drivers: # Sets the backend driver list order, comma-seperated. Unknown backends and # duplicated names are ignored. Unlisted backends won't be considered for use # unless the list is ended with a comma (eg. 'oss,' will list OSS first # followed by all other available backends, while 'oss' will list OSS only). # An empty list means the default. #drivers = alsa,pulse,oss,solaris,dsound,winmm,port,wave drivers = alsa
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #16 from Plüss Roland roland@rptd.ch 2012-02-02 07:34:26 CST --- (In reply to comment #15)
(In reply to comment #10)
Created attachment 38611 [details] EnumerateWin32.exe
For testing purpose installed OpenAL SDK Win32 version into a clean wineprefix and ran EnumerateWin32.exe to test if the OpenAL library is found properly. This is the output.
you are using openal-soft , check drivers in .alsoftrc
## drivers: # Sets the backend driver list order, comma-seperated. Unknown backends and # duplicated names are ignored. Unlisted backends won't be considered for use # unless the list is ended with a comma (eg. 'oss,' will list OSS first # followed by all other available backends, while 'oss' will list OSS only). # An empty list means the default. #drivers = alsa,pulse,oss,solaris,dsound,winmm,port,wave drivers = alsa
I have no such file. Where is it supposed to be?
Besides why would such a file be required? OpenAL is compiled without OSS, PortAudio or PulseAudio:
media-libs/openal-1.13 USE="alsa -debug -oss -portaudio -pulseaudio"
OpenAL could never use OSS even if it wanted to. So wine tries to make the game using the OSS device although OpenAL is not compiled to expose it. The problem has to be in wine somewhere if it talks to windows binaries about an OSS device that doesn't exist on the system to begin with.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #17 from Plüss Roland roland@rptd.ch 2012-02-02 07:38:48 CST --- Concerning this you can also look at attachment #1: openal-info. As you can see there the system openal reports only ALSA device no OSS yet wine reports to the game an OSS device and even calls it the default.
http://bugs.winehq.org/show_bug.cgi?id=29744
Vitaliy Margolen vitaliy-bugzilla@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|openal32 |-unknown
--- Comment #18 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-02 20:30:06 CST ---
I have no such file. Where is it supposed to be?
$HOME
wine reports to the game an OSS device and even calls it the default.
That's what you obviously selected in winecfg.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #19 from Plüss Roland roland@rptd.ch 2012-02-02 20:37:44 CST --- Created attachment 38671 --> http://bugs.winehq.org/attachment.cgi?id=38671 Wine configuration (set to ALSA but openal tries to use OSS)
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #20 from Plüss Roland roland@rptd.ch 2012-02-02 20:38:59 CST --- (In reply to comment #18)
I have no such file. Where is it supposed to be?
$HOME
wine reports to the game an OSS device and even calls it the default.
That's what you obviously selected in winecfg.
Attachment #38671 : Wine is set to use ALSA as you can see from the screenshot. Nevertheless OpenAL gets reported to use OSS instead. Sound plays fine using the test button on winecfg audio panel.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #21 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-03 08:24:41 CST --- Wine does not tell openal what device to use. You have to do it using $HOME/.alsoftrc file.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #22 from Plüss Roland roland@rptd.ch 2012-02-03 13:52:44 CST --- Okay, using that hack fixes the problem (both SoC and CoP have sound now without hanging). So it's definitely a bug in wine trying to use OSS although it's not compiled into OpenAL (thus ignoring the system defaults) as any other application uses the correct default OpenAL device (except wine). This is a working work-around but can't be the solution.
So my proposal is status NEEDS_FIX and to introduce an option to the audio properties panel to allow selecting the default OpenAL device or reading the system default correctly to tell windows binaries the correct default OpenAL device.
No the next problem is non-functionality of mouse in CoP. Making a new bug report for that one.
http://bugs.winehq.org/show_bug.cgi?id=29744
Vitaliy Margolen vitaliy-bugzilla@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID
--- Comment #23 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-03 17:57:13 CST --- As initially pointed out - invalid. You have to configure your system yourself. Wine's sound configuration does not applies to OpenAL.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #24 from Raymond superquad.vortex2@gmail.com 2012-02-03 21:00:09 CST --- (In reply to comment #22)
Okay, using that hack fixes the problem (both SoC and CoP have sound now without hanging). So it's definitely a bug in wine trying to use OSS although it's not compiled into OpenAL (thus ignoring the system defaults) as any other application uses the correct default OpenAL device (except wine). This is a working work-around but can't be the solution.
it is a bug in openal-soft if you include portaudio since portaudio probe all supported devices (check whether portaudio has oss as backend)
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #25 from Plüss Roland roland@rptd.ch 2012-02-03 22:05:37 CST --- Guys are you actually "listening" or just trying to avoid having to fix bugs?!
As I pointed out already above openal is "NOT" compiled with pulseaudio or oss. Anything "but" wine does this "correct" and uses ALSA. So if "only" wine doesn't handle it correctly then why is it a bug in openal? If this would be the case "all" software would fail in the same way but it is "only" wine that fails.
I don't know what the problem is inside wine but there definitely is one otherwise it would have worked like anything else and I should know as I develop with OpenAL and "oh miracle" my app gets ALSA as the default when I ask for the default but Wine returns a device that doesn't even exist (as in not compiled in). See the openal-info I posted above. Wine returns OSS as default although openal doesn't enumerate OSS at all. If that is a bug in openal then I'm Santa Clause U_U
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #26 from Raymond superquad.vortex2@gmail.com 2012-02-05 06:04:55 CST --- (In reply to comment #25)
I don't know what the problem is inside wine but there definitely is one otherwise it would have worked like anything else and I should know as I develop with OpenAL and "oh miracle" my app gets ALSA as the default when I ask for the default but Wine returns a device that doesn't even exist (as in not compiled in). See the openal-info I posted above. Wine returns OSS as default although openal doesn't enumerate OSS at all. If that is a bug in openal then I'm Santa Clause U_U
openal was used by wine to implement mmdevapi two years ago.
http://source.winehq.org/git/wine.git/commit/7b36f6658b3d221fb58cedcbc494a5d...
wine's mmdevapi was rewritten using native sound api (alsa, coreaudio and ossv4) last year
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #27 from Plüss Roland roland@rptd.ch 2012-02-05 08:57:45 CST --- So wine doesn't actually wrap OpenAL but tries to figure out the hardware on it's own? In this case the detection code would have a bug as it reports OSS although not existing.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #28 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-05 10:56:09 CST --- Raymond, what are you talking about? And how is that relevant to this bug?
(In reply to comment #27) No, Wine really just wraps system OpenAL libraries. The only minor addition is in context handling. See for yourself: http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/openal32/openal.c
http://bugs.winehq.org/show_bug.cgi?id=29744
Vitaliy Margolen vitaliy-bugzilla@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #29 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-05 10:56:17 CST --- Closing
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #30 from Plüss Roland roland@rptd.ch 2012-02-06 07:06:48 CST --- (In reply to comment #28)
Raymond, what are you talking about? And how is that relevant to this bug?
(In reply to comment #27) No, Wine really just wraps system OpenAL libraries. The only minor addition is in context handling. See for yourself: http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/openal32/openal.c
Something has to be wrong though in Wine. If I query OpenAL directly using my game engine for example I get "ALSA Default" and it is also the default but Wine doesn't. Is there a way to track the exact function calls, their parameters and return values without hacking the source code? This could give an insight where Wine messes up.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #31 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-06 08:39:36 CST --- (In reply to comment #30) You can try +relay, but that's a lot of noise.
http://bugs.winehq.org/show_bug.cgi?id=29744
--- Comment #32 from Plüss Roland roland@rptd.ch 2012-02-06 17:53:11 CST --- (In reply to comment #31)
(In reply to comment #30) You can try +relay, but that's a lot of noise.
Can I restrict the noise to only openal32 or can I only define what not to output?