[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