Exactly as the title says: MakeMKV is assuming the CPU has SSE2, and hits a SIGILL when it can't find it. Unfortunately this isn't just restricted to the Windows builds, as building MakeMKV for Linux shows the exact same problem; it's in the binary blob itself so the user can't recompile it with the CPU restrictions turned off.
My guess is that this is simply because the compiler used for the -bin package (or the project in toto) may have moved up to MSVC 2012 or higher (or the addition of -msse2 flagging on Linux), which tunes for SSE2 (/ARCH:SSE2) unless that's explicitly turned off/back down to /ARCH:SSE or /ARCH:IA32. For 64-bit builds this isn't a problem because x86-64 requires SSE2 be present in the CPU, but it's obviously not a guarantee for 32-bit.
I'm not sure of the exact version that this showed up in, but v1.9.1 works (or used to; the drive's keys have been updated since then so while MakeMKV v1.9.1 will still launch the GUI, it can't work with Blu-rays) while v1.9.7 and v1.9.8 throw the SIGILL.
This actually makes the System Requirements on the Download page misleading, because the kinds of systems at the low end (WinXP, 512MBs, etc.) are at a much higher likelihood of running processors old enough to be subject to this problem. And general practices for 32-bit Linux distributions are to provide binaries without specific CPU tuning to avoid problems like this.
Recent MakeMKV releases hit SIGILL on Pentium III
-
- Posts: 47
- Joined: Wed May 01, 2013 10:42 pm
Re: Recent MakeMKV releases hit SIGILL on Pentium III
and general practices int he windows world, to avoid problems like these, is to use relatively modern machinesNii~~ wrote: And general practices for 32-bit Linux distributions are to provide binaries without specific CPU tuning to avoid problems like this.
-
- Posts: 4075
- Joined: Wed Nov 26, 2008 2:26 am
- Contact:
Re: Recent MakeMKV releases hit SIGILL on Pentium III
I do not believe either build requires SSE2, please send the crash dumps per instructions at /onlinehelp/dump.htmlNii~~ wrote:Exactly as the title says: MakeMKV is assuming the CPU has SSE2, and hits a SIGILL when it can't find it. Unfortunately this isn't just restricted to the Windows builds, as building MakeMKV for Linux shows the exact same problem; it's in the binary blob itself so the user can't recompile it with the CPU restrictions turned off.
My guess is that this is simply because the compiler used for the -bin package (or the project in toto) may have moved up to MSVC 2012 or higher (or the addition of -msse2 flagging on Linux), which tunes for SSE2 (/ARCH:SSE2) unless that's explicitly turned off/back down to /ARCH:SSE or /ARCH:IA32. For 64-bit builds this isn't a problem because x86-64 requires SSE2 be present in the CPU, but it's obviously not a guarantee for 32-bit.
I'm not sure of the exact version that this showed up in, but v1.9.1 works (or used to; the drive's keys have been updated since then so while MakeMKV v1.9.1 will still launch the GUI, it can't work with Blu-rays) while v1.9.7 and v1.9.8 throw the SIGILL.
This actually makes the System Requirements on the Download page misleading, because the kinds of systems at the low end (WinXP, 512MBs, etc.) are at a much higher likelihood of running processors old enough to be subject to this problem. And general practices for 32-bit Linux distributions are to provide binaries without specific CPU tuning to avoid problems like this.
Re: Recent MakeMKV releases hit SIGILL on Pentium III
Windows XP crashdump, v1.9.8:
http://www.mediafire.com/download/pe019 ... _winxp.zip
GDB stack trace, Ubuntu 15.10:
The output of 'cat /proc/cpuinfo':
mfence is shown to be used in the gdb dump, and according to this patch sent to qemu in 2011, that instruction is only available with SSE2 and higher:
https://lists.gnu.org/archive/html/qemu ... 00018.html
Also a similar thread on the Debian mailing list for libdispatch:
https://bugs.debian.org/cgi-bin/bugrepo ... bug=660806
http://www.mediafire.com/download/pe019 ... _winxp.zip
GDB stack trace, Ubuntu 15.10:
Code: Select all
[~:$] gdb makemkvcon
GNU gdb (Ubuntu 7.10-1ubuntu2) 7.10
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from makemkvcon...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/bin/makemkvcon
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Program received signal SIGILL, Illegal instruction.
0x08059f85 in ?? ()
(gdb) bt
#0 0x08059f85 in ?? ()
#1 0x0820c35e in ?? ()
#2 0x0820c554 in ?? ()
#3 0x080617b3 in ?? ()
#4 0x080618e7 in ?? ()
#5 0x0804d409 in ?? ()
#6 0xb67a472e in __libc_start_main (main=0x804d3d0, argc=1, argv=0xbffff314,
init=0x808f2f0, fini=0x808f360, rtld_fini=0xb7feb210 <_dl_fini>,
stack_end=0xbffff30c) at libc-start.c:289
#7 0x0804e033 in ?? ()
(gdb) disass $pc-32,$pc+32
Dump of assembler code from 0x8059f65 to 0x8059fa5:
0x08059f65: and %al,%bh
0x08059f67: inc %esp
0x08059f68: and $0x8,%al
0x08059f6a: add %al,(%eax)
0x08059f6c: add %al,(%eax)
0x08059f6e: movl $0x0,0x4(%esp)
0x08059f76: mov %ebx,(%esp)
0x08059f79: call 0x804cb30 <sem_init@plt>
0x08059f7e: movl $0x0,0x10(%ebx)
=> 0x08059f85: mfence
0x08059f88: cmp $0x1,%eax
0x08059f8b: sbb %eax,%eax
0x08059f8d: not %eax
0x08059f8f: add $0x18,%esp
0x08059f92: pop %ebx
0x08059f93: ret
0x08059f94: sub $0x1c,%esp
0x08059f97: mov 0x20(%esp),%eax
0x08059f9b: mov %eax,(%esp)
0x08059f9e: call 0x804c570 <sem_destroy@plt>
0x08059fa3: xor %eax,%eax
End of assembler dump.
(gdb) info all-registers
eax 0x0 0
ecx 0xb6961000 -1231679488
edx 0x854afa4 139767716
ebx 0x854afa4 139767716
esp 0xbffff120 0xbffff120
ebp 0xbffff278 0xbffff278
esi 0x1 1
edi 0xbffff314 -1073745132
eip 0x8059f85 0x8059f85
eflags 0x210256 [ PF AF ZF IF RF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
st0 0 (raw 0x00000000000000000000)
st1 0 (raw 0x00000000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x37f 895
fstat 0x0 0
ftag 0xffff 65535
fiseg 0x73 115
fioff 0xb667b9e8 -1234716184
foseg 0x7b 123
fooff 0xb6784c08 -1233630200
fop 0x598 1432
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}
mxcsr 0x1f80 [ IM DM ZM OM UM PM ]
mm0 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm1 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm2 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm3 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm4 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm5 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm6 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm7 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
(gdb)
Code: Select all
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Celeron (Coppermine)
stepping : 10
microcode : 0x1
cpu MHz : 1000.046
cache size : 128 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 mmx fxsr sse
bugs :
bogomips : 2000.09
clflush size : 32
cache_alignment : 32
address sizes : 36 bits physical, 32 bits virtual
power management:
https://lists.gnu.org/archive/html/qemu ... 00018.html
Also a similar thread on the Debian mailing list for libdispatch:
https://bugs.debian.org/cgi-bin/bugrepo ... bug=660806
-
- Posts: 4075
- Joined: Wed Nov 26, 2008 2:26 am
- Contact:
Re: Recent MakeMKV releases hit SIGILL on Pentium III
It IS a bug. Will be fixed in 1.9.10