No subject


Mon Aug 8 05:14:44 PDT 2011


add some kind of base address to it. so it directly jumps to a smaller
address, which causes the seg fault.

(gdb) info reg
eax            0x8060e08	134614536
ecx            0x1	1
edx            0x0	0
ebx            0xb3ab2d1c	-1280627428
esp            0xbfffe960	0xbfffe960
ebp            0xbfffe9f8	0xbfffe9f8
esi            0x808d318	134796056
edi            0xb3ab6dd2	-1280610862
eip            0xb3ab04dc	0xb3ab04dc
<module_alsa_card_LTX_pa__init+28>
eflags         0x282	[ SF IF ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x000015ba in ?? ()
(gdb) info reg
eax            0x8060e08	134614536
ecx            0x1	1
edx            0x0	0
ebx            0xb3ab2d1c	-1280627428
esp            0xbfffe95c	0xbfffe95c
ebp            0xbfffe9f8	0xbfffe9f8
esi            0x808d318	134796056
edi            0xb3ab6dd2	-1280610862
eip            0x15ba	0x15ba			<------
eflags         0x10282	[ SF IF RF ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51

the correct address for refcnt_inc should be:
(gdb) p pa_alsa_refcnt_inc
$1 = {void (void)} 0xb3a73460 <pa_alsa_refcnt_inc>

> because pa_card_info has a pointer to an array of these objects, with 
> the following comment:
> 
> pa_card_profile_info* profiles;      /**< Array of available profile, or 
> NULL. Array is terminated by an entry with name set to NULL. Number of 
> entries is stored in n_profiles */
> 
> Which means the client has to rely on sizeof(pa_card_profile_info) to 
> know the address of the second (and third, and so on) array entry. As 
> sizeof(pa_card_profile_info) is changed, recompilation of clients is 
> necessary.
> 
> :-(
> 
> Any good ideas as of how to avoid it?
> 
> -- 
> David Henningsson
> http://launchpad.net/~diwic
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

-- 
guanqun


More information about the pulseaudio-discuss mailing list