[alsa-devel] Issues with alsa-lib-1.0.13 built using arm gcc 4.1.1

sandeep lahane sandeep.lahane at gmail.com
Tue Mar 18 04:06:20 CET 2008


Hello,

I have written an external io type plugin for an arm based board.
While debugging the plugin, I encountered unexpected errors
which I doubt are because of gcc optimizations, and after looking up on
web it seems that arm-gcc 4.1.1 which we are using has some known bugs
due to which alsa-library functions behave unexpectedly.
E.g. snd_mask_refine() reportedly behaves differently when it is
compiled using different optimization levels, I am facing the same issue
where snd_mask_refine() returns unexpected (-EINVAL) and after I modify the
code as in src/pcm/mask_inline.h

 MASK_INLINE void snd_mask_copy(snd_mask_t *mask, const snd_mask_t *v)
 {
-  *mask = *v;
+    memcpy(mask->bits, v->bits, MASK_SIZE * 4);
 }

snd_mask_refine() returns 0 which is valid but I get segfaults just after
returning from snd_pcm_ioplug_hw_refine().

Is this a known bug and if yes/no then is there any list of known
bugs/quirks when using alsa-lib with arm gcc 4.1.1?


I am attaching a log below, pardon for non-alsa flavour of debug messages in
the log.

# aplay -D myplug etc/startup.wav
AlsaVersion=1.0.13, Opened for Playback
----- INFO  (ALSA) : Successfully Registered the IO plugin ALSA-OPENMAX
PLUGIN

Playing WAVE 'etc/startup.wav' : Signed 16 bit Little Endian, Rate 44100 Hz,
Ste
reo
####aplay.c set_params calling snd_pcm_hw_params_any
###### snd_pcm_hw_params_any 1
##### _snd_pcm_hw_params_any 0
##### _snd_pcm_hw_params_any 2
##### _snd_pcm_hw_params_any 8
##### _snd_pcm_hw_params_any 19
_snd_pcm_hw_param_any
 in hw_is_mask
_snd_pcm_hw_param_any
 in hw_is_mask
_snd_pcm_hw_param_any
 in hw_is_mask
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
_snd_pcm_hw_param_any
 in hw_is_interval
##### snd_pcm_hw_params_any 1
#####snd_pcm_hw_refine
#####snd_pcm_hw_refine calling hw_refine
#### snd_pcm_ioplug_hw_refine 1
snd_ext_parm_mask_refine 1
 snd_mask_refine 1
 snd_ext_parm_mask_refine return val is = 1
 snd_ext_parm_mask_refine 1
 snd_mask_refine 1
 snd_ext_parm_mask_refine return val is = 1
 snd_pcm_ioplug_hw_refine 2
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 3
 snd_mask_refine 1
 snd_mask_refine 1
 snd_mask_refine 1
 snd_pcm_ioplug_hw_refine 4
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 5
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 5 change is = 1
 ##### return val of hw_refine = 1
#####snd_pcm_hw_refine
#####snd_pcm_hw_refine calling hw_refine
#### snd_pcm_ioplug_hw_refine 1
snd_ext_parm_mask_refine 1
 snd_mask_refine 1
 snd_ext_parm_mask_refine return val is = 0
 snd_ext_parm_mask_refine 1
 snd_mask_refine 1
 snd_ext_parm_mask_refine return val is = 0
 snd_pcm_ioplug_hw_refine 2
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 3
 snd_mask_refine 1
 snd_pcm_ioplug_hw_refine 4
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 5
 snd_ext_parm_interval_refine 1
 snd_ext_parm_interval_refine 1
 snd_pcm_ioplug_hw_refine 5 change is = 0
 ##### return val of hw_refine = 0
Dec 31 16:27:59 kernel: aplay: unhandled page fault (11) at 0x00000022, code
0x0
17
Dec 31 16:27:59 kernel: pgd = c30d8000
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel: Pid: 206, comm:                aplay
Dec 31 16:27:59 kernel: CPU: 0    Not tainted  (2.6.23.14-BROADCOM #1)
Dec 31 16:27:59 kernel: PC is at 0x40170770
Dec 31 16:27:59 kernel: LR is at 0x40168210
Dec 31 16:27:59 kernel: pc : [<40170770>]    lr : [<40168210>]    psr:
a0000010
Dec 31 16:27:59 kernel: sp : bee6f698  ip : 401855f8  fp : bee6fb64
Dec 31 16:27:59 kernel: r10: 401852b0  r9 : 00000006  r8 : bee6f894
Dec 31 16:27:59 kernel: r7 : 0001cc64  r6 : 00000022  r5 : 000130fc  r4 :
bee6f7
04
Dec 31 16:27:59 kernel: r3 : ffffffff  r2 : 00000022  r1 : fffffffe  r0 :
000000
22
Dec 31 16:27:59 kernel: Flags: NzCv  IRQs on  FIQs on  Mode USER_32  ISA
ARM  Se
gment user
Dec 31 16:27:59 kernel: Control: 00e5387f  Table: c30d8008  DAC: 00000015
Dec 31 16:27:59 kernel: (__do_user_fault+0x5c/0xa4)
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel: (do_page_fault+0x200/0x238)
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel: (do_DataAbort+0x3c/0xa0)
Dec 31 16:27:59 kernel: (ret_from_exception+0x0/0x10)
Dec 31 16:27:59 kernel: Exception stack(0xc31a1fb0 to 0xc31a1ff8)
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel:
Dec 31 16:27:59 kernel:
Segmentation fault
Regards,
Sandeep.


More information about the Alsa-devel mailing list