Emulator Issues #4450
closedCrash in SSSE3 Code
0%
Description
SSE3 functions like TexCoord_ReadIndex16_Float2_SSSE3 or Pos_ReadIndex_Float_SSSE3 crash dolphin. When I define _M_SSE as 0x300 the crashes are fixed.
SVN Revision: 7498
OS: Fedora Linux 14 x86_64
CPU: Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz
cat /proc/cpuinfo|grep flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority
Here is a stack trace:
#0 0x00000000007c89ad in TexCoord_ReadIndex16_Float2_SSSE3() ()
#1 0x0000000042a81040 in ?? ()
#2 0x00000000007bca8f in VertexLoader::RunVertices(int, int, int) ()
#3 0x00000000007bdbe5 in VertexLoaderManager::RunVertices(int, int, int) ()
#4 0x0000000000798d1d in Decode() ()
#5 0x00000000007985e3 in InterpretDisplayList(unsigned int, unsigned int) ()
#6 0x0000000000798658 in ExecuteDisplayList(unsigned int, unsigned int) ()
#7 0x0000000000798c43 in Decode() ()
#8 0x0000000000799234 in OpcodeDecoder_Run(bool) ()
#9 0x0000000000794f63 in RunGpuLoop() ()
#10 0x000000000079759f in VideoBackendHardware::Video_EnterLoop() ()
#11 0x00000000005d35aa in Core::EmuThread() ()
#12 0x00000000005d487b in std::thread::Func<void ()()>::Run() ()
#13 0x00000000005d4852 in void std::thread::RunAndDelete<std::thread::Func<void ()()> >(void) ()
#14 0x00007ffff2d1dccb in start_thread (arg=0x7fffe601e700) at pthread_create.c:301
#15 0x00007ffff1e75c2d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
Updated by bloody.albatross over 13 years ago
Bump. The situation on this hasn't changed.
Updated by pholklore1 about 13 years ago
It's a stack/variable alignment problem (gcc isn't aligning __m128i locals on 16-byte boun. I'm attaching the patch I'm using to work around this. There may be a better way, I haven't investigated fully.