All of lore.kernel.org
 help / color / mirror / Atom feed
From: Valentin Corfu <corfuvalentin@gmail.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org
Subject: Re: Segmentation Fault in snd_pcm_rate_hw_free()
Date: Wed, 05 Aug 2015 11:15:01 +0300	[thread overview]
Message-ID: <55C1C605.8090902@gmail.com> (raw)
In-Reply-To: <s5hegjib42k.wl-tiwai@suse.de>



On 05.08.2015 10:13, Takashi Iwai wrote:
> On Wed, 05 Aug 2015 08:58:16 +0200,
> Valentin Corfu wrote:
>> Hello Takashi,
>>
>>
>> On 04.08.2015 18:15, Takashi Iwai wrote:
>>> On Tue, 04 Aug 2015 17:02:26 +0200,
>>> Valentin Corfu wrote:
>>>>
>>>> On 04.08.2015 17:53, Takashi Iwai wrote:
>>>>> On Tue, 04 Aug 2015 16:08:30 +0200,
>>>>> Valentin Corfu wrote:
>>>>>> Hello ALSA developers,
>>>>>>
>>>>>> I observed one segmentation fault in snd_pcm_rate_hw_free() function,
>>>>>> with the following BT:
>>>>>>
>>>>>> (gdb) up
>>>>>> #1  0xb7554cc1 in raise (sig=6) at
>>>>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
>>>>>> 64        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
>>>>>> (gdb)
>>>>>> #2  0xb75580ee in abort () at abort.c:92
>>>>>> 92            raise (SIGABRT);
>>>>>> (gdb)
>>>>>> #3  0xb758a7dd in __libc_message (do_abort=2,
>>>>>>         fmt=0xb766053c "*** glibc detected *** %s: %s: 0x%s ***\n")
>>>>>>         at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
>>>>>> 189           abort ();
>>>>>> (gdb)
>>>>>> #4  0xb7594a71 in malloc_printerr (action=<value optimized out>,
>>>>>>         str=<value optimized out>, ptr=0x969ae98) at malloc.c:6283
>>>>>> 6283          __libc_message (action & 2,
>>>>>> (gdb)
>>>>>> #5  0xb759636b in _int_free (av=<value optimized out>, p=0x969ae90)
>>>>>>         at malloc.c:4795
>>>>>> 4795          malloc_printerr (check_action, errstr, chunk2mem(p));
>>>>>> (gdb)
>>>>>> #6  0xb75994bd in __libc_free (mem=0x969ae98) at malloc.c:3738
>>>>>> 3738      _int_free(ar_ptr, p);
>>>>>> (gdb)
>>>>>> #7  0xb76f3a81 in snd_pcm_rate_hw_free (pcm=0x9685d78) at pcm_rate.c:341
>>>>>> 341                     free(rate->pareas[0].addr);
>>>>> Could you check the content of rate->pareas[0] via gdb?
>>>> (gdb) frame 7
>>>> #7  0xb76f3a81 in snd_pcm_rate_hw_free (pcm=0x9685d78) at pcm_rate.c:341
>>>> 341                     free(rate->pareas[0].addr);
>>>> (gdb) print rate->pareas[0]
>>>> $1 = {addr = 0x969ae98, first = 0, step = 16}
>>>> (gdb) print rate->pareas[0].addr
>>>> $2 = (void *) 0x969ae98
>>> And accessing to pareas[0].addr is OK?  This is a temporary sample
>>> buffer allocated in alsa-lib rate plugin.
>>>
>> Are you referring if the pointer is valid one?
>> How could I check this?
> Look into it via gdb.
>


(gdb) list
336
337     static int snd_pcm_rate_hw_free(snd_pcm_t *pcm)
338     {
339             snd_pcm_rate_t *rate = pcm->private_data;
340             if (rate->pareas) {
341                     free(rate->pareas[0].addr);
342                     free(rate->pareas);
343                     rate->pareas = NULL;
344                     rate->sareas = NULL;
345             }
(gdb) x rate->pareas[0].addr
0x969ae98:      0x019f0110
(gdb) x 0x019f0110
0x19f0110:      Cannot access memory at address 0x19f0110
(gdb) print *(rate->pareas[0].addr)
Attempt to dereference a generic pointer.
(gdb) p /s *(char *)(rate->pareas[0].addr)
$6 = 16 '\020'
(gdb) p /s *(char **)(rate->pareas[0].addr)
$7 = 0x19f0110 <Address 0x19f0110 out of bounds>


>>>>>> (gdb)
>>>>>> #8  0xb76d045b in snd_pcm_hw_free (pcm=0x9685d78) at pcm.c:858
>>>>>> 858             err = pcm->ops->hw_free(pcm->op_arg);
>>>>>> (gdb)
>>>>>> #9  0xb76f826e in snd_pcm_plug_hw_free (pcm=0x96856b0) at pcm_plug.c:1046
>>>>>> 1046            int err = snd_pcm_hw_free(slave);
>>>>>> (gdb)
>>>>>> #10 0xb76d045b in snd_pcm_hw_free (pcm=0x96856b0) at pcm.c:858
>>>>>> 858             err = pcm->ops->hw_free(pcm->op_arg);
>>>>>> (gdb)
>>>>>> #11 0x080492ad in main ()
>>>>>>
>>>>>>
>>>>>> Could you please give me some hints how to solve this issue?
>>>>>>
>>>>>> I can provide you more info or the test application, if needed.
>>>>>> I can see the issue every time, and I also checked with latest version
>>>>>> of alsa-lib but I got the same results.
>>>>> I don't know of such an error, so far.
>>>>> It smells like some memory corruption to me.
>>>>>
>>>>> If a test case is a simple code, tracking the bug would be easy...
>>>> I have paste it here:
>>>> http://pastebin.com/WJDTz6cE
>>> It works fine on my system.  How is your PCM setup?  Does the same
>>> problem occur for "plughw" PCM, too?  Also, no external PCM rate
>>> plugin is involved?
>> In my setup it is involved the alsa jack plugin, so I'm using the pcm
>> jack when the segmentation fault is visible.
>> I can not reproduce the issue when I'm using "default" / "plughw" PCM.
> That's the biggest missing piece.  So, a possible bug in jack plugin
> that has been rarely tested / debugged.
>
>
> Takashi
>
>> For more info I have pasted the dump() & log at run:
>> http://pastebin.com/jyy7pP9e
>> It is involved here PCM rate conversion at 48000, but not external one.
>>
>>
>>> Takashi
>>
>> Thank you,
>> Valentin
>>

Best Regards,
Valentin

  reply	other threads:[~2015-08-05  8:16 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-04 14:08 Segmentation Fault in snd_pcm_rate_hw_free() Valentin Corfu
2015-08-04 14:53 ` Takashi Iwai
2015-08-04 15:02   ` Valentin Corfu
2015-08-04 15:15     ` Takashi Iwai
2015-08-05  6:58       ` Valentin Corfu
2015-08-05  7:13         ` Takashi Iwai
2015-08-05  8:15           ` Valentin Corfu [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-08-18  9:51 Alexandru Costache
2015-08-18  9:59 ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55C1C605.8090902@gmail.com \
    --to=corfuvalentin@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.