Bug 651594
Summary: | Pulseaudio does not detect devices in Rawhide (no read permissions on /dev/.udev for regular user) | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Adam Williamson <awilliam> | ||||
Component: | dracut | Assignee: | Harald Hoyer <harald> | ||||
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | low | ||||||
Version: | rawhide | CC: | harald, jonathan, lkundrak, lpoetter | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2010-11-12 14:16:30 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 617261 | ||||||
Attachments: |
|
Description
Adam Williamson
2010-11-09 21:18:27 UTC
-- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers Created attachment 459244 [details]
full log of pulseaudio -vvvvv
lennart thinks this has something to do with udev. here's why: [adamw@adam ~]$ udevadm info -p /sys/class/sound/card0 -qallP: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: SUBSYSTEM=sound that's missing all the stuff that should be added by /lib/udev/rules.d/78-sound-card.rules, and which PA relies on. here's the udevadm test output: [adamw@adam ~]$ udevadm test /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 run_command: calling: test udevadm_test: version 164 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. add_matching_files: unable to open '/dev/.udev/rules.d': Permission denied parse_file: reading '/etc/udev/rules.d/10-blackberry.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-console.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules file parse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules file parse_file: reading '/etc/udev/rules.d/40-hplip.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-libgphoto2.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-multipath.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-usb-media-players.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-compat_firmware.rules' as rules file parse_file: reading '/etc/udev/rules.d/50-euvccam.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file parse_file: reading '/lib/udev/rules.d/55-gcm-i2c.rules' as rules file parse_file: reading '/etc/udev/rules.d/56-hpmud_support.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-floppy.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-fprint-autosuspend.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-libmtp.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-net.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-pcmcia.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-libsane.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules file parse_file: reading '/etc/udev/rules.d/69-blackberry.rules' as rules file parse_file: reading '/lib/udev/rules.d/69-pilot-link.rules' as rules file parse_file: reading '/lib/udev/rules.d/69-xorg-vmmouse.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-cups-libusb.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-printers.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-touchpad-quirks.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-wacom.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-probe_mtd.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-ericsson-mbm.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-longcheer-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-simtech-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-usb-device-blacklist.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-mm-zte-port-types.rules' as rules file parse_file: reading '/lib/udev/rules.d/77-nm-olpc-mesh.rules' as rules file parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file parse_file: reading '/etc/udev/rules.d/80-kvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-udisks.rules' as rules file parse_file: reading '/etc/udev/rules.d/85-pcscd_ccid.rules' as rules file parse_file: reading '/etc/udev/rules.d/85-pcscd_egate.rules' as rules file add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:3 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:3 add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/85-pcscd_egate.rules:5 parse_file: reading '/lib/udev/rules.d/85-regulatory.rules' as rules file parse_file: reading '/lib/udev/rules.d/85-usbmuxd.rules' as rules file parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules:9 parse_file: reading '/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules' as rules file add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules:6 add_rule: SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, or ATTRS{}= to match a parent device, in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules:9 parse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules file parse_file: reading '/lib/udev/rules.d/89-microcode.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/90-libgpod.rules' as rules file parse_file: reading '/lib/udev/rules.d/90-pulseaudio.rules' as rules file parse_file: reading '/etc/udev/rules.d/91-drm-modeset.rules' as rules file parse_file: reading '/etc/udev/rules.d/92-video-post.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-gcm-colorimeters.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-gcm-devices.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-dell.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-fujitsu.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-gateway.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-ibm.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-lenovo.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-battery-recall-toshiba.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-csr.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-hid.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-upower-wup.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-fuse.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-gpsd.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-libconcord.rules' as rules file add_rule: BUS= will be removed in a future udev version, please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent device, in /etc/udev/rules.d/99-libconcord.rules:4 parse_file: reading '/lib/udev/rules.d/99-systemd.rules' as rules file udev_rules_new: rules use 217104 bytes tokens (18092 * 12 bytes), 39953 bytes buffer udev_rules_new: temporary index used 62760 bytes (3138 * 20 bytes) udev_device_new_from_syspath: device 0x13741b0 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0' udev_device_new_from_syspath: device 0x1368a60 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0' udev_device_new_from_syspath: device 0x1368e20 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2' udev_device_new_from_syspath: device 0x133e8a0 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2/2-3' udev_device_new_from_syspath: device 0x133ea90 has devpath '/devices/pci0000:00/0000:00:1d.7/usb2' udev_device_new_from_syspath: device 0x1374970 has devpath '/devices/pci0000:00/0000:00:1d.7' udev_device_new_from_syspath: device 0x1374b60 has devpath '/devices/pci0000:00' udevadm_test: UDEV_LOG=6 udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 udevadm_test: ACTION=add udevadm_test: SUBSYSTEM=sound -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers okay, discovered something else: this may be some kind of permissions issue. if I run the udevadm command as root, I get the correct full output: [root@adam rules.d]# udevadm info -p /sys/class/sound/card0 -qall P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.2/sound/card0 E: SUBSYSTEM=sound E: SOUND_INITIALIZED=1 E: ID_VENDOR=Rocketfish E: ID_VENDOR_ENC=Rocketfish E: ID_VENDOR_ID=19ff E: ID_MODEL=Rocketfish_2MP_AF_Webcam E: ID_MODEL_ENC=Rocketfish\x202MP\x20AF\x20Webcam E: ID_MODEL_ID=0103 E: ID_REVISION=0100 E: ID_SERIAL=Rocketfish_Rocketfish_2MP_AF_Webcam E: ID_TYPE=audio E: ID_BUS=usb E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200: E: ID_USB_INTERFACE_NUM=02 E: ID_USB_DRIVER=snd-usb-audio E: ID_VENDOR_FROM_DATABASE=Dynex E: ID_IFACE=02 E: ID_ID=usb-Rocketfish_Rocketfish_2MP_AF_Webcam-02-Webcam E: ID_PATH=pci-0000:00:1d.7-usb-0:3:1.2 E: SOUND_FORM_FACTOR=webcam rather than the truncated output I get as a regular user (see above). I can't see any rules files which are un-readable by a regular user; what else should I look for? -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers confirmed that if I run pulseaudio as root, it detects all the devices. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers aha, I think I have it. straceing the udevadm command, I see: lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97e0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97f0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c97f0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c93b0) = -1 EACCES (Permission denied) lstat("/dev/.udev/db/sound:card1", 0x7fff1e1c93a0) = -1 EACCES (Permission denied) indeed: [adamw@adam ~]$ ls -l /dev/.udev/ ls: cannot open directory /dev/.udev/: Permission denied [root@adam adamw]# ls -dl /dev/.udev/ drwxrwx---. 7 root root 160 Nov 10 16:55 /dev/.udev/ so, what sets the permissions on /dev/.udev ? re-assigning to udev, it looks like this bug is there, not PA. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers if I change the permissions on /dev/.udev manually, then I can run pulseaudio as user, it works, and I can play sound. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers I took a look at how udev gets started at the suggestion of the folks in #udev. it's kind of interesting - it *is* different in rawhide, systemd is doing it via three native services - but even if I boot with upstart, which causes it to be done the old way via /etc/rc.sysinit calling /sbin/start_udev , the permissions are still wrong. So I don't think that's it. start_udev has barely changed since f14 afaict, it has a bail-out clause at the start which stops it proceeding if systemd is in use, but that's all. -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers It might be a dracut bug. $ grep -r rules.d /usr/share/dracut/modules.d/99base/init mkdir -m 0755 /dev/.udev/rules.d $ lsinitrd /boot/initramfs-$(uname -r).img init | grep rules.d mkdir -m 0755 /dev/.udev/rules.d $ lsinitrd /boot/initramfs-$(uname -r).img init | fgrep mkdir | fgrep .udev mkdir -m 0755 /dev/.udev mkdir -m 0755 /dev/.udev/rules.d or just change in /usr/share/dracut/modules.d/99base/init: mkdir -p -m 0755 /dev/.udev/rules.d to mkdir -p -m 0755 /dev/.udev /dev/.udev/rules.d confirmed fixed with updated dracut (and udev, though I guess that was irrelevant). thanks! -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers |