[ 549.462631] EIP is at snd_pcm_info+0x2f/0x110 [snd_pcm]

In the kernel git:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 25
EXTRAVERSION = -rc8

I found in sound/core/pcm_native.c:

int snd_pcm_info(struct snd_pcm_substream *substream, struct snd_pcm_info *info)
{
        struct snd_pcm_runtime *runtime;
        struct snd_pcm *pcm = substream->pcm; /* Here we are using substream 
already, uups */
        struct snd_pcm_str *pstr = substream->pstr; /* Here too */

        snd_assert(substream != NULL, return -ENXIO); /* doing the assert here 
is too late, I think.
                                    in our case it probably does not matter 
because the calling function checks
                                    the parameters fine. */

/* I wonder which pointer is NULL: substream->pcm, substream->pstr ;-)
*/

        memset(info, 0, sizeof(*info));
        info->card = pcm->card->number;
        info->device = pcm->device;
        info->stream = substream->stream;
        info->subdevice = substream->number;
        strlcpy(info->id, pcm->id, sizeof(info->id));
        strlcpy(info->name, pcm->name, sizeof(info->name));
        info->dev_class = pcm->dev_class;
        info->dev_subclass = pcm->dev_subclass;
        info->subdevices_count = pstr->substream_count;
        info->subdevices_avail = pstr->substream_count - pstr->substream_opened;
        strlcpy(info->subname, substream->name, sizeof(info->subname));
        runtime = substream->runtime;
        /* AB: FIXME!!! This is definitely nonsense */
        if (runtime) {
                info->sync = runtime->sync;
                substream->ops->ioctl(substream, SNDRV_PCM_IOCTL1_INFO, info);
        }
        return 0;
}

static void snd_pcm_proc_info_read(struct snd_pcm_substream *substream,
                                   struct snd_info_buffer *buffer)
{
        struct snd_pcm_info *info;
        int err;

        if (! substream)
                return;

        info = kmalloc(sizeof(*info), GFP_KERNEL);
        if (! info) {
                printk(KERN_DEBUG "snd_pcm_proc_info_read: cannot malloc\n");
                return;
        }

/* Here it is sufficiently made sure that both parameters, substream and info 
are fine.
    So I believe some of pointers within substream are not yet properly 
initialized. */

        err = snd_pcm_info(substream, info);
        if (err < 0) {
                snd_iprintf(buffer, "error %d\n", err);
                kfree(info);
                return;
        }
...
}

Can someone explain to me how one can build an experimental Ubuntu
kernel quickest, without reading all documentation? Maybe we can add
some printks to give more precise bug-report information? Or where can I
find the kernel elf file so that I could do an addrtoline?

-- 
Hardy: Kernel Oopses in sound driver
https://bugs.launchpad.net/bugs/212226
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to