ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.22k stars 174 forks source link

Crashes when using steam voice/microphone #1853

Closed Dubanubiel closed 11 years ago

Dubanubiel commented 11 years ago

Ever since the official launch of steam for Linux, TF2 will crash when I hit the microphone button. It will usually work the first couple of times but then it will freeze up, sort of catch itself, be REALLY slow and buggy, and then won't close without having to turn off my computer. I can Alt+tab away and shutdown but I can't even kill TF2 using system monitor.

Processor Information: Vendor: AuthenticAMD Speed: 2800 Mhz 2 logical processors 2 physical processors HyperThreading: Unsupported FCMOV: Supported SSE2: Supported SSE3: Supported SSSE3: Supported SSE4a: Supported SSE41: Unsupported SSE42: Unsupported

Network Information: Network Speed:

Operating System Version: Ubuntu 12.10 (32 bit) Kernel Name: Linux Kernel Version: 3.5.0-23-generic X Server Vendor: The X.Org Foundation X Server Release: 11300000 X Window Manager: Compiz Steam Runtime Version:

Video Card: Driver: NVIDIA Corporation GeForce 9800 GTX+/PCIe/SSE2/3DNOW!

Driver Version:  3.3.0 NVIDIA 304.43
Desktop Color Depth: 24 bits per pixel
Monitor Refresh Rate: 59 Hz
VendorID:  0x10de
DeviceID:  0x613
Number of Monitors:  1
Number of Logical Video Cards:  1
Primary Display Resolution:  1440 x 900
Desktop Resolution: 1440 x 900
Primary Display Size: 16.06" x 10.04"  (18.94" diag)
                                        40.8cm x 25.5cm  (48.1cm diag)
Primary Bus: PCI Express 16x
Primary VRAM: 512 MB
Supported MSAA Modes:  2x 4x 8x 16x 

Sound card: Audio device: Realtek ALC889A

Memory: RAM: 4036 Mb

Miscellaneous: UI Language: English LANG: en_CA.UTF-8 Microphone: Not set Total Hard Disk Space Available: 202004 Mb Largest Free Hard Disk Block: 123696 Mb

Installed software:

Recent Failure Reports: Sun Feb 17 01:29:17 2013 GMT: file ''/tmp/dumps/assert_20130216202905_1.dmp'', upload yes: ''CrashID=bp-913d3f0f-27b9-4711-98fc-4f1712130216''

NothingMuchHereToSay commented 11 years ago

@gdrewb-valve That really sucks, but all you have to do is uninstall PulseAudio, apparently Alsa CAN handle more than one stream, sadly though, there's no sound notification on Unity (Ubuntu) anymore.

vadi2 commented 11 years ago

I've read the entire thread, as I have recently started playing Guns of Icarus Online, and got about 14 hangs in a period of three hours. Uninstalling PA isn't an option for me - it's really ingrained in the Ubuntu desktop, and I don't want to deal with the mess that happens without it (I also use a USB headset).

So I've went to Steams Settings, Voice, and set it to use my USB headset for voice input via ALSA - not PulseAudio like it offered. My voice still works and the game hasn't hung yet!

forivall commented 11 years ago

Setting the voice input to ALSA didn't solve the issue for TF2.

BotoX commented 11 years ago

Setting the voice input to ALSA doesn't help here aswell. Steam still uses PulseAudio for voice input and output. And when setting SDL_AUDIODRIVER to ALSA Counter-Strike: Source uses ALSA for output but voice input is still going through steam and crashes it pretty often. That really is starting to piss me off since it happens at least 10 times a day. I thought switching to pulse was a step forward, not behind.

vadi2 commented 11 years ago

Can anyone else who plays Guns of Icarus Online confirm what I've found? It could be that there's a difference between how TF2 and this game use the voice API. I really haven't had a crash since, and was getting them very regularly before.

nake90 commented 11 years ago

I've been playing Guns Of Icarus today without crashing. I'm using the beta version of Steam, under debian testing (amd64), and with the output set to use ALSA instead of the default PulseAudio as stated by vadi2 a few comments before.

However I didn't have time to test it enough to feel that the crash won't occur again. As son as I can I'll try to test it more.

DerRidda commented 11 years ago

I also own Guns of Icarus but haven't played it all that much yet, can anyone provide some updates to this? Are you using Pulse in your case @vadi2?

BotoX commented 11 years ago

The crash bug is still persistant and it happened to me more than 10 times today and I just removed pulseaudio and switched to alsa. Couldn't stand playing like this anymore. Please update when you've fixed this issue so I can test it.

vadi2 commented 11 years ago

@DerRidda: Yes, using PulseAudio. These are my audio settings in Steam that has eliminated crashes:

select sound input_328

35 hours played and pretty much no crashes, whereas I got 14 in the first 3 hours.

Oh and this is set in the Voice tab, and this is the mic input, not speakers output... don't confuse this.

DerRidda commented 11 years ago

@gdrewb-valve: This is a routine inquiry asking about any progress in tackling this issue. It's 4 month since the first reports appeared and I would rather not have it become a two digit number.

Has any cooperation with the PulseAudio and/or OpenAL devs happened? I have been following the Steam beta client change log and the only thing I was hoping to see on there was at least an experimental fix regarding this issue. Now that the beta client has been pushed out to stable I really hope the next beta run will try to find means to at least circumvent this specific problem.

gdrewb-valve commented 11 years ago

I don't have any good news for you. We haven't gotten any engagement from pulseaudio and things are stalled. It's difficult to impossible for us to work around the issue since we don't know what's going wrong to work around (other than the heavy-weight workarounds detailed here).

MrPopinjay commented 11 years ago

So, zero progress in 4 months...?

joshuajonah commented 11 years ago

AKA: It works enough for people to buy games on Linux, and that's all they care.

On 13-06-17 04:18 PM, MrPopinjay wrote:

So, zero progress in 4 months...?

— Reply to this email directly or view it on GitHub https://github.com/ValveSoftware/steam-for-linux/issues/1853#issuecomment-19571696.

MrPopinjay commented 11 years ago

Well it doesn't. At least not for me. I've gone from being an occasional WINE gamer, to an enthusiastic Linux gamer, to not gaming at all.

It's just too frustrating playing games that require teamwork and being mute.

McAndze commented 11 years ago

I'm sad to see this problem have gone unfixed for so long. Is there any way we can help in getting the attention from the guys at PulseAudio? We probably can't file a bug report, and spamming them is not an option either, but we may be able to assist @gdrewb-valve by showing how many are affected by this. In the end, it's exactly things like these that will decide the fate of the future of gaming in Linux. @gdrewb-valve have you not received any answer at all from the PulseAudio guys?

vadi2 commented 11 years ago

I'll help in any way I can as well as a user.

gdrewb-valve commented 11 years ago

I haven't gotten any response of any kind to my bug report.

McAndze commented 11 years ago

It's a bit early too tell, but I think using SDL_AUDIO=alsa fixed the crashing without screwing up my audio setup in Ubuntu 13.04. I also got the microphone working after trying different devices within Steam. I'll report bug when I've done some more testing. For now, sleep.

vadi2 commented 11 years ago

Like I mentioned earlier in the thread, just setting the mic to an alsa device worked for me on Guns of Icarus fairly successfully. I don't want to screw up the audio setup in my OS either.

RPG-Master commented 11 years ago

In the Steam settings I set my input to "ALSA Default". I thought I had fixed it, because I was able to talk with folks just fine in TF2. But unfortunately after about an hour of playing the game stuttered, I stopped being able to talk and hear people. I was able to play for maybe another 15 and then both TF2 and Steam crashed.

adaricmar commented 11 years ago

For those posting about success when choosing ALSA as an input source in steam: does your microphone continue to function(i.e. players can still hear you) when switching to a different server or changing a map?

vadi2 commented 11 years ago

I don't play TF, I play Guns of Icarus - and yeah, switching maps, matches is fine.

I also selected my microphone via alsa specifially - not the "alsa default" option.

McAndze commented 11 years ago

@adaricmar - Yep, works fine for me. Make sure you've selected the correct device in Steam settings.

DerRidda commented 11 years ago

@gdrewb-valve: After all these other fine gentleman have pointed out setting the Steam voice settings to use the very specific ALSA device instead of just "ALSA default" I tried it myself in CS:S and it actually seems to work. Do you know what the difference between the two is? Would that be a solution? Omit all the PulseAudio options and the "ALSA default" setting from just the voice options and "force" Steam/the user to pick a specific ALSA device, that is.

doug65536 commented 11 years ago

I'm pretty sure picking ALSA in voice won't help. It is just an illusion that pulseaudio presents to programs - pulseaudio is still in control of the audio. Can someone confirm that picking ALSA and playing for hours straight with lots of mic use doesn't crash? It crashes for me. Also, when I do that, I have to repeatedly click DETECT DEVICES then TEST MICROPHONE, until it starts working. Usually 3 or 4 times at least. If I don't, the mic doesn't work. Even with pulseaudio uninstalled it is like that.

Since I first posted here I've switched to a different distribution of Linux, I was on Ubuntu 12.10 and now I'm on Linux Mint 14 (MATE desktop) 64 bit. The crash is still essentially the same, but now, it is slightly different.

On Ubuntu, the crash resulted in an endless hang. On Linux Mint, what happens is, it freezes momentarily, then the display at the top that shows the F4 checkboxes has 2x more people (12 if there are 6 players, with the second 6 being duplicates of the first). It's definitely a memory corruption.

After the memory corruption, mic stops working, the game resumes running, and after a while, the server kicks me with a message "You must be logged in to Steam" (and I still am logged in to steam).

I've since removed pulseaudio and I don't have the problem. This is definitely not a good solution, because I can't record screencasts this way (I use ffmpeg to record games, and I need pulseaudio to be able to capture game sound).

If I were on the TF2 development team, I would find what variables would cause the players display at the top to be doubled, and set a hardware data breakpoint one of those variables. That or perhaps a variable involved with checking if the player is still logged on to steam. With a bit of luck, your machine will break into the debugger with the exact call stack that is causing the issue (right at whatever instruction is clobbering that memory).

Forget the pulseaudio people, they won't help. They will deny it and give you a list of excuses and other things to blame, like the game itself, ALSA, your audio driver, your kernel, your hardware, etc. From what I've seen, they take any criticism or issues with pulseaudio personally. All professional software developers know, all code has bugs. Usually lots of bugs.

DerRidda commented 11 years ago

@doug65536: Don't be too dismissive of the ALSA setting, I tried to set it to "ALSA default" plenty of times before but that didn't change a thing but for some reason that is totally beyond me selecting the device directly seems to be different and has also seemingly fixed it for me, with PulseAudio still installed of course. So far I have played several 2+ hours sessions of CS:S with heavy voice usage, multiple map changes and not encountered the problem again while this time frame usually was enough to trigger the crash under PulseAudio.

About that DETECT DEVICES and TEST MICROPHONE behavior: Yes, when selecting the specific ALSA device it behaves the same for me, for some reason half the time the test won't work unless I click detect devices again but in-game it works all the time, seems to be more of a Steam derp than an actual ALSA problem.

I strongly recommend that you install PulseAudio again and try it this way yourself, we need more people to test this and report back as many people will just stop communicating as soon as their issue disappears for them.

Maybe you will be able to do screencasts again.

McAndze commented 11 years ago

@doug65536 I can confirm as well. I haven't had a single crash with this setup. Here is what i do:

  1. Start Steam with SDL_AUDIO=alsa
  2. Manually select my microphone in Steam settings (default device doesn't work).
  3. Profit.

I have played many hours without any crashes in both Garry's mod and CS:S. It does not break system-audio, nor does it function any differently in-game. It just works. I have had one of those loop-freezes, but the game survived and so did Steam and therefore voice-chat. Test microphone does seem to be a little unpredictable, but others can hear me fine all the time.

While I'm disappointed that this issue has yet to be fixed, whether it's because of Steam or PulseAudio (I wouldn't wonder if PulseAudio would just ignore it, they do seem pretty dismissive about any issues), I'm glad I can at least play properly now.

BotoX commented 11 years ago

@McAndze I'm sorry to say this but you're wrong. I tried this a while ago and retried it right now. I've set the audio device in steam to ALSA and started it through SDL_AUDIO=alsa steam. I've opened pavucontrol on my second screen and tried out the mic test in steam itself: it uses Pulse Tried with the test in the steam overlay: it uses Pulse And last, I tried it ingame and: it uses Pulse Every time I use my voice activation key it opens a new audiostream in the record tab of pavucontrol. Even though counter-strike uses ALSA for outputting sound.

DerRidda commented 11 years ago

@BotoX: But is it still crashing this way?

BotoX commented 11 years ago

Well, that'd require some testing but since it still relies on pulse and none of the devs said that this issue has been resolved I guess it does crash. I tested it before and it was crashing so I'm pretty sure it'll still do so. I can test it, though I have to learn right now and rather not play games :P

BotoX commented 11 years ago

It just crashed, back to ALSA I go.

DerRidda commented 11 years ago

Are you absolutely certain that you explicitly selected the ALSA device that corresponds to your microphone in the Steam settings' voice tab? As was stated before "ALSA default" will not work. I doubt because of how casually you just wrote "I've set the audio device in steam to ALSA".

I'm asking again because everyone that has tried it so far has no crashing problems anymore including people that are not following this issue.

BotoX commented 11 years ago

I guess that's how you do it, isn't it? This is after I removed pulse again. bildschirmfoto - 25 06 2013 - 00 28 55

vadi2 commented 11 years ago

Yes, that's what I've been mentioning - select your actual device [via ALSA]. Not the 'ALSA Default' option.

Yes, it still uses PA technically - whatever, the point is, it really helps mitigate the crashes.

joshuajonah commented 11 years ago

So this actually is a steam issue?

Vadim Peretokin notifications@github.com wrote:

Yes, that's what I've been mentioning - select your actual device [via ALSA]. Not the 'ALSA Default' option.

Yes, it still uses PA technically - whatever, the point is, it really helps mitigate the crashes.


Reply to this email directly or view it on GitHub: https://github.com/ValveSoftware/steam-for-linux/issues/1853#issuecomment-19941346

vadi2 commented 11 years ago

I don't know. No information we have verifies fault on either side. Changing the way steam gets its audio does have an effect, but it could be a bug in PA or Steam equally.

McAndze commented 11 years ago

@BotoX While it may not work for you, I am not wrong. I haven't had a single crash after doing this. I do not know exactly what effect this has on anything, as it is still using PA, but I know it makes a difference. I haven't had a single crash since I set up Steam this way.

DerRidda commented 11 years ago

Oh dear, is anyone else experiencing crashes again with the ALSA device work around in use since the latest Steam client updates? Because I am and it's happening in way shorter time frames than all the time I have used it before when it was still working.

DerRidda commented 11 years ago

Seems like false alarm but an interesting discovery came out of this: i was using mumble before I started playing CS:S during which I saw these crashes again. Turns out Mumble didn't seem to have quit properly and there was still a speex-dispatcher process running, as soon as I killed that process manually the crashes went away again.

I don't know if anything of value can be deduced from that but i thought I'd mention it.

linusseelinger commented 11 years ago

Starting steam with "SDL_AUDIO=alsa steam" from terminal and selecting the ALSA device manually in steam settings, I get a lot of

AL lib: alsa.c:771: Could not open capture device 'plughw:0,0': Das Gerät oder die Ressource ist belegt

when using voice chat in guns of icarus. (the last part of the output means something like the device or resource is occupied)

In the background, I had mumble running, with voice activation. Don't know if mumble makes a difference, maybe it's a problem that steam/guns of icarus and mumble are in some sort of a race condition for the device?

EJahren commented 11 years ago

I am also having this problem. Sometimes when using the voice button, steam crashes and the game freezes for a while. Then it unfreezes after a while but I cant play since steam is not running.

gdrewb-valve commented 11 years ago

Just a bit more info for tracking: a user posted on the Steam forums that they're actually seeing PulseAudio fail with out-of-memory. Apparently pulse then aborts the process, which is very unfriendly behavior.

mmap() failed: Cannot allocate memory mmap() failed: Cannot allocate memory Assertion 'b' failed at pulsecore/memblock.c:454, function pa_memblock_acquire(). Aborting.

http://steamcommunity.com/app/221410/discussions/0/882966057032293824/

DerRidda commented 11 years ago

So, now that you know what is happening and where is there anything you could do to anticipate and prevent it?

gdrewb-valve commented 11 years ago

Unfortunately no, as we have no visibility into what PA is asking for, plus it's hard to estimate when a memory allocation will fail in general. Even if we knew when a problem would occur the best we could do would be to simply stop using voice chat since we don't have a way to prevent an allocate in the guts of PA. That's a bit better than crashing but not a great user experience.

vadi2 commented 11 years ago

Hm, but this also happens to people on 64bit machines.

gdrewb-valve commented 11 years ago

Steam and TF2 are both 32-bit applications.

vadi2 commented 11 years ago

Ahh, sorry then.

Jookia commented 11 years ago

Using SDL_AUDIO=alsa 'fixes' the crash, but also just allocated more and more memory on the heap (maybe it's not freeing it?) until eventually all 4GB of my system memory is gone.

Note that this is allocated by hl2_linux, not in a shared library. This is through smaps:

08ad6000-24fdf000 rw-p 00000000 00:00 0                                  [heap]
Size:             463908 kB
Rss:              463792 kB
Pss:              463792 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:    463792 kB
Referenced:       267304 kB
Anonymous:        463792 kB
AnonHugePages:    151552 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
VmFlags: rd wr mr mw me ac
gdrewb-valve commented 11 years ago

That would be 463MB, wouldn't it? That's not an excessive size.

gdrewb-valve commented 11 years ago

This appears to be related to the pa_memblock_acquire problem: https://bugs.freedesktop.org/show_bug.cgi?id=43269. It suggests there's a bug fix available: http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=dfd44036b54d65314664622ff93dfd18eee03c7b.

We will apply that in the Steam runtime version of PA. That will definitely fix the Assertion 'b' failed issue, but whether it fixes everything is unclear. I know some people here have built their own PA, if somebody's interested and applies the patch and overrides the Steam runtime PA please let me know how it goes.