Bug 532814 - Sound broken due to ConsoleKit not assigning ACLs for current user.
Summary: Sound broken due to ConsoleKit not assigning ACLs for current user.
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: udev
Version: 12
Hardware: All
OS: Linux
medium
high
Target Milestone: ---
Assignee: Harald Hoyer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-11-03 22:21 UTC by Peter Robinson
Modified: 2009-12-17 16:23 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-12-03 21:27:10 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Dell D630C alsa-info (22.35 KB, application/octet-stream)
2009-11-03 22:21 UTC, Peter Robinson
no flags Details

Description Peter Robinson 2009-11-03 22:21:46 UTC
Created attachment 367366 [details]
Dell D630C alsa-info

The kernel detects the sound card OK and all the /dev/snd devices are created but I get no sound. It previously worked in F-11.

The gnome volume control only reports a Dummy device. Below is the details of running PA from a terminal and attached is the output from alsa-info.

[perobinson@neo ~]$ pulseaudio -vvvvv
I: main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
I: main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
D: core-rtclock.c: Timer slack is set to 50 us.
D: core-util.c: RealtimeKit worked.
I: core-util.c: Successfully gained nice level -11.
I: main.c: This is PulseAudio 0.9.19
D: main.c: Compilation host: x86_64-redhat-linux-gnu
D: main.c: Compilation CFLAGS: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -Wextra -pipe -Wno-long-long -Winline -Wvla -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing=2 -Wwrite-strings -Wno-unused-parameter -ffast-math -Wp,-D_FORTIFY_SOURCE=2 -fno-common -fdiagnostics-show-option
D: main.c: Running on host: Linux x86_64 2.6.31.5-96.fc12.x86_64 #1 SMP Fri Oct 23 19:30:30 EDT 2009
D: main.c: Found 2 CPUs.
I: main.c: Page size is 4096 bytes
D: main.c: Compiled with Valgrind support: no
D: main.c: Running in valgrind mode: no
D: main.c: Optimized build: yes
D: main.c: All asserts enabled.
I: main.c: Machine ID is 939b35b154a92a48f77cba2849371b80.
I: main.c: Session ID is 939b35b154a92a48f77cba2849371b80-1257285627.557717-1762728798.
I: main.c: Using runtime directory /home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-runtime.
I: main.c: Using state directory /home/perobinson/.pulse.
I: main.c: Using modules directory /usr/lib64/pulse-0.9.19/modules.
I: main.c: Running in system mode: no
I: main.c: Fresh high-resolution timers available! Bon appetit!
I: cpu-x86.c: CPU flags: MMX SSE SSE2 SSE3 SSSE3 SSE4_1 
I: svolume_mmx.c: Initialising MMX optimized functions.
I: remap_mmx.c: Initialising MMX optimized remappers.
I: svolume_sse.c: Initialising SSE2 optimized functions.
I: remap_sse.c: Initialising SSE2 optimized remappers.
I: sconv_sse.c: Initialising SSE2 optimized conversions.
D: memblock.c: Using shared memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
D: database-tdb.c: Opened TDB database '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-device-volumes.tdb'
I: module-device-restore.c: Sucessfully opened database file '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-device-volumes'.
I: module.c: Loaded "module-device-restore" (index: #0; argument: "").
D: database-tdb.c: Opened TDB database '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-stream-volumes.tdb'
I: module-stream-restore.c: Sucessfully opened database file '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-stream-volumes'.
I: module.c: Loaded "module-stream-restore" (index: #1; argument: "").
D: database-tdb.c: Opened TDB database '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-card-database.tdb'
I: module-card-restore.c: Sucessfully opened database file '/home/perobinson/.pulse/939b35b154a92a48f77cba2849371b80-card-database'.
I: module.c: Loaded "module-card-restore" (index: #2; argument: "").
I: module.c: Loaded "module-augment-properties" (index: #3; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib64/pulse-0.9.19/modules/module-udev-detect.so': success
D: module-udev-detect.c: /dev/snd/controlC0 is accessible: no
I: module-udev-detect.c: Found 1 cards.
I: module.c: Loaded "module-udev-detect" (index: #4; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib64/pulse-0.9.19/modules/module-bluetooth-discover.so': success
D: dbus-util.c: Successfully connected to D-Bus system bus 5e55bde8bbb6202d8b4bb4174af07e87 as :1.194
D: bluetooth-util.c: dbus: interface=org.freedesktop.DBus, path=/org/freedesktop/DBus, member=NameAcquired
I: module.c: Loaded "module-bluetooth-discover" (index: #5; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib64/pulse-0.9.19/modules/module-esound-protocol-unix.so': success
I: module.c: Loaded "module-esound-protocol-unix" (index: #6; argument: "").
I: module.c: Loaded "module-native-protocol-unix" (index: #7; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib64/pulse-0.9.19/modules/module-gconf.so': success
I: module.c: Loaded "module-gconf" (index: #8; argument: "").
I: module-default-device-restore.c: Saved default sink 'auto_null' not existant, not restoring default sink setting.
I: module-default-device-restore.c: Saved default source 'auto_null.monitor' not existant, not restoring default source setting.
I: module.c: Loaded "module-default-device-restore" (index: #9; argument: "").
I: module.c: Loaded "module-rescue-streams" (index: #10; argument: "").
D: module-always-sink.c: Autoloading null-sink as no other sinks detected.
I: module-device-restore.c: Restoring volume for sink auto_null.
I: sink.c: Created sink 0 "auto_null" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: sink.c:     device.description = "Dummy Output"
I: sink.c:     device.class = "abstract"
I: sink.c:     device.icon_name = "audio-card"
D: core-subscribe.c: Dropped redundant event due to change event.
I: source.c: Created source 0 "auto_null.monitor" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: source.c:     device.description = "Monitor of Dummy Output"
I: source.c:     device.class = "monitor"
I: source.c:     device.icon_name = "audio-input-microphone"
D: module-null-sink.c: Thread starting up
I: module.c: Loaded "module-null-sink" (index: #11; argument: "sink_name=auto_null sink_properties='device.description="Dummy Output"'").
I: module.c: Loaded "module-always-sink" (index: #12; argument: "").
I: module.c: Loaded "module-intended-roles" (index: #13; argument: "").
D: module-suspend-on-idle.c: Sink auto_null becomes idle, timeout in 5 seconds.
I: module.c: Loaded "module-suspend-on-idle" (index: #14; argument: "").
I: client.c: Created 0 "ConsoleKit Session /org/freedesktop/ConsoleKit/Session6"
D: module-console-kit.c: Added new session /org/freedesktop/ConsoleKit/Session6
I: module.c: Loaded "module-console-kit" (index: #15; argument: "").
I: module.c: Loaded "module-position-event-sounds" (index: #16; argument: "").
I: module.c: Loaded "module-cork-music-on-phone" (index: #17; argument: "").
D: dbus-util.c: Successfully connected to D-Bus session bus 5c738c753ecd7339d5adc6364af0a7fc as :1.179
D: main.c: Got org.pulseaudio.Server!
I: main.c: Daemon startup complete.
I: module-suspend-on-idle.c: Sink auto_null idle for too long, suspending ...
D: sink.c: Suspend cause of sink auto_null is 0x0004, suspending
D: core-subscribe.c: Dropped redundant event due to change event.
I: client.c: Created 1 "Native client (UNIX socket client)"
D: protocol-native.c: Protocol version: remote 16, local 16
I: protocol-native.c: Got credentials: uid=500 gid=500 success=1
D: protocol-native.c: SHM possible: yes
D: protocol-native.c: Negotiated SHM: yes
D: module-augment-properties.c: Looking for .desktop file for rhythmbox
I: module-stream-restore.c: Restoring volume for sink input sink-input-by-media-role:music.
I: resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates.
I: resampler.c: Using resampler 'copy'
I: resampler.c: Using float32le as working format.
D: memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
D: memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
I: sink-input.c: Created input 0 "Playback Stream" on auto_null with sample spec s32le 2ch 44100Hz and channel map front-left,front-right
I: sink-input.c:     media.name = "Playback Stream"
I: sink-input.c:     application.name = "Rhythmbox"
I: sink-input.c:     native-protocol.peer = "UNIX socket client"
I: sink-input.c:     native-protocol.version = "16"
I: sink-input.c:     media.role = "music"
I: sink-input.c:     application.process.id = "5532"
I: sink-input.c:     application.process.user = "perobinson"
I: sink-input.c:     application.process.host = "neo"
I: sink-input.c:     application.process.binary = "rhythmbox"
I: sink-input.c:     application.icon_name = "rhythmbox"
I: sink-input.c:     window.x11.display = ":0.0"
I: sink-input.c:     application.language = "en_GB.UTF-8"
I: sink-input.c:     application.process.machine_id = "939b35b154a92a48f77cba2849371b80"
I: sink-input.c:     application.process.session_id = "939b35b154a92a48f77cba2849371b80-1257285627.557717-1762728798"
I: sink-input.c:     module-stream-restore.id = "sink-input-by-media-role:music"
I: protocol-native.c: Requested tlength=200.00 ms, minreq=10.00 ms
D: protocol-native.c: Adjust latency mode enabled, configuring sink latency to half of overall latency.
D: memblockq.c: memblockq requested: maxlength=4194304, tlength=38808, base=8, prebuf=0, minreq=3528 maxrewind=0
D: memblockq.c: memblockq sanitized: maxlength=4194304, tlength=38808, base=8, prebuf=0, minreq=3528 maxrewind=0
I: protocol-native.c: Final latency 200.00 ms = 90.00 ms + 2*10.00 ms + 90.00 ms
D: sink-input.c: Requesting rewind due to uncorking
D: sink.c: Suspend cause of sink auto_null is 0x0000, resuming
D: module-suspend-on-idle.c: Sink auto_null becomes busy.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: protocol-native.c: Requesting rewind due to rewrite.
D: sink-input.c: Requesting rewind due to corking
D: module-suspend-on-idle.c: Sink auto_null becomes idle, timeout in 5 seconds.
I: module-suspend-on-idle.c: Sink auto_null idle for too long, suspending ...
D: sink.c: Suspend cause of sink auto_null is 0x0004, suspending

Comment 1 Lennart Poettering 2009-11-03 23:26:20 UTC
D: module-udev-detect.c: /dev/snd/controlC0 is accessible: no

PA apparently comes to the conclusion that the audio device is not accessible, either because it is otherwise busy or the permissions are not right.

Please reproduce this and provide the output of "getfacl /dev/snd/* /dev/dsp*", "id", "fuser -v /dev/snd/* /dev/dsp*" and "cat /proc/asound/card*/pcm*/sub*/status". All as root please.

Comment 2 Peter Robinson 2009-11-04 07:32:56 UTC
[root@neo ~]# getfacl /dev/snd/* /dev/dsp*
getfacl: Removing leading '/' from absolute path names
# file: dev/snd/by-path
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: dev/snd/controlC0
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/hwC0D0
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/pcmC0D0c
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/pcmC0D0p
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/pcmC0D1p
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/seq
# owner: root
# group: audio
user::rw-
group::rw-
other::---

# file: dev/snd/timer
# owner: root
# group: audio
user::rw-
group::rw-
other::---

getfacl: /dev/dsp*: No such file or directory
[root@neo ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@neo ~]# fuser -v /dev/snd/* /dev/dsp*
Cannot stat /dev/dsp*: No such file or directory
Cannot stat /dev/dsp*: No such file or directory
[root@neo ~]# cat /proc/asound/card*/pcm*/sub*/status
closed
closed
closed
closed
[root@neo ~]#

Comment 3 Lennart Poettering 2009-11-04 15:41:41 UTC
So yes, the logged in user has no access to the audio device, so this behaviour is expected. 

Note that only the user that is logged in on the currently active session as access to the audio devices, for security reasons, so that other users may not eavesdrop in what you play and what you say.

Comment 4 Peter Robinson 2009-11-04 15:48:23 UTC
there is (In reply to comment #3)
> So yes, the logged in user has no access to the audio device, so this behaviour
> is expected. 
> 
> Note that only the user that is logged in on the currently active session as
> access to the audio devices, for security reasons, so that other users may not
> eavesdrop in what you play and what you say.  

Why or how would this have changed during a yum upgrade from F-11 to F-12? There has been no other change. There is only ever one user logged in on the laptop. There is only one user even configured on the laptop. Even the guest option is removed. Is there a wiki page for how this should be fixed? I couldn't find anything in a quick look through the Fedora wiki

Comment 5 Lennart Poettering 2009-11-05 01:53:09 UTC
(In reply to comment #4)

> Why or how would this have changed during a yum upgrade from F-11 to F-12?
> There has been no other change. There is only ever one user logged in on the
> laptop. There is only one user even configured on the laptop. Even the guest
> option is removed. Is there a wiki page for how this should be fixed? I
> couldn't find anything in a quick look through the Fedora wiki  

This hasnt really changed. In fact, since we have ConsoleKit device ACLs follow the currently active user. I think that means since F10 or so things are this way.

If you dont want this behaviour you can make yourself a member of the "audio" group in which case you will always have access to the device, regardless if you are logged in or not or your session is active or not.

Comment 6 Lennart Poettering 2009-11-05 01:53:52 UTC
Anyway, there is no bug to fix here, closing.

Comment 7 Peter Robinson 2009-11-05 07:24:45 UTC
(In reply to comment #5)
> (In reply to comment #4)
> 
> > Why or how would this have changed during a yum upgrade from F-11 to F-12?
> > There has been no other change. There is only ever one user logged in on the
> > laptop. There is only one user even configured on the laptop. Even the guest
> > option is removed. Is there a wiki page for how this should be fixed? I
> > couldn't find anything in a quick look through the Fedora wiki  
> 
> This hasnt really changed. In fact, since we have ConsoleKit device ACLs follow
> the currently active user. I think that means since F10 or so things are this
> way.
> 
> If you dont want this behaviour you can make yourself a member of the "audio"
> group in which case you will always have access to the device, regardless if
> you are logged in or not or your session is active or not.  

That still doesn't tell me how I can fix it properly. If ConsoleKit assigns the permissions why doesn't it do so and how do I fix it for PulseAudio, Lennart as usual you are completely correct yet have provided absolutely no help what so ever. Why isn't ConsoleKit applying the permissions?

Comment 8 Lennart Poettering 2009-11-05 16:41:53 UTC
Ah, so you have been running PA on the active session and CK/HAL failed to set the ACLs right?

Are you running a normal GNOME session via gdm or anything special via startx/some other DE?

Is your sessoin listed properly in ck-list-sessions?

BTW, comments like "as usual ..." are certainly a great way to ensure that I am particularly happy to help

Comment 9 Peter Robinson 2009-11-05 16:54:12 UTC
I login to standard gnome desktop using GDM. I also occasionally login to a Moblin session via gdm as well but this stopped working before I installed that. not sure if selinux could come into play but I don't see any sealerts.

No idea why its called session2 as its the only login I've had since I booted the laptop up.

ck-list-sessions reports:
[perobinson@neo ~]$ ck-list-sessions
Session2:
	unix-user = '500'
	realname = 'Peter Robinson'
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty1'
	display-device = ''
	remote-host-name = ''
	is-local = TRUE
	on-since = '2009-11-05T08:22:53.140185Z'
	login-session-id = '1'
[perobinson@neo ~]$

Comment 10 Lennart Poettering 2009-11-08 18:07:26 UTC
This looks about correct. So it seems HAL didn't update the ACLs on the device nodes properly to match what CK says.

Comment 11 Matthias Clasen 2009-11-09 00:02:05 UTC
if this is an acl problem, it goes to udev nowadays, no ?
See /lib/udev/rules.d/70-acl.rules

Comment 12 Lennart Poettering 2009-11-10 03:36:48 UTC
Oh, I thought this was about F11, but you are right. I have been dealing with a similar issue on F11 on IRC that day, which made me mix things up. Sorry.

Please provide the output of "udevadm info -qall -n /dev/snd/controlC0".

Have you modified the udev rules in any way?

Comment 13 Bug Zapper 2009-11-16 15:01:30 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 12 development cycle.
Changing version to '12'.

More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 14 Peter Robinson 2009-12-03 21:27:10 UTC
(In reply to comment #12)
> Oh, I thought this was about F11, but you are right. I have been dealing with a
> similar issue on F11 on IRC that day, which made me mix things up. Sorry.
> 
> Please provide the output of "udevadm info -qall -n /dev/snd/controlC0".

[root@neo ~]# udevadm info -qall -n /dev/snd/controlC0
P: /devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0
N: snd/controlC0
S: char/116:8
S: snd/by-path/pci-0000:00:1b.0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0
E: MAJOR=116
E: MINOR=8
E: DEVNAME=/dev/snd/controlC0
E: ID_PATH=pci-0000:00:1b.0
E: ACL_MANAGE=1
E: DEVLINKS=/dev/char/116:8 /dev/snd/by-path/pci-0000:00:1b.0

> Have you modified the udev rules in any way?  

No.

I've been offline for the last 10 or so days and with the various updates that were released in this time (kernel/pulseaudio etc) the sound is now working. I have no idea what fixed it.

Comment 15 Lennart Poettering 2009-12-17 16:23:31 UTC
OK, closing then. Feel free to reopen if the problem resurfaces.


Note You need to log in before you can comment on or make changes to this bug.