Opened 18 years ago
Closed 18 years ago
#124 closed defect (fixed)
SIGSEGV when trying to play Windows Media Video 8 (not supported) with build from trunk of 20060829
Reported by: | Franz | Owned by: | vladest |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | WVGUI-Core | Version: | |
Severity: | normal | Keywords: | |
Cc: |
Description
When I try to play a WMV file with non supported format
example:
video2.exe mms://213.254.239.51/tagesschau/msmedia/2006/0828/TV-20060828-2305-1701.wm.hi.wmv
(well not supported after the last changes in trunk) I get:
... Found video codec: Windows Media Video 8 (not supported) ... Video thread started detected 1 audio stream A: 2.971 V: 3.343 A-V: -0.37 fps: 25.00 ft: 0 ms, cpu: OK Killed by SIGSEGV pid=0x004a ppid=0x0043 tid=0x0007 slot=0x0090 pri=0x0300 mc=0x0001 O:\APPS\WVOWNOG\VIDEO2.EXE VIDEO2 0:00266afe cs:eip=005b:00276afe ss:esp=0053:05875d1c ebp=05875d34
ds=0053 es=0053 fs=150b gs=0000 efl=00012246
eax=00003fe0 ebx=008cad90 ecx=05879e4c edx=008cad90 edi=05875dfc esi=00001000 Process dumping was disabled, use DUMPPROC / PROCDUMP to enable it.
(wvgui101 has no problems with this sort of file/stream)
Attachments (1)
Change History (17)
comment:1 by , 18 years ago
Status: | new → assigned |
---|
comment:2 by , 18 years ago
tried a complete rebuild but still same problem here.
What does 'works here' mean?
(a) doesn't crash
or
(b) the mms://... stream with 'Windows Media Video 8' is displayed ?
comment:4 by , 18 years ago
I don't really know how to debug this, but tried anyway...
The last things I see with vac365-debugger (I don't have 3.08 debugger) is
- line 1968 of play.hpp (the end of the _begin_play() function)
- then a disassembly of libc61.dll thread:5
0x16f6e919 call 160265f4h if I press Over or Into I get the SIGSEV
- the very last thing I see after WVGUI has died is
- disassembly libc061:dll Thread:7
0x1F638DC INT 3
I hope this info is useful for solving the problem.
Franz
comment:5 by , 18 years ago
Found the culprit (or at least a workaround):
If I downgrade dsputil_mmx.c to changeset 181 and add
static const uint64_t ff_pb_1 attribute_used attribute ((aligned(8))) = 0x0101010101010101ULL;
static const uint64_t ff_pb_3 attribute_used attribute ((aligned(8))) = 0x0303030303030303ULL;
static const uint64_t ff_pb_7 attribute_used attribute ((aligned(8))) = 0x0707070707070707ULL;
and recompile the SIGSEGV is gone and I can watch the news :-)
Franz
comment:6 by , 18 years ago
Other probably better solution (workaround) is to remove ( comment out ) lines 2935 to 2952 in the current version of libavcodec\i386\dsputil_mmx.c
The inline-assembler version of ff_vector_fmul_add_add_c() is the reason for the SIGSEGV.
Now it's up to you Vlad ;-)
comment:9 by , 18 years ago
I have a IBM T23 notebook with a mobile 1,13GHz PIII CPU
and no I did not try -nosse, but I'm quite shure this would work.
comment:10 by , 18 years ago
patched cpu checking for nosse option to make it wvgui wide run video2.exe -nosse this should works looks like some troubles with sse code need to check if its align or just bug in code
comment:12 by , 18 years ago
seems to me that
DECLARE_ALIGNED_16(float, window[BLOCK_MAX_SIZE * 2]);
DECLARE_ALIGNED_16(FFTSample, output[BLOCK_MAX_SIZE * 2]);
don't work as designed.
Hexadecimal representation of 'window' and 'output' in debugger end with 'C' and not with '0'
comment:13 by , 18 years ago
you right I've moved those declares out of function and all works now I.e. aligned() doesnt works for stack variables
works here