ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.23k 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''

Jookia commented 11 years ago

Hmm, well that's the biggest amount I could find in smaps. It was taking up at least a few gigs of my RAM and leaking, I'm positive of that. Disabling shm on PulseAudio stops the crashes but voice still fails, it actually breaks my PulseAudio config.

I was unaware that the Steam runtime overrides PulseAudio, I'm running PulseAudio 4 on my system.

Jookia commented 11 years ago

Removing any libraries with the name 'pulse' in them in the Steam Runtime doesn't fix this. That's on the assumption it falls back and uses my PulseAudio 4, as that patch was supposedly included in PulseAudio 3.

gdrewb-valve commented 11 years ago

One way to verify is to run the game and then dump its maps file. Find the process ID and do 'cat /proc/pid/maps | grep pulse' and see where the PA libs are coming from.

Are you seeing the 'b' assert specifically or just a crash? I don't see a way the patch could not fix the 'b' assert, but there could easily be multiple problems.

Jookia commented 11 years ago

I'll load up a game now and try and get some information:

[jookia@jookia-arch 22297]% grep "pulse" maps
cbee7000-cfee8000 rw-s 00000000 00:10 10252441                           /dev/shm/pulse-shm-2380860766
d713d000-d71ad000 r-xp 00000000 08:05 526539                             /usr/lib32/pulseaudio/libpulsecommon-4.0.so
d71ad000-d71ae000 r--p 0006f000 08:05 526539                             /usr/lib32/pulseaudio/libpulsecommon-4.0.so
d71ae000-d71af000 rw-p 00070000 08:05 526539                             /usr/lib32/pulseaudio/libpulsecommon-4.0.so
d71af000-d71fd000 r-xp 00000000 08:05 179369                             /usr/lib32/libpulse.so.0.16.2
d71fd000-d71fe000 r--p 0004d000 08:05 179369                             /usr/lib32/libpulse.so.0.16.2
d71fe000-d71ff000 rw-p 0004e000 08:05 179369                             /usr/lib32/libpulse.so.0.16.2
e9961000-e9964000 r-xp 00000000 08:05 179370                             /usr/lib32/libpulse-simple.so.0.0.4
e9964000-e9965000 r--p 00002000 08:05 179370                             /usr/lib32/libpulse-simple.so.0.0.4
e9965000-e9966000 rw-p 00003000 08:05 179370                             /usr/lib32/libpulse-simple.so.0.0.4

Here's the last words of Steam (the game is fine:)

warning: Unknown nb_ctl request:  4
warning: Unknown nb_ctl request:  4
warning: Unknown nb_ctl request:  4
warning: Unknown nb_ctl request:  4
warning: Unknown nb_ctl request:  4
warning: Unknown nb_ctl request:  4
Installing breakpad exception handler for appid(steam)/version(1376347961_client)
Installing breakpad exception handler for appid(steam)/version(1376347961_client)
warning: The VAD has been replaced by a hack pending a complete rewrite
mmap() failed: Cannot allocate memory
mmap() failed: Cannot allocate memory
mmap() failed: Cannot allocate memory

Here's a stack trace of Steam:

#0  0xf743f200 in __memcpy_ssse3_rep () from /usr/lib32/libc.so.6
#1  0xee0d0e1f in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1
#2  0xee0ef348 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1
#3  0xee0c821c in alcGetIntegerv ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1
#4  0xe753f461 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#5  0xe752bf14 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#6  0xe752c6de in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#7  0xe752d271 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#8  0xe779c816 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#9  0xe74c9749 in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#10 0xe74ca4ec in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/steamclient.so
#11 0xeebef6da in SteamThreadTools::CThread::ThreadExceptionWrapper(void*) ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/libtier0_s.so
#12 0xeebed7cb in ?? ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/libtier0_s.so
#13 0xeebee0fd in CatchAndWriteMiniDumpExForVoidPtrFn ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/libtier0_s.so
#14 0xeebee14f in CatchAndWriteMiniDumpForVoidPtrFn ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/libtier0_s.so
#15 0xeebf1347 in SteamThreadTools::CThread::ThreadProc(void*) ()
   from /home/jookia/.local/share/Steam/ubuntu12_32/libtier0_s.so
#16 0xf74bccf0 in start_thread () from /usr/lib32/libpthread.so.0
#17 0xf73f47ae in clone () from /usr/lib32/libc.so.6

Also I don't know if it's normal, but there's a ton of threads that just have this backtrace:

#0  0xf779d430 in __kernel_vsyscall ()
#1  0xf73e9c0b in poll () from /usr/lib32/libc.so.6
#2  0xeafddc9d in ?? () from /usr/lib32/libpulse.so.0
#3  0xeafcc5fe in pa_mainloop_poll () from /usr/lib32/libpulse.so.0
#4  0xeafcce2d in pa_mainloop_iterate () from /usr/lib32/libpulse.so.0
#5  0xeafccf04 in pa_mainloop_run () from /usr/lib32/libpulse.so.0
#6  0xeafddc3c in ?? () from /usr/lib32/libpulse.so.0
#7  0xe9b802fd in ?? () from /usr/lib32/pulseaudio/libpulsecommon-4.0.so
#8  0xf74bccf0 in start_thread () from /usr/lib32/libpthread.so.0
#9  0xf73f47ae in clone () from /usr/lib32/libc.so.6
gdrewb-valve commented 11 years ago

The stack trace is not from a crash, then, it's just the Steam thread at work? Also, to confirm you say the game is fine even after the mmap failures?

Jookia commented 11 years ago

Something triggered GDB so I assume it was a crash. If it's not, then it's odd that it closes afterwards? The game itself is fine after mmap fails, however you can't play due to Steam auth tickets not working.

gdrewb-valve commented 11 years ago

I wasn't sure on the gdb, thus my question. Did gdb have any other info at the point it became active? Usually it'll indicate the event that work it up, like a SIGSEGV or SIGILL mentioning an abort or that kind of thing.

Jookia commented 11 years ago

I'll go reproduce the crash again and check.

Jookia commented 11 years ago
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xe6b2eb40 (LWP 23532)]
0xf7452200 in __memcpy_ssse3_rep () from /usr/lib32/libc.so.6

Yes, it's a segfault.

If you guys have debug symbols, here's a core dump.

gdrewb-valve commented 11 years ago

All you're doing is running Steam with SDL_AUDIO=alsa, then playing TF2 and using voice chat?

EJahren commented 11 years ago

In my case, the microphone crash happens regardless of whether I run steam with SDL_AUDIO=alsa or not. And all I do is start playing TF2, use voice chat for approximately 30 minutes and then steam crashes (not tf2, but it is unplayable since servers often require that steam is running). If you'd like I can run it with gdb tonight and see what output I get.

Jookia commented 11 years ago

Oh, that's using PulseAudio 4 WITHOUT SDL_AUDIO=alsa.

I don't experience crashes with SDL_AUDIO=alsa, but some form of memory leak that Source handles correctly by quitting with out of memory errors.

mathrick commented 11 years ago

Just to make sure, is there a beta with updated PA libs out yet? I'm seeing a tonne of crashes in GoI, so I'll be very interested in having it fixed. Alternatively, the bug referenced says it should be fixed in PA 3.0, which my distro (Mint 15) does have. Will just removing the steam runtime packaged libs be enough to make it pick up the system libpulse?

gdrewb-valve commented 11 years ago

Yes, if you remove the Steam runtime libs it should fall back on the system libs. You can verify using the command 'cat /proc/pid/maps | grep pulse' on Steam's pid. Note that the 'b' assertion is the only thing affected by that patch. The segfault that Jookia is seeing is something very different and I don't know what the cause of that is, nor have I reproed it so far. If you are getting regular crashes and can catch them in gdb does the stack look like Jookia's above (or at least is it a SIGSEGV)? Alternately, if Steam is catching and reporting the crashes to Valve do you have a crash ID I can verify with?

I don't believe yesterday's client beta has the PA update yet, but it should be coming soon.

Jookia commented 11 years ago

I mentioned earlier- I posted a core dump up, is that of any use? Or must the crash be sent to steam?

gdrewb-valve commented 11 years ago

The dump doesn't have a ton of info in it beyond the stack, so your post of the gdb stack was just as helpful. What we really need, and what a snapshot won't show, is how we got into the bad state where an invalid pointer is being used in memcpy. When I asked for a dump/gdb I was targeting that more at HaskellElephant and mathrick so that I can get an idea of whether they're seeing the same segfault as you (Jookia) or something else, like the 'b' assert.

Jookia commented 11 years ago

Ah, okay. I just ran the same test without the Steam runtime enabled, and I managed to hit the same error, as a point of interest.

Jookia commented 11 years ago

Edit: It seems it is generating Breakpad dumps (but failing to upload them). There's eight in total, seven of them being asserts.

mathrick commented 11 years ago

Gotcha. I've already tried removing the runtime libs, and I can indeed confirm that it's picking up the 3.0 system libs, which would normally mean I'd be testing with reckless abandon, but my internet has been too crappy to allow any kind of networked play. I have not hit Jookia's crash yet. If I do, I might try getting my hands on a copy of UndoDB, which is the nifty GDB variant that allows going back in time. The bad news is that it's not free; the good news is that they have free of charge hobbyist trials for non-commercial uses. So anyone who isn't a Valve employee can try getting an evaluation copy at http://www.undo-software.com/.

Jookia commented 11 years ago

My crash takes a while to get to, even with my micspamming on empty servers.

mathrick commented 11 years ago

Alright, so here are the preliminary results:

gdrewb-valve commented 11 years ago

The reported crash looks very similar, a segfault in memcpy, so you don't need to get a gdb stack. All you did was run TF2 and talk, correct? How long did it take, roughly the same 30 minutes?

Jookia commented 11 years ago

I've been testing the glitch on Garry's Mod, but I can confirm it happens in TF2 as well. I'd say it takes 10 or so minutes for me however.

jooiiee commented 11 years ago

Running garrysmod, the problem seems to be related to when I start speaking at the same time as somebody else, but I have not been able to proove or reproduce this. On Aug 14, 2013 11:29 PM, "Drew Bliss" notifications@github.com wrote:

The reported crash looks very similar, a segfault in memcpy, so you don't need to get a gdb stack. All you did was run TF2 and talk, correct? How long did it take, roughly the same 30 minutes?

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

mathrick commented 11 years ago

@gdrewb-valve nope, running Guns of Icarus. Other than that, nothing special, just talk. It took probably around 20 minutes.

gdrewb-valve commented 11 years ago

I believe I've found the cause of the voice-related memory leak, the next Steam client beta will have a fix for it. Whether that ends up addressing the segfault or not is unknown as I haven't been able to get it to happen.

vadi2 commented 11 years ago

Brilliant news, thanks for your investigations into it :)

gdrewb-valve commented 11 years ago

The Steam beta client released tonight has the leak fix, so people can check and see if memory usage still grows. This may also prevent some crashes as things shouldn't run out of memory any more.

Nemoder commented 11 years ago

I ran Guns of Icarus as captain (lots of voice chat) for an hour or two after the update and didn't have any problems. Well done!

On Wed, Aug 14, 2013 at 10:21 PM, Drew Bliss notifications@github.comwrote:

The Steam beta client released tonight has the leak fix, so people can check and see if memory usage still grows. This may also prevent some crashes as things shouldn't run out of memory any more.

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

MrPopinjay commented 11 years ago

Sorry, I've not been following this thread lately. Does this mean that it is fixed? Or do we need to do something to prevent crashes?

Thanks, Louis

Jookia commented 11 years ago

I've been playing Garry's Mod for the past hour or so with no crashes- It seems the leak was the source of a crash.

mathrick commented 11 years ago

FWIW, about an hour of play in GoI registered no crashes either. To be perfectly clear, that was with pulse libs removed from the runtime (ie. using system-wide pulse 3.0 libs). I will test with runtime-provided 1.1 and report that.

stengun commented 11 years ago

I played team fortress 2 for about 2 hours and no crashes happened with pulseaudio integrated.

2013/8/15 Maciej Katafiasz notifications@github.com

FWIW, about an hour of play in GoI registered no crashes either. To be perfectly clear, that was with pulse libs removed from the runtime (ie. using system-wide pulse 3.0 libs). I will test with runtime-provided 1.1 and report that.

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

gdrewb-valve commented 11 years ago

@MrPopinjay , we've made a couple of fixes and initial results look encouraging. As long as you update to the latest Steam client beta you can run with pulseaudio normally. If anybody is still seeing problems please post here, otherwise I'll close this bug (at last!).

DerRidda commented 11 years ago

If that's the case are you finally going to enable voice chat in L4D2? ( Unless I'm mistaken and it hasn't purposefully been kept disabled to cut down on reports on this issue.) I haven't tested this myself enough myself yet because I have no reason to touch CS:S after the latest CS:GO update hintsayhellofromthelinuxcommunitytothecsgocabalhint but as it seems it is time to say: Finally, my most often encountered and most hated bug got squished! Well done!

gdrewb-valve commented 11 years ago

I don't believe L4D2's voice chat is supposed to be disabled, so I'd open an issue in Source-1-Games for that.

DerRidda commented 11 years ago

Never mind then, that issue exists and is assigned to Alfred who, so far, hasn't commented on it. https://github.com/ValveSoftware/steam-for-linux/issues/2390

gdrewb-valve commented 11 years ago

Things look good, so closing.