Summary: | pavucontrol crash at MainWindow::updateCard (this=0x8264400, info=...) at mainwindow.cc:319 | ||
---|---|---|---|
Product: | PulseAudio | Reporter: | Rex Dieter <rdieter> |
Component: | pavucontrol | Assignee: | pulseaudio-bugs |
Status: | RESOLVED NOTOURBUG | QA Contact: | pulseaudio-bugs |
Severity: | normal | ||
Priority: | medium | CC: | lennart, mikhail.v.gavrilov, scampa.giovanni |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Rex Dieter
2014-07-09 15:59:13 UTC
$ rpm -q pulseaudio pavucontrol pulseaudio-5.0-6.fc20.i686 pavucontrol-2.0-4.fc20.i686 $ pactl info Server String: unix:/run/user/1482/pulse/native Library Protocol Version: 29 Server Protocol Version: 29 Is Local: yes Client Index: 17 Tile Size: 65496 User Name: rdieter1 Host Name: math-171.unl.edu Server Name: pulseaudio Server Version: 5.0 Default Sample Specification: s16le 2ch 44100Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo Default Source: alsa_input.pci-0000_00_1b.0.analog-stereo Cookie: 5f51:4518 $ pactl list ... Card #0 Name: alsa_card.pci-0000_00_1b.0 Driver: module-alsa-card.c Owner Module: 6 Properties: alsa.card = "0" alsa.card_name = "HDA Intel PCH" alsa.long_card_name = "HDA Intel PCH at 0xf7c30000 irq 45" alsa.driver_name = "snd_hda_intel" device.bus_path = "pci-0000:00:1b.0" sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0" device.bus = "pci" device.vendor.id = "8086" device.vendor.name = "Intel Corporation" device.product.id = "1e20" device.product.name = "7 Series/C210 Series Chipset Family High Definition Audio Controller" device.form_factor = "internal" device.string = "0" device.description = "Built-in Audio" module-udev-detect.discovered = "1" device.icon_name = "audio-card-pci" Profiles: input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority: 60, available: yes) output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6000, available: yes) output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority: 6060, available: yes) output:hdmi-stereo: Digital Stereo (HDMI) Output (sinks: 1, sources: 0, priority: 5400, available: yes) output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5460, available: yes) output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (sinks: 1, sources: 0, priority: 300, available: yes) output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 360, available: yes) output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (sinks: 1, sources: 0, priority: 5200, available: yes) output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5260, available: yes) output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (sinks: 1, sources: 0, priority: 100, available: yes) output:hdmi-surround-extra1+input:analog-stereo: Digital Surround 5.1 (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 160, available: yes) off: Off (sinks: 0, sources: 0, priority: 0, available: yes) Active Profile: output:analog-stereo+input:analog-stereo Ports: analog-input-front-mic: Front Microphone (priority: 8500, latency offset: 0 usec, not available) Properties: device.icon_name = "audio-input-microphone" Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo analog-input-rear-mic: Rear Microphone (priority: 8200, latency offset: 0 usec, not available) Properties: device.icon_name = "audio-input-microphone" Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo analog-output: Analog Output (priority: 9900, latency offset: 0 usec) Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo analog-output-lineout: Line Out (priority: 9900, latency offset: 0 usec, not available) Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo analog-output-speaker: Speakers (priority: 10000, latency offset: 0 usec) Properties: device.icon_name = "audio-speakers" Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo analog-output-headphones: Headphones (priority: 9000, latency offset: 0 usec, not available) Properties: device.icon_name = "audio-headphones" Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, not available) Properties: device.icon_name = "video-display" Part of profile(s): output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo hdmi-output-1: HDMI / DisplayPort 2 (priority: 5800, latency offset: 0 usec, not available) Properties: device.icon_name = "video-display" Part of profile(s): output:hdmi-stereo-extra1, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1, output:hdmi-surround-extra1+input:analog-stereo Confirmed problem remains testing against pulseaudio master branch as of today. For posterity, adding comment from Tanu about how best to debug this further from onlist: The comment in the Gnome bug is correct: PulseAudio should be fixed to never set card profile names to NULL. How to debug: first see the code in src/pulse/introspect.c and figure out how it could pass NULL names to applications. Even if the server sends NULL names, libpulse should handle that by closing the connection due to protocol error, and not pass the NULL names to applications. I see that both fill_card_port_info() fill_card_profile_info() have insufficient input validation regarding profile names. If you fix that, and the result is that now clients get disconnected due to bad data from the server, the next step is to add assertions about NULL names to the server code (src/pulsecore/protocol-native.c) to the places where profile names are sent to clients. The assertions should cause the server to crash, and hopefully the backtraces from those crashes can point to the root cause of the problem. I found one possible cause, between the 4.0 snapshot fedora 20 shipped with (f81e3) and pulseaudio-5.0, came this ABI break(1): http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=85e7fbc196f4424f68e530c2e3a01d9b941f293e I'll try to do more testing over the next day or 2 to confirm this suspicion. If positive, yuck, will have to think deeply on how best to handle fixing it downstream. 1. strictly speaking, it was fixing/restoring a prior break introduced in 4.0 development That sounds quite likely explanation for the pavucontrol crash. IIRC Mageia had the same problem. To fix the problem (or to confirm that it's a different issue after all) you just need to rebuild everything that depends on libpulse - is that hard to do in Fedora? rebuilding everything hard? no, just annoying and tedious... but will likely be the least bad way forward. Confirmed downstream issue only, rebuilt pavucontrol behaves better. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.