Open theoractice opened 1 month ago
My binary if needed (it's statically linked): Simd.zip
Hi! Excuse me for so late answer - I was at vacation. I try to reproduce this bug but this binary works fine on my machine. Would you to get me callstack to bug localization?
Thank you for your kind reply. Actually this binary also works fine on my Win10 x64 system with a modern x64 CPU. It can only fail on a x86 system. I will try to locate a callstack but that would take some time.
Tested with Release/Win32
mode. After upgrading code to the latest commit, the problem still exists.
The callstack:
> Test.exe!Simd::Base::Detect<float,unsigned int>(const Simd::Detection::HidLbpCascade<float,unsigned int> & hid, unsigned int offset, int startStage) line 335 C++
Test.exe!Simd::Sse41::Detect(const Simd::Detection::HidLbpCascade<float,unsigned int> & hid, unsigned int offset, __m128i & result) line 441 C++
Test.exe!Simd::Sse41::DetectionLbpDetect32fp(const Simd::Detection::HidLbpCascade<float,unsigned int> & hid, const Simd::View<Simd::Allocator> & mask, const Simd::Rectangle<int> & rect, Simd::View<Simd::Allocator> & dst) line 471 C++
Test.exe!Simd::Sse41::DetectionLbpDetect32fp(const void * _hid, const unsigned char * mask, unsigned int maskStride, int left, int top, int right, int bottom, unsigned char * dst, unsigned int dstStride) line 498 C++
Test.exe!SimdDetectionLbpDetect32fp(const void * hid, const unsigned char * mask, unsigned int maskStride, int left, int top, int right, int bottom, unsigned char * dst, unsigned int dstStride) line 1897 C++
[Inline Frame] Test.exe!Test::`anonymous-namespace'::FuncD::Call(const void *) line 141 C++
Test.exe!Test::DetectionDetectAutoTest(const void * data, int width, int height, int throughColumn, int int16, const Test::`anonymous-namespace'::FuncD & f1, const Test::`anonymous-namespace'::FuncD & f2) line 200 C++
Test.exe!Test::DetectionDetectAutoTest(const std::string & path, int throughColumn, int int16, const Test::`anonymous-namespace'::FuncD & f1, const Test::`anonymous-namespace'::FuncD & f2) line 232 C++
[Inline Frame] Test.exe!Test::DetectionDetectAutoTest(int) line 245 C++
Test.exe!Test::DetectionLbpDetect32fpAutoTest() line 320 C++
[Inline Frame] Test.exe!Test::Task::RunGroup(const Test::Group &) line 574 C++
Test.exe!Test::Task::Run() line 544 C++
[External Code]
Test.exe!thread_start<unsigned int (__stdcall*)(void *),1>(void * const parameter) line 97 C++
[External Code]
[The following frames may be incorrect and/or missing, no symbols loaded for kernel32.dll]
The exception:
0x01528295: Unhandled exception at 0x01528295 in Test.exe: 0xC000001D: Illegal Instruction.
To my surprise, Test.exe throws the same Illegal Instruction
error for Debug/Win32
mode here:
This seems quite impossible, maybe the bug is specific to this Atom CPU.
If you agree with me then feel free to close this issue now. I still need to test on more machines.
Thank you very much for creating this library.
I am testing Win32 static build, and according to AIDA64 the CPU supports SSE4.1.
Sobel tests passed:
However lbp tests failed: