protonscr

Steam crashes with segmentation fault when receiving a chat message

steamopen reviewedAudio
ValveSoftware/steam-for-linux#3992 · opened 2015-08-28 by ronchaine · updated 2019-07-18 · 2 comments · github
Rronchaine 2015-08-28 github

This happens with custom .asoundrc that I use to send audio output to my main sound card, USB headset and Loopback device.

I can replicate this consistently, is there any workaround to mute steam or smth. to get past this?

Relevant bits from console:

AL lib: pulseaudio.c:612: Context did not connect: Access denied
AL lib: alsa.c:642: get periods failed: Invalid argument
Failed to open digital audio driver Couldn't create OAL context.
assert_20150828155029_1.dmp[1762]: Uploading dump (out-of-process)
/tmp/dumps/assert_20150828155029_1.dmp
/home/ronchaine/.local/share/Steam/steam.sh: line 756:   768 Segmentation fault      (core dumped) $STEAM_DEBUGGER "$STEAMROOT/$STEAMEXEPATH" "$@"
[0828/155743:WARNING:channel.cc(549)] Failed to send message to ack remove remote endpoint (local ID 1, remote ID 1)
[0828/155743:WARNING:channel.cc(549)] Failed to send message to ack remove remote endpoint (local ID 2147483648, remote ID 2)
[0828/155743:WARNING:channel.cc(549)] Failed to send message to ack remove remote endpoint (local ID 1, remote ID 1)
[0828/155743:WARNING:channel.cc(549)] Failed to send message to ack remove remote endpoint (local ID 2147483648, remote ID 2)

And my custom .asoundrc

# Create virtual device

defaults.pcm.rate_converter "samplerate_best"

pcm.!default full
pcm.card0 {
    type        plug
    slave.pcm   full
}

############################################################
# jack bridging
pcm.loop {
    type        plug
    slave {
        pcm "dmix:Loopback,0,1"
    }
}

pcm.jin {
    type plug
    slave.pcm "hw:Loopback,1,1"
}

# route for loopback addition
pcm.all {
    type        route
    slave.pcm   addloop

    ttable.0.0  1;
    ttable.1.1  1;
    ttable.0.2  1;
    ttable.1.3  1;
}

pcm.addloop {
    type        multi
    slaves.a.pcm    wrapper
    slaves.b.pcm    loop

    slaves.a.channels 2
    slaves.b.channels 2

    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave a
    bindings.1.channel 1

    bindings.2.slave b
    bindings.2.channel 0
    bindings.3.slave b
    bindings.3.channel 1
}

pcm.wrapper {
    type        plug
    slave.pcm   routes
}

############################################################
# route for double sound card configuration
pcm.routes {
    type        route
    slave.pcm   both

    ttable.0.0  1;
    ttable.1.1  1;
    ttable.0.2  1;
    ttable.1.3  1;
}

# multisetup for two sound cards
pcm.both {
    type        multi
    slaves.a.pcm    media71
    slaves.b.pcm    headset

    slaves.a.channels 2
    slaves.b.channels 2

    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave a
    bindings.1.channel 1

    bindings.2.slave b
    bindings.2.channel 0
    bindings.3.slave b
    bindings.3.channel 1
}

#################################################################
# direct plugs

# direct media71
pcm.media71 {
    type        plug
    slave {
        pcm "dmix:H71"
    }
}

# direct headset
pcm.headset {
    type        plug
    slave {
        pcm "dmix:Illuminated"
    }
}

# headset microphone
pcm.microphone {
    type        plug
    slave.pcm   "dsnoop:Illuminated"
}

###################################################
# virtual plugs

# plug for using both sound cards simultaneously
pcm.multi {
    type        plug
    slave.pcm   routes
}

# plug for being awesome
pcm.full {
    type        plug
    slave.pcm   convert
}

pcm.convert {
    type        rate

    slave.pcm   duplex
    slave.rate  48000
    converter   "samplerate_best"
}

pcm.duplex {
    type        asym
    playback.pcm    all
    capture.pcm microphone
}

pcm.duplex2 {
    type        asym
    playback.pcm    routes
    capture.pcm microphone
}
TTele42 2015-08-28 github

I read that error as openal not expecting to talk to a sound device which it can not get the period, then steam tripping over itself as a side effect.

For comparison here is .asoundrc from my setup:

# playback PCM device: using loopback subdevice 0,0
pcm.amix {
  type dmix
  ipc_key 219345
  slave.pcm "hw:Loopback,0,0"
  slave.channels 8
  slave.period_size 2048
}

# capture PCM device: using loopback subdevice 0,1
pcm.asnoop {
  type dsnoop
  ipc_key 219346
  slave.pcm "hw:Loopback,0,1"
}

# duplex device combining our PCM devices defined above
pcm.aduplex {
  type asym
  playback.pcm "plug:amix" #added plug: as a test
  capture.pcm "plug:asnoop"
}

# ------------------------------------------------------
# for jack alsa_in and alsa_out: looped-back signal at other ends
pcm.cloop {
  type plug
  slave.pcm "hw:Loopback,1,1"
}

pcm.ploop {
  type dsnoop
  ipc_key 219348
  slave.pcm "hw:Loopback,1,0"
  slave.channels 8
  slave.period_size 2048
}

# ------------------------------------------------------
# alsa jack output plugin
pcm.jackplug {
    type plug
    slave.pcm "jack"
    slave.format "FLOAT_LE"
    slave.rate 48000
}

pcm.jack {
    type jack
    playback_ports {
        0 system:playback_1
        1 system:playback_2
    }
    capture_ports {
        0 system:capture_1
        1 system:capture_2
    }
}

# ------------------------------------------------------
# default device

pcm.!default {
  type plug
  slave.pcm "aduplex"
}

In my setup, I also have sufficiently new openal to have .alsoftrc pointing directly to jack, it does not go through the loopback device and I do not use the steam runtime.

Hope this helps...

Vvfjpl 2016-06-22 github

I have similar problem. When defaults.pcm.rate_converter is set to speexrate_medium or speexrate_best, steam can't open capture interface from alsa and I can't talk in steam voice chat.

Nothing extracted yet.