public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* sound: -EPERM on first mplayer invocation
@ 2009-08-02 21:36 Denys Vlasenko
  2009-08-03  6:55 ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Denys Vlasenko @ 2009-08-02 21:36 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-kernel

Hi,

For a long time I observe the following nuisance:
when I run mplayer for the very first time after boot,
I can't adjust the volume. mplayer spews this to stderr:

alsa-control: error setting left channel, Operation not permitted

This happens even if I login as root and run mplayer as root.

I tracked it down to snd_ctl_elem_write in sound/core/control.c

static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
                              struct snd_ctl_elem_value *control)
{
        struct snd_kcontrol *kctl;
        struct snd_kcontrol_volatile *vd;
        unsigned int index_offset;
        int result;

        down_read(&card->controls_rwsem);
        kctl = snd_ctl_find_id(card, &control->id);
        if (kctl == NULL) {
                result = -ENOENT;
        } else {
                index_offset = snd_ctl_get_ioff(kctl, &control->id);
                vd = &kctl->vd[index_offset];
                if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
                    kctl->put == NULL ||
                    (file && vd->owner && vd->owner != file)) {
 printk("EPERM:\n");
 printk("vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE:%x\n", vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE);
 printk("kctl->put:%p\n", kctl->put);
 printk("file:%p vd->owner:%p\n", file, vd->owner);
                        result = -EPERM;
                } else {

The above printk triggers and prints:

EPERM:
vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE:2
kctl->put:ffffffffa009e8de
file:ffff88007c56a5c0 vd->owner:ffff88007bc34740

Thus, vd->owner != file.

As I said, it only happens on very first run of mplayer,
and it isn't a recent change, I think I saw it at least
for one year with different kernels.

Takashi, any idea what might be happening here?
How can I help you more with tracking it down?
-- 
vda

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-02 21:36 sound: -EPERM on first mplayer invocation Denys Vlasenko
@ 2009-08-03  6:55 ` Takashi Iwai
  2009-08-04  9:01   ` Denys Vlasenko
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2009-08-03  6:55 UTC (permalink / raw)
  To: Denys Vlasenko; +Cc: linux-kernel

At Sun, 2 Aug 2009 23:36:48 +0200,
Denys Vlasenko wrote:
> 
> Hi,
> 
> For a long time I observe the following nuisance:
> when I run mplayer for the very first time after boot,
> I can't adjust the volume. mplayer spews this to stderr:
> 
> alsa-control: error setting left channel, Operation not permitted
> 
> This happens even if I login as root and run mplayer as root.
> 
> I tracked it down to snd_ctl_elem_write in sound/core/control.c
> 
> static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
>                               struct snd_ctl_elem_value *control)
> {
>         struct snd_kcontrol *kctl;
>         struct snd_kcontrol_volatile *vd;
>         unsigned int index_offset;
>         int result;
> 
>         down_read(&card->controls_rwsem);
>         kctl = snd_ctl_find_id(card, &control->id);
>         if (kctl == NULL) {
>                 result = -ENOENT;
>         } else {
>                 index_offset = snd_ctl_get_ioff(kctl, &control->id);
>                 vd = &kctl->vd[index_offset];
>                 if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
>                     kctl->put == NULL ||
>                     (file && vd->owner && vd->owner != file)) {
>  printk("EPERM:\n");
>  printk("vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE:%x\n", vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE);
>  printk("kctl->put:%p\n", kctl->put);
>  printk("file:%p vd->owner:%p\n", file, vd->owner);
>                         result = -EPERM;
>                 } else {
> 
> The above printk triggers and prints:
> 
> EPERM:
> vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE:2
> kctl->put:ffffffffa009e8de
> file:ffff88007c56a5c0 vd->owner:ffff88007bc34740
> 
> Thus, vd->owner != file.
> 
> As I said, it only happens on very first run of mplayer,
> and it isn't a recent change, I think I saw it at least
> for one year with different kernels.
> 
> Takashi, any idea what might be happening here?
> How can I help you more with tracking it down?

This implies that another process (e.g. a sound daemon like PA)
already opened the device and locked this specific control element.
If so, this is no bug but the right behavior.
Check "fuser /dev/snd/controlC*".


Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-03  6:55 ` Takashi Iwai
@ 2009-08-04  9:01   ` Denys Vlasenko
  2009-08-04  9:16     ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Denys Vlasenko @ 2009-08-04  9:01 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-kernel

On Monday 03 August 2009 08:55, Takashi Iwai wrote:
> Denys Vlasenko wrote:
> > Hi,
> > 
> > For a long time I observe the following nuisance:
> > when I run mplayer for the very first time after boot,
> > I can't adjust the volume. mplayer spews this to stderr:
> > 
> > alsa-control: error setting left channel, Operation not permitted
> > 
> > This happens even if I login as root and run mplayer as root.
> > 
> > I tracked it down to snd_ctl_elem_write in sound/core/control.c
> > 
...
> > 
> > Thus, vd->owner != file.
> > 
> > As I said, it only happens on very first run of mplayer,
> > and it isn't a recent change, I think I saw it at least
> > for one year with different kernels.
> > 
> > Takashi, any idea what might be happening here?
> > How can I help you more with tracking it down?
> 
> This implies that another process (e.g. a sound daemon like PA)
> already opened the device and locked this specific control element.
> If so, this is no bug but the right behavior.
> Check "fuser /dev/snd/controlC*".

Nothing uses them:

shadow:~# lsof -nP | grep '/dev/.*control'
shadow:~# fuser /dev/snd/controlC*
shadow:~#

I tried running bare X with only xterm and mplayer,
and I see the same symptoms when I try to adjust volume:

...
[Mixer] No hardware mixing, inserting volume filter.
[libaf] Adding filter volume
[dummy] Was reinitialized: 48000Hz/2ch/s16le
alsa-control: error setting left channel, Operation not permitted0 78%
alsa-control: error setting left channel, Operation not permitted0 77%
alsa-control: error setting left channel, Operation not permitted0 76%
alsa-control: error setting left channel, Operation not permitted0 75%
...

Here is the list of processes just before I started mplayer.
AFAICS, no sound daemons:

PID   USER     TIME   COMMAND
    1 root       0:00 /bin/sh /init 
    2 root       0:00 [kthreadd]
    3 root       0:00 [migration/0]
    4 root       0:00 [ksoftirqd/0]
    5 root       0:00 [watchdog/0]
    6 root       0:00 [events/0]
    7 root       0:00 [khelper]
   13 root       0:00 [async/mgr]
  184 root       0:00 [kblockd/0]
  186 root       0:00 [kacpid]
  187 root       0:00 [kacpi_notify]
  188 root       0:00 [kacpi_hotplug]
  284 root       0:00 [ata/0]
  285 root       0:00 [ata_aux]
  289 root       0:00 [ksuspend_usbd]
  293 root       0:00 [khubd]
  296 root       0:00 [kseriod]
  298 root       0:00 [kgameportd]
  356 root       0:00 [khungtaskd]
  357 root       0:00 [pdflush]
  358 root       0:00 [pdflush]
  359 root       0:00 [kswapd0]
  360 root       0:00 [aio/0]
  361 root       0:00 [nfsiod]
  362 root       0:00 [crypto/0]
  551 root       0:00 [scsi_eh_0]
  553 root       0:00 [scsi_eh_1]
  555 root       0:00 [scsi_eh_2]
  557 root       0:00 [scsi_eh_3]
  612 root       0:00 [bnx2x]
  670 root       0:00 [mlx4]
  688 root       0:00 [netxen]
  691 root       0:00 [sfc_refill/0]
  692 root       0:00 [sfc_reset]
  709 root       0:00 [kpsmoused]
  715 root       0:00 [rpciod/0]
  765 root       0:00 [kjournald]
  783 root       0:00 udevd 
  800 root       0:00 [reiserfs/0]
  807 1          0:00 rpc.portmap 
  866 root       0:00 runsvdir -P /var/service _____________________________________________ 
  867 root       0:00 sleep 32000 
  868 root       0:00 runsv fw 
  869 root       0:00 runsv gpm 
  870 root       0:00 runsv ntp 
  871 root       0:00 runsv top 
  872 root       0:00 runsv klog 
  873 logger     0:00 svlogd -tt /var/log/service/ntp 
  876 root       0:00 gpm -D -2 -m /dev/psaux -t ps2 
  880 root       0:00 top 
  884 root       0:00 runsv once 
  885 root       0:00 runsv tftp 
  903 root       0:00 runsv sshd 
  904 root       0:00 runsv vpnc 
  905 root       0:00 runsv ora_db_test1st 
  906 root       0:00 runsv dhcp_if 
  911 logger     0:00 svlogd -tt /var/log/service/klog 
  913 root       0:00 socklog ucspi 
  932 root       0:00 runsv httpd 
  933 root       0:00 runsv httpd_ssl 
  934 root       0:00 runsv vsftp 
  935 root       0:00 runsv proxy-2222-to-22 
  948 root       0:00 runsv ftpd_bbox 
  949 root       0:00 runsv ora_listener 
  950 root       0:00 runsv nfs_v3 
  951 root       0:00 runsv nmeter 
  952 root       0:00 runsv getty_gay 
  953 root       0:00 runsv telnetd_bbox 
  954 root       0:00 runsv clock_server 
  955 root       0:00 runsv getty_tty1 
  966 time       0:00 taiclockd 
  975 root       0:00 runsv getty_tty2 
  976 root       0:00 runsv getty_tty3 
  977 root       0:00 nmeter %t %c x %x p%p f %f b %b m %m if%[nif] 
  994 logger     0:00 svlogd -tt /var/log/service/dhcp_if 
  996 root       0:00 ./udhcpc -vv --hostname=null --foreground --interface=if --pidfile=/.local/var/service/dhcp_if/udhcpc.pid --script=/.local/var/service/dhcp_if/dhcp_handler 
 1004 logger     0:00 svlogd -tt /var/log/service/ora_db_test1st 
 1007 logger     0:00 svlogd -tt /var/log/service/tftp 
 1009 root       0:00 udpsvd -v -c 10 -l localhost 0 69 tftpd /pub/tftp 
 1011 root       0:00 -bash 
 1022 root       0:00 runsv getty_tty4 
 1024 root       0:00 runsv getty_tty5 
 1025 logger     0:00 svlogd -tt /var/log/service/vsftp 
 1028 logger     0:00 svlogd -tt /var/log/service/httpd 
 1035 root       0:00 runsv getty_tty6 
 1036 root       0:00 runsv getty_tty7 
 1037 root       0:00 runsv getty_tty8 
 1038 root       0:00 runsv httpd_bbox 
 1039 root       0:00 runsv syslog 
 1040 root       0:00 runsv tidy_tmp 
 1041 root       0:00 runsv dnscache_int 
 1042 root       0:00 runsv automount 
 1043 root       0:00 runsv crond_bbox 
 1044 root       0:00 runsv dhcpd_if 
 1045 root       0:00 runsv inetd_bbox 
 1046 root       0:00 runsv dhcp_if_pinger 
 1047 logger     0:00 svlogd -tt /var/log/service/sshd 
 1049 logger     0:00 svlogd -tt /var/log/service/httpd_ssl 
 1051 logger     0:00 svlogd -tt /var/log/service/vpnc 
 1053 root       0:00 tcpserver -v -R -H -l 0 -c 40 0.0.0.0 80 setuidgid root httpd -f /.local/var/service/httpd/httpd.conf 
 1055 root       0:00 getty 38400 /dev/tty3 linux 
 1059 root       0:00 getty 38400 /dev/tty8 linux 
 1061 logger     0:00 svlogd -tt /var/log/service/inetd_bbox 
 1075 root       0:00 tcpserver -v -R -H -l 0 -c 40 0.0.0.0 443 stunnel -f -p ../host.pem -l setuidgid -- setuidgid root httpd -f /.local/var/service/httpd_ssl/httpd.conf 
 1077 root       0:00 tcpsvd -vE -l 0 -c 40 0 22 /usr/bin/sshd -i -D -e -p22 -u0 
 1090 logger     0:00 svlogd -tt /var/log/service/automount 
 1092 root       0:00 automount -f -s -v --timeout 15 /.local/mnt/auto program /.local/var/service/automount/mapper.sh 
 1103 root       0:00 getty 38400 /dev/tty5 linux 
 1110 logger     0:00 svlogd -tt /var/log/service/telnetd_bbox 
 1112 logger     0:00 svlogd /var/log/service/syslog 
 1113 logger     0:00 svlogd -tt /var/log/service/tidy_tmp 
 1122 root       0:00 sleep 1260 
 1127 root       0:00 getty 38400 /dev/tty7 linux 
 1157 logger     0:00 svlogd -tt /var/log/service/httpd_bbox 
 1159 root       0:00 tcpserver -v -R -H -l 0 -c 40 0.0.0.0 81 setuidgid root ./busybox httpd -vvv -i -h /.1/video 
 1166 root       0:00 getty 38400 /dev/tty6 linux 
 1171 logger     0:00 svlogd -tt /var/log/service/dnscache_int 
 1173 logger     0:00 svlogd -tt /var/log/service/crond_bbox 
 1179 root       0:00 crond -f -d7 
 1190 root       0:00 syslogd -m 0 -n -S -s 99 -b 9 -O /.local/var/service/syslog/syslog 
 1200 root       0:00 getty 38400 /dev/tty4 linux 
 1205 logger     0:00 svlogd -tt /var/log/service/ora_listener 
 1225 logger     0:00 svlogd -tt /var/log/service/proxy-2222-to-22 
 1229 logger     0:00 svlogd -tt /var/log/service/dhcpd_if 
 1234 logger     0:00 svlogd -tt /var/log/service/ftpd_bbox 
 1236 root       0:00 tcpsvd -vE -l 0 -c 40 0.0.0.0 21 setuidgid root ./busybox ftpd -vv -t10 /.1/video 
 1733 root       0:00 [hd-audio0]
 1741 dns        0:00 dnscache 
 2292 root       0:00 xinit 
 2293 root       0:00 X :0 
 2297 root       0:00 xterm -geometry +1+1 -n login 
 2298 root       0:00 bash 
 2302 root       0:00 ps -A 


When I exit mplayer and start it again, it works.

What can I try next?
-- 
vda

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-04  9:01   ` Denys Vlasenko
@ 2009-08-04  9:16     ` Takashi Iwai
  2009-08-05  2:32       ` Denys Vlasenko
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2009-08-04  9:16 UTC (permalink / raw)
  To: Denys Vlasenko; +Cc: linux-kernel

At Tue, 4 Aug 2009 11:01:43 +0200,
Denys Vlasenko wrote:
> 
> On Monday 03 August 2009 08:55, Takashi Iwai wrote:
> > Denys Vlasenko wrote:
> > > Hi,
> > > 
> > > For a long time I observe the following nuisance:
> > > when I run mplayer for the very first time after boot,
> > > I can't adjust the volume. mplayer spews this to stderr:
> > > 
> > > alsa-control: error setting left channel, Operation not permitted
> > > 
> > > This happens even if I login as root and run mplayer as root.
> > > 
> > > I tracked it down to snd_ctl_elem_write in sound/core/control.c
> > > 
> ...
> > > 
> > > Thus, vd->owner != file.
> > > 
> > > As I said, it only happens on very first run of mplayer,
> > > and it isn't a recent change, I think I saw it at least
> > > for one year with different kernels.
> > > 
> > > Takashi, any idea what might be happening here?
> > > How can I help you more with tracking it down?
> > 
> > This implies that another process (e.g. a sound daemon like PA)
> > already opened the device and locked this specific control element.
> > If so, this is no bug but the right behavior.
> > Check "fuser /dev/snd/controlC*".
> 
> Nothing uses them:
> 
> shadow:~# lsof -nP | grep '/dev/.*control'
> shadow:~# fuser /dev/snd/controlC*
> shadow:~#
> 
> I tried running bare X with only xterm and mplayer,

Hm, but according to your debug session, the vd->owner is set
to a different value, right?  Check vd->owner_pid in the error path.
It'll show the pid blocking that control element.


Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-04  9:16     ` Takashi Iwai
@ 2009-08-05  2:32       ` Denys Vlasenko
  2009-08-05  5:37         ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Denys Vlasenko @ 2009-08-05  2:32 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-kernel

On Tuesday 04 August 2009 11:16, Takashi Iwai wrote:
> > > > For a long time I observe the following nuisance:
> > > > when I run mplayer for the very first time after boot,
> > > > I can't adjust the volume. mplayer spews this to stderr:
> > > > 
> > > > alsa-control: error setting left channel, Operation not permitted
> > > > 
> > > > This happens even if I login as root and run mplayer as root.
> > > > 
> > > > I tracked it down to snd_ctl_elem_write in sound/core/control.c
> > > > 
> > ...
> > > > 
> > > > Thus, vd->owner != file.
> > > > 
> > > > As I said, it only happens on very first run of mplayer,
> > > > and it isn't a recent change, I think I saw it at least
> > > > for one year with different kernels.
> > > > 
> > > > Takashi, any idea what might be happening here?
> > > > How can I help you more with tracking it down?
> > > 
> > > This implies that another process (e.g. a sound daemon like PA)
> > > already opened the device and locked this specific control element.
> > > If so, this is no bug but the right behavior.
> > > Check "fuser /dev/snd/controlC*".
> > 
> > Nothing uses them:
> > 
> > shadow:~# lsof -nP | grep '/dev/.*control'
> > shadow:~# fuser /dev/snd/controlC*
> > shadow:~#
> > 
> > I tried running bare X with only xterm and mplayer,
> 
> Hm, but according to your debug session, the vd->owner is set
> to a different value, right?  Check vd->owner_pid in the error path.
> It'll show the pid blocking that control element.

I modified 2.6.31-rc2 source as follows:

static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
                              struct snd_ctl_elem_value *control)
{
        struct snd_kcontrol *kctl;
        struct snd_kcontrol_volatile *vd;
        unsigned int index_offset;
        int result;

        down_read(&card->controls_rwsem);
        kctl = snd_ctl_find_id(card, &control->id);
        if (kctl == NULL) {
                result = -ENOENT;
        } else {
                index_offset = snd_ctl_get_ioff(kctl, &control->id);
                vd = &kctl->vd[index_offset];
if (file && vd->owner)
 printk("file:%p vd->owner:%p\n", file, vd->owner);
                if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
                    kctl->put == NULL ||
                    (file && vd->owner && vd->owner != file)) {
if (file && vd->owner)
 printk("vd->owner_pid:%d vd->owner->pid:%d file->pid:%d\n", vd->owner_pid, vd->owner->pid, file->pid);
                        result = -EPERM;
                } else {
...

and when I start mplayer, I see this:

dmesg:
file:ffff8800798af940 vd->owner:ffff8800798af940
file:ffff8800798af940 vd->owner:ffff8800798af940

I assume it's some sort of initialization, no EPERM here.
Then I press "lower the volume" key (keypad "/")
in mplayer window, twice:

dmesg:
file:ffff8800798af8c0 vd->owner:ffff8800798af940
vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
file:ffff8800798af740 vd->owner:ffff8800798af940
vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067

mplayer:
alsa-control: error setting left channel, Operation not permitted

The pid is mplayer's pid:

# ps -A | grep mpl
 2067 root       0:01 mplayer The_league_of_extraordinary_gentlemen.avi
 2081 root       0:00 grep mpl

It has one thread, btw, no funky multithreading stuff:

# ls -l /proc/2067/task
dr-xr-xr-x    4 root     root            0 Aug  5 04:28 2067

-- 
vda

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-05  2:32       ` Denys Vlasenko
@ 2009-08-05  5:37         ` Takashi Iwai
  2009-08-05  5:41           ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2009-08-05  5:37 UTC (permalink / raw)
  To: Denys Vlasenko; +Cc: linux-kernel

At Wed, 5 Aug 2009 04:32:34 +0200,
Denys Vlasenko wrote:
> 
> On Tuesday 04 August 2009 11:16, Takashi Iwai wrote:
> > > > > For a long time I observe the following nuisance:
> > > > > when I run mplayer for the very first time after boot,
> > > > > I can't adjust the volume. mplayer spews this to stderr:
> > > > > 
> > > > > alsa-control: error setting left channel, Operation not permitted
> > > > > 
> > > > > This happens even if I login as root and run mplayer as root.
> > > > > 
> > > > > I tracked it down to snd_ctl_elem_write in sound/core/control.c
> > > > > 
> > > ...
> > > > > 
> > > > > Thus, vd->owner != file.
> > > > > 
> > > > > As I said, it only happens on very first run of mplayer,
> > > > > and it isn't a recent change, I think I saw it at least
> > > > > for one year with different kernels.
> > > > > 
> > > > > Takashi, any idea what might be happening here?
> > > > > How can I help you more with tracking it down?
> > > > 
> > > > This implies that another process (e.g. a sound daemon like PA)
> > > > already opened the device and locked this specific control element.
> > > > If so, this is no bug but the right behavior.
> > > > Check "fuser /dev/snd/controlC*".
> > > 
> > > Nothing uses them:
> > > 
> > > shadow:~# lsof -nP | grep '/dev/.*control'
> > > shadow:~# fuser /dev/snd/controlC*
> > > shadow:~#
> > > 
> > > I tried running bare X with only xterm and mplayer,
> > 
> > Hm, but according to your debug session, the vd->owner is set
> > to a different value, right?  Check vd->owner_pid in the error path.
> > It'll show the pid blocking that control element.
> 
> I modified 2.6.31-rc2 source as follows:
> 
> static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
>                               struct snd_ctl_elem_value *control)
> {
>         struct snd_kcontrol *kctl;
>         struct snd_kcontrol_volatile *vd;
>         unsigned int index_offset;
>         int result;
> 
>         down_read(&card->controls_rwsem);
>         kctl = snd_ctl_find_id(card, &control->id);
>         if (kctl == NULL) {
>                 result = -ENOENT;
>         } else {
>                 index_offset = snd_ctl_get_ioff(kctl, &control->id);
>                 vd = &kctl->vd[index_offset];
> if (file && vd->owner)
>  printk("file:%p vd->owner:%p\n", file, vd->owner);
>                 if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
>                     kctl->put == NULL ||
>                     (file && vd->owner && vd->owner != file)) {
> if (file && vd->owner)
>  printk("vd->owner_pid:%d vd->owner->pid:%d file->pid:%d\n", vd->owner_pid, vd->owner->pid, file->pid);
>                         result = -EPERM;
>                 } else {
> ...
> 
> and when I start mplayer, I see this:
> 
> dmesg:
> file:ffff8800798af940 vd->owner:ffff8800798af940
> file:ffff8800798af940 vd->owner:ffff8800798af940
> 
> I assume it's some sort of initialization, no EPERM here.
> Then I press "lower the volume" key (keypad "/")
> in mplayer window, twice:
> 
> dmesg:
> file:ffff8800798af8c0 vd->owner:ffff8800798af940
> vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
> file:ffff8800798af740 vd->owner:ffff8800798af940
> vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067

The file instances are different.  It implies that mplayer opens the
device at each time but doesn't close.
It sounds like a bug in mplayer to me.


Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-05  5:37         ` Takashi Iwai
@ 2009-08-05  5:41           ` Takashi Iwai
  2009-08-05  8:50             ` Clemens Ladisch
  2009-08-05 22:00             ` Denys Vlasenko
  0 siblings, 2 replies; 9+ messages in thread
From: Takashi Iwai @ 2009-08-05  5:41 UTC (permalink / raw)
  To: Denys Vlasenko; +Cc: linux-kernel

At Wed, 05 Aug 2009 07:37:30 +0200,
I wrote:
> 
> At Wed, 5 Aug 2009 04:32:34 +0200,
> Denys Vlasenko wrote:
> > 
> > On Tuesday 04 August 2009 11:16, Takashi Iwai wrote:
> > > > > > For a long time I observe the following nuisance:
> > > > > > when I run mplayer for the very first time after boot,
> > > > > > I can't adjust the volume. mplayer spews this to stderr:
> > > > > > 
> > > > > > alsa-control: error setting left channel, Operation not permitted
> > > > > > 
> > > > > > This happens even if I login as root and run mplayer as root.
> > > > > > 
> > > > > > I tracked it down to snd_ctl_elem_write in sound/core/control.c
> > > > > > 
> > > > ...
> > > > > > 
> > > > > > Thus, vd->owner != file.
> > > > > > 
> > > > > > As I said, it only happens on very first run of mplayer,
> > > > > > and it isn't a recent change, I think I saw it at least
> > > > > > for one year with different kernels.
> > > > > > 
> > > > > > Takashi, any idea what might be happening here?
> > > > > > How can I help you more with tracking it down?
> > > > > 
> > > > > This implies that another process (e.g. a sound daemon like PA)
> > > > > already opened the device and locked this specific control element.
> > > > > If so, this is no bug but the right behavior.
> > > > > Check "fuser /dev/snd/controlC*".
> > > > 
> > > > Nothing uses them:
> > > > 
> > > > shadow:~# lsof -nP | grep '/dev/.*control'
> > > > shadow:~# fuser /dev/snd/controlC*
> > > > shadow:~#
> > > > 
> > > > I tried running bare X with only xterm and mplayer,
> > > 
> > > Hm, but according to your debug session, the vd->owner is set
> > > to a different value, right?  Check vd->owner_pid in the error path.
> > > It'll show the pid blocking that control element.
> > 
> > I modified 2.6.31-rc2 source as follows:
> > 
> > static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
> >                               struct snd_ctl_elem_value *control)
> > {
> >         struct snd_kcontrol *kctl;
> >         struct snd_kcontrol_volatile *vd;
> >         unsigned int index_offset;
> >         int result;
> > 
> >         down_read(&card->controls_rwsem);
> >         kctl = snd_ctl_find_id(card, &control->id);
> >         if (kctl == NULL) {
> >                 result = -ENOENT;
> >         } else {
> >                 index_offset = snd_ctl_get_ioff(kctl, &control->id);
> >                 vd = &kctl->vd[index_offset];
> > if (file && vd->owner)
> >  printk("file:%p vd->owner:%p\n", file, vd->owner);
> >                 if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
> >                     kctl->put == NULL ||
> >                     (file && vd->owner && vd->owner != file)) {
> > if (file && vd->owner)
> >  printk("vd->owner_pid:%d vd->owner->pid:%d file->pid:%d\n", vd->owner_pid, vd->owner->pid, file->pid);
> >                         result = -EPERM;
> >                 } else {
> > ...
> > 
> > and when I start mplayer, I see this:
> > 
> > dmesg:
> > file:ffff8800798af940 vd->owner:ffff8800798af940
> > file:ffff8800798af940 vd->owner:ffff8800798af940
> > 
> > I assume it's some sort of initialization, no EPERM here.
> > Then I press "lower the volume" key (keypad "/")
> > in mplayer window, twice:
> > 
> > dmesg:
> > file:ffff8800798af8c0 vd->owner:ffff8800798af940
> > vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
> > file:ffff8800798af740 vd->owner:ffff8800798af940
> > vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
> 
> The file instances are different.  It implies that mplayer opens the
> device at each time but doesn't close.
> It sounds like a bug in mplayer to me.

... or the first control handle keeps opened and blocks it.
A question is how is your PCM configuration and which control element
is locked?  The latter can be seen by adding a printk of kctl->id.name.


Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-05  5:41           ` Takashi Iwai
@ 2009-08-05  8:50             ` Clemens Ladisch
  2009-08-05 22:00             ` Denys Vlasenko
  1 sibling, 0 replies; 9+ messages in thread
From: Clemens Ladisch @ 2009-08-05  8:50 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Denys Vlasenko, linux-kernel

Takashi Iwai wrote:
> I wrote:
> > The file instances are different.  It implies that mplayer opens the
> > device at each time but doesn't close.
> > It sounds like a bug in mplayer to me.
> 
> ... or the first control handle keeps opened and blocks it.

mplayer indeed leaks the mixer handle.  This happens if setting the
volume fails, i.e., _after_ this message:
> > > > > > > alsa-control: error setting left channel, Operation not permitted


Best regards,
Clemens

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: sound: -EPERM on first mplayer invocation
  2009-08-05  5:41           ` Takashi Iwai
  2009-08-05  8:50             ` Clemens Ladisch
@ 2009-08-05 22:00             ` Denys Vlasenko
  1 sibling, 0 replies; 9+ messages in thread
From: Denys Vlasenko @ 2009-08-05 22:00 UTC (permalink / raw)
  To: Takashi Iwai, mplayer-users; +Cc: linux-kernel

[Added mplayer-users@mplayerhq.hu to To:]

On Wednesday 05 August 2009 07:41, Takashi Iwai wrote:
> At Wed, 05 Aug 2009 07:37:30 +0200,
> > > I modified 2.6.31-rc2 source as follows:
> > > 
> > > static int snd_ctl_elem_write(struct snd_card *card, struct snd_ctl_file *file,
> > >                               struct snd_ctl_elem_value *control)
> > > {
> > >         struct snd_kcontrol *kctl;
> > >         struct snd_kcontrol_volatile *vd;
> > >         unsigned int index_offset;
> > >         int result;
> > > 
> > >         down_read(&card->controls_rwsem);
> > >         kctl = snd_ctl_find_id(card, &control->id);
> > >         if (kctl == NULL) {
> > >                 result = -ENOENT;
> > >         } else {
> > >                 index_offset = snd_ctl_get_ioff(kctl, &control->id);
> > >                 vd = &kctl->vd[index_offset];
> > > if (file && vd->owner)
> > >  printk("file:%p vd->owner:%p\n", file, vd->owner);
> > >                 if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
> > >                     kctl->put == NULL ||
> > >                     (file && vd->owner && vd->owner != file)) {
> > > if (file && vd->owner)
> > >  printk("vd->owner_pid:%d vd->owner->pid:%d file->pid:%d\n", vd->owner_pid, vd->owner->pid, file->pid);
> > >                         result = -EPERM;
> > >                 } else {
> > > ...
> > > 
> > > and when I start mplayer, I see this:
> > > 
> > > dmesg:
> > > file:ffff8800798af940 vd->owner:ffff8800798af940
> > > file:ffff8800798af940 vd->owner:ffff8800798af940
> > > 
> > > I assume it's some sort of initialization, no EPERM here.
> > > Then I press "lower the volume" key (keypad "/")
> > > in mplayer window, twice:
> > > 
> > > dmesg:
> > > file:ffff8800798af8c0 vd->owner:ffff8800798af940
> > > vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
> > > file:ffff8800798af740 vd->owner:ffff8800798af940
> > > vd->owner_pid:0 vd->owner->pid:2067 file->pid:2067
> > 
> > The file instances are different.  It implies that mplayer opens the
> > device at each time but doesn't close.
> > It sounds like a bug in mplayer to me.
> 
> ... or the first control handle keeps opened and blocks it.
> A question is how is your PCM configuration and which control element
> is locked?  The latter can be seen by adding a printk of kctl->id.name.

I see this in dmesg:

file:ffff88007d28e7c0 vd->owner:ffff88007d28e7c0 kctl->id.name:'PCM Playback Volume'
file:ffff88007d28e7c0 vd->owner:ffff88007d28e7c0 kctl->id.name:'PCM Playback Volume'
file:ffff88007d28e740 vd->owner:ffff88007d28e7c0 kctl->id.name:'PCM Playback Volume'
vd->owner_pid:0 vd->owner->pid:2086 file->pid:2086
file:ffff88007d28e5c0 vd->owner:ffff88007d28e7c0 kctl->id.name:'PCM Playback Volume'
vd->owner_pid:0 vd->owner->pid:2086 file->pid:2086

I straced mplayer. I pressed "lower the volume" key
twice within about 3 seconds, then exited mplayer.

I see this in strace (filtered using
"grep -e open -e close -e error -e /dev/ STRACE_LOG"):

...
23:38:19.825798 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.825951 close(6)                = 0
23:38:19.826325 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.826445 close(6)                = 0
23:38:19.826543 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.826870 close(6)                = 0
...
23:38:19.844860 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.844973 close(6)                = 0
23:38:19.845282 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.845390 close(6)                = 0
23:38:19.845500 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.845797 close(6)                = 0
23:38:19.855205 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.855338 close(6)                = 0
23:38:19.855647 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.855755 close(6)                = 0
23:38:19.855848 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.856145 close(6)                = 0
23:38:19.856323 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.856440 close(6)                = 0
23:38:19.856762 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.856870 close(6)                = 0
23:38:19.856964 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.857257 close(6)                = 0
23:38:19.857442 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.857549 close(6)                = 0
23:38:19.857836 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.857943 close(6)                = 0
23:38:19.858038 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.858329 close(6)                = 0
...
23:38:19.874866 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.874977 close(6)                = 0
23:38:19.876461 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.876574 close(6)                = 0
23:38:19.876675 open("/dev/snd/controlC0", O_RDWR) = 6
23:38:19.876977 open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 7
23:38:19.877202 close(6)                = 0
23:38:19.891060 open("/dev/snd/controlC0", O_RDONLY) = 6
23:38:19.891177 close(6)                = 0
23:38:19.891278 open("/dev/snd/timer", O_RDONLY|O_NONBLOCK) = 6
23:38:19.891781 open("/proc/cpuinfo", O_RDONLY) = 8
23:38:19.892409 close(8)                = 0
23:38:19.892727 open("/dev/snd/controlC0", O_RDONLY) = 8
23:38:19.892834 close(8)                = 0
23:38:19.893166 open("/dev/snd/controlC0", O_RDONLY) = 8
23:38:19.893274 close(8)                = 0
23:38:19.893369 open("/dev/snd/controlC0", O_RDWR) = 8
23:38:19.894819 write(1, "alsa-init: pcm opend in blocking"..., 38) = 38
...
...
	Here I press "lower the volume" key:
23:38:28.343401 open("/dev/snd/controlC0", O_RDONLY) = 9
23:38:28.343530 close(9)                = 0
23:38:28.343630 open("/dev/snd/controlC0", O_RDWR) = 9
23:38:28.354506 close(9)                = 0
23:38:28.354908 open("/dev/snd/controlC0", O_RDONLY) = 9
23:38:28.355024 close(9)                = 0
23:38:28.355119 open("/dev/snd/controlC0", O_RDWR) = 9
23:38:28.365707 write(2, "alsa-control: error setting left"..., 66) = 66
23:38:28.367310 open("/dev/snd/controlC0", O_RDONLY) = 10
23:38:28.367427 close(10)               = 0
23:38:28.367539 open("/dev/snd/controlC0", O_RDWR) = 10
23:38:28.381267 close(10)               = 0
	And again:
23:38:31.503361 open("/dev/snd/controlC0", O_RDONLY) = 10
23:38:31.503489 close(10)               = 0
23:38:31.503589 open("/dev/snd/controlC0", O_RDWR) = 10
23:38:31.514280 close(10)               = 0
23:38:31.514690 open("/dev/snd/controlC0", O_RDONLY) = 10
23:38:31.514805 close(10)               = 0
23:38:31.514899 open("/dev/snd/controlC0", O_RDWR) = 10
23:38:31.525305 write(2, "alsa-control: error setting left"..., 66) = 66
23:38:31.526167 open("/dev/snd/controlC0", O_RDONLY) = 11
23:38:31.526283 close(11)               = 0
23:38:31.526382 open("/dev/snd/controlC0", O_RDWR) = 11
23:38:31.539630 close(11)               = 0
	I press ESC:
23:38:34.385307 close(3)                = 0
23:38:34.403561 close(6)                = 0
23:38:34.403883 close(7)                = 0
23:38:34.404767 close(8)                = 0
23:38:34.404921 write(1, "alsa-uninit: pcm closed\n", 24) = 24
23:38:34.405961 close(5)                = 0

Obviously, mplayer forgets to close fds opened to /dev/snd/controlC0:
first, fd 8; it opens a new one (fd 9) and gets error out of it.
Then, after 1st error, it similarly does not close or reuse fd 9
but opens fd 10.

For mplayer folks: my ~/.mplayer/config is:

msglevel=all=6
ao=alsa
monitoraspect=5:4

And command line is just:

mplayer The_league_of_extraordinary_gentlemen.avi

For completeness, here is unabridged strace from the moment
I press "\" for the 1st time until -EPERM is seen:

23:38:28.342959 read(0, "/", 256)       = 1
23:38:28.343136 stat64("/usr/app/alsa-lib-1.0.17a/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9008, ...}) = 0
23:38:28.343401 open("/dev/snd/controlC0", O_RDONLY) = 9
23:38:28.343530 close(9)                = 0
23:38:28.343630 open("/dev/snd/controlC0", O_RDWR) = 9
23:38:28.343736 ioctl(9, USBDEVFS_CONTROL, 0xffd31984) = 0
23:38:28.343846 fcntl64(9, F_GETFL)     = 0x2 (flags O_RDWR)
23:38:28.343984 fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
23:38:28.344112 ioctl(9, USBDEVFS_RELEASEINTERFACE, 0xffd31a00) = 0
23:38:28.344214 ioctl(9, USBDEVFS_RELEASEINTERFACE, 0xffd31a00) = 0
23:38:28.344461 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.344606 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.344713 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.344819 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.344916 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.345013 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.345127 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.345226 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.345326 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.345425 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.345535 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.345633 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.345730 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.345830 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.345928 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.346026 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.346123 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.346220 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.346319 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.346417 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.346524 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.346620 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.346717 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.346816 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.346914 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.347012 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.347108 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.347205 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.347304 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.347402 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.347508 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.347604 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.347701 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.347800 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.347898 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.347996 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.348092 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.348188 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.348288 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.348387 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.348493 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.348590 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.348687 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.348787 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.348885 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.348982 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.349079 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.349176 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.349277 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.349373 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.349479 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.349579 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.349677 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.349775 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.349872 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.349969 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.350069 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.350169 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.350269 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.350368 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.350475 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.350573 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.350670 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.350769 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.350866 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.350990 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351091 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.351190 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351286 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351381 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351486 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351586 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.351685 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351780 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.351878 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.351975 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.352072 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.352173 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.352271 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.352369 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.353085 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.353208 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.353330 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.353450 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.353554 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.353653 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.353754 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.353852 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.353953 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.354052 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31760) = 0
23:38:28.354151 ioctl(9, USBDEVFS_IOCTL, 0xffd31320) = 0
23:38:28.354248 ioctl(9, USBDEVFS_IOCTL, 0xffd31330) = 0
23:38:28.354348 ioctl(9, USBDEVFS_DISCONNECT, 0xffd319e8) = 0
23:38:28.354506 close(9)                = 0
23:38:28.354639 stat64("/usr/app/alsa-lib-1.0.17a/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9008, ...}) = 0
23:38:28.354908 open("/dev/snd/controlC0", O_RDONLY) = 9
23:38:28.355024 close(9)                = 0
23:38:28.355119 open("/dev/snd/controlC0", O_RDWR) = 9
23:38:28.355226 ioctl(9, USBDEVFS_CONTROL, 0xffd31924) = 0
23:38:28.355321 fcntl64(9, F_GETFL)     = 0x2 (flags O_RDWR)
23:38:28.355415 fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
23:38:28.355519 ioctl(9, USBDEVFS_RELEASEINTERFACE, 0xffd319a0) = 0
23:38:28.355620 ioctl(9, USBDEVFS_RELEASEINTERFACE, 0xffd319a0) = 0
23:38:28.355811 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.355913 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.356013 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.356111 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.356208 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.356304 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.356404 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.356511 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.356610 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.356709 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.356809 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.356906 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.357003 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.357104 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.357203 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.357301 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.357398 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.357504 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.357604 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.357702 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.357800 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.357897 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.357993 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.358093 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.358191 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.358289 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.358385 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.358490 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.358590 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.358689 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.358824 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.358921 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.359018 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.359117 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.359215 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.359313 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.359410 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.359515 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.359631 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.359730 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.359827 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.359924 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.360021 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.360121 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.360220 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.360317 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.360414 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.360521 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.360622 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.360719 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.360816 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.360916 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.361014 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.361112 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.361209 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.361307 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.361407 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.361515 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.361616 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.361715 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.361814 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.361971 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.362069 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.362169 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.362266 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.362363 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.362473 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.362572 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.362668 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.362914 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363010 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363112 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.363211 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363307 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363405 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.363511 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.363608 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363744 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.363844 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.363943 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.364040 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.364138 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.364242 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.364342 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.364453 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.364552 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.364652 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.364750 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.364850 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.364948 ioctl(9, USBDEVFS_CONNECTINFO, 0xffd31700) = 0
23:38:28.365046 ioctl(9, USBDEVFS_IOCTL, 0xffd312c0) = 0
23:38:28.365143 ioctl(9, USBDEVFS_IOCTL, 0xffd312d0) = 0
23:38:28.365238 ioctl(9, USBDEVFS_DISCONNECT, 0xffd31988) = 0
23:38:28.365343 ioctl(9, USBDEVFS_IOCTL, 0xffd316b0) = 0
23:38:28.365456 ioctl(9, USBDEVFS_HUB_PORTINFO, 0xffd316b0) = -1 EPERM (Operation not permitted)
23:38:28.365565 ioctl(9, USBDEVFS_IOCTL, 0xffd315b0) = 0
23:38:28.365707 write(2, "alsa-control: error setting left"..., 66) = 66


--
vda

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-08-05 21:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-02 21:36 sound: -EPERM on first mplayer invocation Denys Vlasenko
2009-08-03  6:55 ` Takashi Iwai
2009-08-04  9:01   ` Denys Vlasenko
2009-08-04  9:16     ` Takashi Iwai
2009-08-05  2:32       ` Denys Vlasenko
2009-08-05  5:37         ` Takashi Iwai
2009-08-05  5:41           ` Takashi Iwai
2009-08-05  8:50             ` Clemens Ladisch
2009-08-05 22:00             ` Denys Vlasenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox