SoundTouch 1.6.0 portability issue on x86_64
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Critical
|
RJ Skerry-Ryan |
Bug Description
Hi
This is one of the "typical" reported crash on startup on x64 systems. The 32bit build works fine on the same system.
After a build from sources, this is what i can report...
// rearrange the filter coefficients for mmx routines
for (i = 0; i < newLength; i ++)
{
}
the stack trace:
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!
mixxx.exe!main(int argc, char * * argv) Line 338 C++
So it seems a problem with sountouch (not portaudio as previously assumed), probably a mismatch with datatypes on x64 environment, or packing the data (default aligment issues).
I don't know this code, but i'll try to see if i can find a patch around it.
Changed in mixxx: | |
milestone: | none → 1.12.0 |
importance: | Undecided → Critical |
status: | New → Confirmed |
summary: |
- Crash at startup in Win8.1 x64 (1.12 beta). Not opengl related + SoundTouch 1.6.0 portability issue on x86_64 |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
Well, that was an easy one ;)
(at FIRFilterSSE: :setCoefficient s)
just replace
filterCoeffsAlign = (float *)(((unsigned long)filterCoef fsUnalign + 15) & (ulong)-16);
with this
filterCoeffsAlign = (float *)(((unsigned long long)filterCoef fsUnalign + 15) & (unsigned long long)-16);
and all works fine!
pointer aritmetic kills portability :)