[Ffmpeg-devel] sse sigsegv and libavcodec/wmadec.c

Benjamin Larsson banan
Wed Dec 6 16:29:44 CET 2006


Michael Niedermayer skrev:
> Hi
>
> On Wed, Dec 06, 2006 at 02:35:16PM +0100, Benjamin Larsson wrote:
>   
>> Michael Niedermayer skrev:
>>     
>>> Hi
>>>
>>> On Fri, Dec 01, 2006 at 10:40:53PM +0100, Franz Bakan wrote:
>>>  
>>>       
>>>> Hi,
>>>>
>>>> wmadec.c line 720 and 1110 :
>>>> DECLARE_ALIGNED_16()
>>>> does not work for stack-variables inside functions.
>>>> (at least not for GCC 331 on OS/2) but IIRC this is a
>>>> cross-platform-restriction.
>>>> If I move the two declarations to the top of the file
>>>> I get rid of these nasty SIGSEGVs on my PIII computer.
>>>>
>>>> Please patch
>>>>    
>>>>         
>>> patch rejected not thread safe
>>>
>>> furthermore if the compiler cannot gurantee the specfied alignment then it
>>> has to fail hard not randomly provide less alignemnt, this is a compiler 
>>> bug
>>> (= generates invalid code)
>>>
>>> [...]
>>>  
>>>       
>> Hi, do you have any good suggestion how this can be fixed without fixing 
>> the compiler. This affects all codecs that needs aligned float buffers 
>> when using sse on windows (and other platforms). We could try to 
>> manually align the contexts (hacky but could work) or should we disable 
>> sse on platforms with broken compilers ?
>>     
>
> why exactly does gcc on windows fail to provide the specified alignment while
> it works on linux? are all gcc versions affected?
> if its just gcc 3 then id say drop official gcc 3 support for windows
>
> [...]
>   

It fails to respect the align attribute in structs, so when properly 
aligning a codec context with malloc the actual struct members don't get 
aligned properly. I don't know exactly what versions are affected, but 
this is causing problems for gcc 2.95 on BeOS also.


MvH
Benjamin Larsson




More information about the ffmpeg-devel mailing list