[x264-devel] x264 crashes on hyperthreaded Intel processors
Vladislav Naumov
vladislav.naumov at gmail.com
Fri Sep 15 13:56:58 CEST 2006
Last SVN versions of x264 crash on hyperthreaded Intel processors.
this is revison 564 (few previous did crash too)
on Intel(R) Pentium(R) 4 CPU 2.80GHz
Linux kernel Linux 2.6.17.13-skas3-v9-pre9 #1 SMP PREEMPT
Debian 3.1 "sarge"
I tested on several processors, failed only on Pentium with HT:
Intel(R) Pentium(R) 4 CPU 2.80GHz (hyperthreaded): SIGSEGV
Celeron (Coppermine): OK
AMD Athlon(tm) XP 2500+ : OK
Intel(R) Pentium(R) III Mobile CPU 800MHz : OK
Backtraces and stuff:
(gdb) run -v -o Z.mkv stream.dump 320x240
Starting program: /home/nvy/build/x264-SVN/x264 -v -o Z.mkv stream.dump 320x240
[Thread debugging using libthread_db enabled]
[New Thread -1210244992 (LWP 3775)]
x264 [info]: using cpu capabilities MMX MMXEXT SSE SSE2
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1210244992 (LWP 3775)]
0x080b980c in x264_pixel_ssim_end4_sse2 ()
(gdb) bt
#0 0x080b980c in x264_pixel_ssim_end4_sse2 ()
#1 0x08059403 in x264_pixel_ssim_wxh (pf=0x83d104c,
pix1=0x8460812 "\020\016\021\v\n", '\f' <repeats 11 times>,
"\r\016\016\017\017\016\f\f\017\020\020\n\n\020\020\v\v\020\021\n\n\021\f\f\r\r\016\016\016\016\r\r\f\016\016\017\v\t\017\v\v\017\017\017\017\017\021\r\v\016\r\r\f\f\r\r\r\017\020\021\r\v\020\a\a\020\020\a\a\020\n\n\n\v\t\020\020\t\v\020\020\v\023\021\r\f\021\n\n\021\021\n\n\021\022\v\v\022\f\r\020",
'\021' <repeats 83 times>..., stride1=384,
pix2=0x83da3c2 "\f\f\021\v\v\f", '\v' <repeats 12 times>,
"\r\021\021\021\n\n\021\021\021\n\n\021\021\n\n\021\021\n\n\021\n\n\021\n\n\021\021\n\n\021\n\n\021\021\n\n\021\n\n\021\021\021\021\021\021\n\n\n\n\021\n\n\021\021\021\021\021\021\n\n\021\n\n\021\021\n\n\021\n\n\021\n\n\021\021\n\n\021\021\021\021\021\n\n\021\n\n\021\021\n\n\021\021\n\n\021\n\n",
'\021' <repeats 84 times>..., stride2=384, width=79, height=59) at
common/pixel.c:396
#2 0x08053864 in x264_encoder_encode (h=0x83cd3b0, pp_nal=0xbf8ef648,
pi_nal=0xbf8ef64c, pic_in=0x0, pic_out=0xbf8ef650)
at encoder/encoder.c:1624
#3 0x0804a2f6 in Encode_frame (h=0xbf8eef74, hout=0x83cd008,
pic=0xbf8eef74) at x264.c:686
#4 0x0804a57a in Encode (param=0xbf8ef7d0, opt=0xbf8ef7b0) at x264.c:772
#5 0x0804926f in main (argc=-1081151628, argv=0xbf8eef74) at x264.c:110
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x80b97ec to 0x80b982c:
0x080b97ec <x264_pixel_ssim_4x4x2_core_sse2+332>: or %ah,0xf(%esi)
0x080b97ef <x264_pixel_ssim_4x4x2_core_sse2+335>: jae
0x80b97ca <x264_pixel_ssim_4x4x2_core_sse2+298>
0x080b97f1 <x264_pixel_ssim_4x4x2_core_sse2+337>: or %ah,0xf(%esi)
0x080b97f4 <x264_pixel_ssim_4x4x2_core_sse2+340>: (bad)
0x080b97f5 <x264_pixel_ssim_4x4x2_core_sse2+341>: dec %eax
0x080b97f6 <x264_pixel_ssim_4x4x2_core_sse2+342>: adc %ah,0xf(%esi)
0x080b97f9 <x264_pixel_ssim_4x4x2_core_sse2+345>: (bad)
0x080b97fa <x264_pixel_ssim_4x4x2_core_sse2+346>: push $0x90c35b18
0x080b97ff <x264_pixel_ssim_4x4x2_core_sse2+351>: nop
0x080b9800 <x264_pixel_ssim_end4_sse2+0>: mov 0x4(%esp),%eax
0x080b9804 <x264_pixel_ssim_end4_sse2+4>: mov 0x8(%esp),%ecx
0x080b9808 <x264_pixel_ssim_end4_sse2+8>: mov 0xc(%esp),%edx
0x080b980c <x264_pixel_ssim_end4_sse2+12>: movdqa (%eax),%xmm0
0x080b9810 <x264_pixel_ssim_end4_sse2+16>: movdqa 0x10(%eax),%xmm1
0x080b9815 <x264_pixel_ssim_end4_sse2+21>: movdqa 0x20(%eax),%xmm2
0x080b981a <x264_pixel_ssim_end4_sse2+26>: movdqa 0x30(%eax),%xmm3
0x080b981f <x264_pixel_ssim_end4_sse2+31>: movdqa 0x40(%eax),%xmm4
0x080b9824 <x264_pixel_ssim_end4_sse2+36>: paddd (%ecx),%xmm0
0x080b9828 <x264_pixel_ssim_end4_sse2+40>: paddd 0x10(%ecx),%xmm1
End of assembler dump.
(gdb) info all-registers
eax 0xbf8eef74 -1081151628
ecx 0xbf8eea54 -1081152940
edx 0x4 4
ebx 0x0 0
esp 0xbf8eea3c 0xbf8eea3c
ebp 0xbf8ef4b8 0xbf8ef4b8
esi 0x4f 79
edi 0xbf8eef74 -1081151628
eip 0x80b980c 0x80b980c
eflags 0x10282 66178
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
st0 -nan(0x1600000056) (raw 0xffff0000001600000056)
st1 -nan(0x000000016) (raw 0xffff0000000000000016)
st2 -nan(0x200000002) (raw 0xffff0000000200000002)
st3 -nan(0xb0000000b) (raw 0xffff0000000b0000000b)
st4 9 (raw 0x40029000000000000000)
st5 9 (raw 0x40029000000000000000)
st6 47.7092742919921875 (raw 0x4004bed64c0000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x37f 895
fstat 0x20 32
ftag 0xffff 65535
fiseg 0x73 115
fioff 0x80592f7 134583031
foseg 0x7b 123
fooff 0xbf8ef4a0 -1081150304
fop 0x1e2 482
xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0,
0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
---Type <return> to continue, or q <return> to quit---
mxcsr 0x1f80 8064
mm0 {uint64 = 0x1600000056, v2_int32 = {0x56, 0x16},
v4_int16 = {0x56, 0x0, 0x16, 0x0}, v8_int8 = {0x56, 0x0,
0x0, 0x0, 0x16, 0x0, 0x0, 0x0}}
mm1 {uint64 = 0x16, v2_int32 = {0x16, 0x0}, v4_int16 =
{0x16, 0x0, 0x0, 0x0}, v8_int8 = {0x16, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}}
mm2 {uint64 = 0x200000002, v2_int32 = {0x2, 0x2}, v4_int16
= {0x2, 0x0, 0x2, 0x0}, v8_int8 = {0x2, 0x0, 0x0, 0x0,
0x2, 0x0, 0x0, 0x0}}
mm3 {uint64 = 0xb0000000b, v2_int32 = {0xb, 0xb}, v4_int16
= {0xb, 0x0, 0xb, 0x0}, v8_int8 = {0xb, 0x0, 0x0, 0x0,
0xb, 0x0, 0x0, 0x0}}
mm4 {uint64 = 0x9000000000000000, v2_int32 = {0x0,
0x90000000}, v4_int16 = {0x0, 0x0, 0x0, 0x9000}, v8_int8 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90}}
mm5 {uint64 = 0x9000000000000000, v2_int32 = {0x0,
0x90000000}, v4_int16 = {0x0, 0x0, 0x0, 0x9000}, v8_int8 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90}}
mm6 {uint64 = 0xbed64c0000000000, v2_int32 = {0x0,
0xbed64c00}, v4_int16 = {0x0, 0x0, 0x4c00, 0xbed6}, v8_int8 = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x4c, 0xd6, 0xbe}}
mm7 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0,
0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0}}
--
This is the x264-devel mailing-list
To unsubscribe, go to: http://developers.videolan.org/lists.html
More information about the x264-devel
mailing list