Janne Hyvärinen
2015-Mar-09 19:38 UTC
[flac-dev] crash on lpc_restore_signal_16_intrin_sse2
On 9.3.2015 20:43, lvqcl wrote:> Janne Hyv?rinen wrote: > >> VLC 2.2.0 crashed with exception 0xc0000005 on the first file I tried. >> But libflac itself does not, for example flac.exe and foobar2000 have no >> issues. > *Very* interesting. > > I suspect that flac.exe and foobar2000 don't use > FLAC__lpc_restore_signal_16_intrin_sse2() function at all. This function > is not used if NASM is available; FLAC__lpc_restore_signal_asm_ia32_mmx() > is used instead. > > I wonder how to debug this crash... >I compiled flac.exe without NASM and verified that FLAC__lpc_restore_signal_16_intrin_sse2 is used. Decoding the same file that made VLC 2.2 crash decoded without issues. Would be nice if VLC was compilable with MSVC and we could use its debugger.
Janne Hyv?rinen wrote:> I compiled flac.exe without NASM and verified that > FLAC__lpc_restore_signal_16_intrin_sse2 is used. Decoding the same file > that made VLC 2.2 crash decoded without issues. Would be nice if VLC was > compilable with MSVC and we could use its debugger. >VLC 2.2.0 crashes here inside WinXP VM on instruction: movaps xmmword ptr [esp+10h], xmm7 And ESP is equal to 0x02A8FCC8. The stack is not properly aligned for some reason, yet GCC uses movaps instruction. IMHO VLC developers should find out why the stack is misaligned.
Tristan Matthews
2015-Mar-09 21:38 UTC
[flac-dev] crash on lpc_restore_signal_16_intrin_sse2
On Mon, Mar 9, 2015 at 5:15 PM, lvqcl <lvqcl.mail at gmail.com> wrote:> Janne Hyv?rinen wrote: > >> I compiled flac.exe without NASM and verified that >> FLAC__lpc_restore_signal_16_intrin_sse2 is used. Decoding the same file >> that made VLC 2.2 crash decoded without issues. Would be nice if VLC was >> compilable with MSVC and we could use its debugger. >> > > VLC 2.2.0 crashes here inside WinXP VM on instruction: > > movaps xmmword ptr [esp+10h], xmm7 > > And ESP is equal to 0x02A8FCC8. The stack is not properly aligned > for some reason, yet GCC uses movaps instruction.Sounds a bit like: http://www.peterstock.co.uk/games/mingw_sse/ Also worth noting, VLC uses yasm but not nasm, so we may be able to sidestep this problem by adding nasm to our toolchain. That said, it still seems like other people using MinGW and libFLAC will get bit by this so I'll keep digging.
Possibly Parallel Threads
- [PATCH 1/1] ensure that stack is aligned for SSE functions if using mingw32
- crash on lpc_restore_signal_16_intrin_sse2
- ensure that stack is aligned for SSE functions if using mingw32
- crash on lpc_restore_signal_16_intrin_sse2
- crash on lpc_restore_signal_16_intrin_sse2