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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox