Details
Description
Hi,
I'm building mongodb on ppc64le platform and I see error fails related to ByteVector altivec.
$ build/fedora/mongo/db/fts/fts_unicode_phrase_matcher_test; build/fedora/mongo/db/fts/unicode/byte_vector_test; build/fedora/mongo/db/fts/unicode/string_test
|
2018-02-20T14:16:24.384+0100 I - [main] going to run suite: FtsUnicodePhraseMatcher
|
2018-02-20T14:16:24.384+0100 I - [main] going to run test: CaseAndDiacriticInsensitive
|
2018-02-20T14:16:24.384+0100 E - [main] Throwing exception: Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:48
|
2018-02-20T14:16:24.385+0100 I - [main] FAIL: CaseAndDiacriticInsensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:48
|
2018-02-20T14:16:24.385+0100 I - [main] going to run test: CaseSensitiveAndDiacriticInsensitive
|
2018-02-20T14:16:24.385+0100 E - [main] Throwing exception: Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:68
|
2018-02-20T14:16:24.385+0100 I - [main] FAIL: CaseSensitiveAndDiacriticInsensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:68
|
2018-02-20T14:16:24.385+0100 I - [main] going to run test: CaseInsensitiveAndDiacriticSensitive
|
2018-02-20T14:16:24.385+0100 E - [main] Throwing exception: Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:88
|
2018-02-20T14:16:24.385+0100 I - [main] FAIL: CaseInsensitiveAndDiacriticSensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:88
|
2018-02-20T14:16:24.385+0100 I - [main] going to run test: CaseAndDiacriticSensitive
|
2018-02-20T14:16:24.385+0100 I - [main] going to run test: CaseAndDiacriticInsensitiveTurkish
|
2018-02-20T14:16:24.385+0100 E - [main] Throwing exception: Expected: phraseMatcher.phraseMatches(find2, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:129
|
2018-02-20T14:16:24.385+0100 I - [main] FAIL: CaseAndDiacriticInsensitiveTurkish Expected: phraseMatcher.phraseMatches(find2, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:129
|
2018-02-20T14:16:24.385+0100 I - [main] DONE running tests
|
2018-02-20T14:16:24.385+0100 I - [main] **************************************************
|
2018-02-20T14:16:24.385+0100 I - [main] FtsUnicodePhraseMatcher | tests: 5 | fails: 4 | assert calls: 0 | time secs: 0.000
|
CaseAndDiacriticInsensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:48
|
CaseSensitiveAndDiacriticInsensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:68
|
CaseInsensitiveAndDiacriticSensitive Expected: phraseMatcher.phraseMatches(find1, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:88
|
CaseAndDiacriticInsensitiveTurkish Expected: phraseMatcher.phraseMatches(find2, str, options) @src/mongo/db/fts/fts_unicode_phrase_matcher_test.cpp:129
|
2018-02-20T14:16:24.385+0100 I - [main] TOTALS | tests: 5 | fails: 4 | assert calls: 0 | time secs: 0.000
|
2018-02-20T14:16:24.385+0100 I - [main] Failing tests:
|
2018-02-20T14:16:24.385+0100 I - [main] FtsUnicodePhraseMatcher/CaseAndDiacriticInsensitive Failed
|
2018-02-20T14:16:24.385+0100 I - [main] FtsUnicodePhraseMatcher/CaseSensitiveAndDiacriticInsensitive Failed
|
2018-02-20T14:16:24.385+0100 I - [main] FtsUnicodePhraseMatcher/CaseInsensitiveAndDiacriticSensitive Failed
|
2018-02-20T14:16:24.385+0100 I - [main] FtsUnicodePhraseMatcher/CaseAndDiacriticInsensitiveTurkish Failed
|
2018-02-20T14:16:24.385+0100 I - [main] FAILURE - 4 tests in 1 suites failed
|
2018-02-20T14:16:24.394+0100 I - [main] going to run suite: ByteVector
|
2018-02-20T14:16:24.394+0100 I - [main] going to run test: LoadStoreUnaligned
|
2018-02-20T14:16:24.394+0100 I - [main] going to run test: Splat
|
2018-02-20T14:16:24.394+0100 I - [main] going to run test: MaskAny
|
2018-02-20T14:16:24.394+0100 E - [main] Throwing exception: Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:70
|
2018-02-20T14:16:24.394+0100 I - [main] FAIL: MaskAny Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:70
|
2018-02-20T14:16:24.394+0100 I - [main] going to run test: MaskHigh
|
2018-02-20T14:16:24.394+0100 E - [main] Throwing exception: Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:82
|
2018-02-20T14:16:24.395+0100 I - [main] FAIL: MaskHigh Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:82
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: CompareEQ
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: CompareGT
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: CompareLT
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: BitOr
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: BitOrAssign
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: BitAnd
|
2018-02-20T14:16:24.395+0100 I - [main] going to run test: BitAndAssign
|
2018-02-20T14:16:24.395+0100 I - [main] DONE running tests
|
2018-02-20T14:16:24.395+0100 I - [main] **************************************************
|
2018-02-20T14:16:24.395+0100 I - [main] ByteVector | tests: 11 | fails: 2 | assert calls: 0 | time secs: 0.000
|
MaskAny Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:70
|
MaskHigh Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:82
|
2018-02-20T14:16:24.395+0100 I - [main] TOTALS | tests: 11 | fails: 2 | assert calls: 0 | time secs: 0.000
|
2018-02-20T14:16:24.395+0100 I - [main] Failing tests:
|
2018-02-20T14:16:24.395+0100 I - [main] ByteVector/MaskAny Failed
|
2018-02-20T14:16:24.395+0100 I - [main] ByteVector/MaskHigh Failed
|
2018-02-20T14:16:24.395+0100 I - [main] FAILURE - 2 tests in 1 suites failed
|
2018-02-20T14:16:24.403+0100 I - [main] going to run suite: UnicodeString
|
2018-02-20T14:16:24.403+0100 I - [main] going to run test: SubstrTest
|
2018-02-20T14:16:24.403+0100 I - [main] going to run test: RemoveDiacritics
|
2018-02-20T14:16:24.404+0100 E - [main] Throwing exception: Expected output + filler == String::caseFoldAndStripDiacritics(&buf, input + filler, kCaseSensitive, kNormal) (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == ^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) @src/mongo/db/fts/unicode/string_test.cpp:88
|
2018-02-20T14:16:24.404+0100 I - [main] FAIL: RemoveDiacritics Expected output + filler == String::caseFoldAndStripDiacritics(&buf, input + filler, kCaseSensitive, kNormal) (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == ^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) @src/mongo/db/fts/unicode/string_test.cpp:88
|
2018-02-20T14:16:24.404+0100 I - [main] going to run test: CaseFolding
|
2018-02-20T14:16:24.405+0100 I - [main] FAIL: CaseFolding std::exception: text contains invalid UTF-8 in test CaseFolding
|
2018-02-20T14:16:24.406+0100 I - [main] going to run test: CaseFoldingTurkish
|
2018-02-20T14:16:24.406+0100 E - [main] Throwing exception: Expected "kac yasındasınız" == String::caseFoldAndStripDiacritics(&buf, test1, kDiacriticSensitive, kTurkish) (kac yasındasınız == kac yasindasiniz) @src/mongo/db/fts/unicode/string_test.cpp:138
|
2018-02-20T14:16:24.406+0100 I - [main] FAIL: CaseFoldingTurkish Expected "kac yasındasınız" == String::caseFoldAndStripDiacritics(&buf, test1, kDiacriticSensitive, kTurkish) (kac yasındasınız == kac yasindasiniz) @src/mongo/db/fts/unicode/string_test.cpp:138
|
2018-02-20T14:16:24.406+0100 I - [main] going to run test: CaseFoldingAndRemoveDiacritics
|
2018-02-20T14:16:24.407+0100 E - [main] Throwing exception: Expected "ποσο χρονων εισαι?" == String::caseFoldAndStripDiacritics(&buf, test1, 0, kNormal) (ποσο χρονων εισαι? == Πόσο χρονών είσαι?) @src/mongo/db/fts/unicode/string_test.cpp:151
|
2018-02-20T14:16:24.407+0100 I - [main] FAIL: CaseFoldingAndRemoveDiacritics Expected "ποσο χρονων εισαι?" == String::caseFoldAndStripDiacritics(&buf, test1, 0, kNormal) (ποσο χρονων εισαι? == Πόσο χρονών είσαι?) @src/mongo/db/fts/unicode/string_test.cpp:151
|
2018-02-20T14:16:24.407+0100 I - [main] going to run test: SubstringMatch
|
2018-02-20T14:16:24.407+0100 I - [main] FAIL: SubstringMatch std::exception: text contains invalid UTF-8 in test SubstringMatch
|
2018-02-20T14:16:24.407+0100 I - [main] going to run test: SubstringMatchTurkish
|
2018-02-20T14:16:24.407+0100 E - [main] Throwing exception: Expected: String::substrMatch(str, "yasındasınız", String::kNone, CaseFoldMode::kTurkish) @src/mongo/db/fts/unicode/string_test.cpp:182
|
2018-02-20T14:16:24.407+0100 I - [main] FAIL: SubstringMatchTurkish Expected: String::substrMatch(str, "yasındasınız", String::kNone, CaseFoldMode::kTurkish) @src/mongo/db/fts/unicode/string_test.cpp:182
|
2018-02-20T14:16:24.408+0100 I - [main] going to run test: BadUTF8
|
2018-02-20T14:16:24.408+0100 I - [main] going to run test: UTF32ToUTF8
|
2018-02-20T14:16:24.408+0100 I - [main] DONE running tests
|
2018-02-20T14:16:24.408+0100 I - [main] **************************************************
|
2018-02-20T14:16:24.408+0100 I - [main] UnicodeString | tests: 9 | fails: 6 | assert calls: 0 | time secs: 0.005
|
RemoveDiacritics Expected output + filler == String::caseFoldAndStripDiacritics(&buf, input + filler, kCaseSensitive, kNormal) (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == ^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) @src/mongo/db/fts/unicode/string_test.cpp:88
|
CaseFolding std::exception: text contains invalid UTF-8 in test CaseFolding
|
CaseFoldingTurkish Expected "kac yasındasınız" == String::caseFoldAndStripDiacritics(&buf, test1, kDiacriticSensitive, kTurkish) (kac yasındasınız == kac yasindasiniz) @src/mongo/db/fts/unicode/string_test.cpp:138
|
CaseFoldingAndRemoveDiacritics Expected "ποσο χρονων εισαι?" == String::caseFoldAndStripDiacritics(&buf, test1, 0, kNormal) (ποσο χρονων εισαι? == Πόσο χρονών είσαι?) @src/mongo/db/fts/unicode/string_test.cpp:151
|
SubstringMatch std::exception: text contains invalid UTF-8 in test SubstringMatch
|
SubstringMatchTurkish Expected: String::substrMatch(str, "yasındasınız", String::kNone, CaseFoldMode::kTurkish) @src/mongo/db/fts/unicode/string_test.cpp:182
|
2018-02-20T14:16:24.409+0100 I - [main] TOTALS | tests: 9 | fails: 6 | assert calls: 0 | time secs: 0.005
|
2018-02-20T14:16:24.409+0100 I - [main] Failing tests:
|
2018-02-20T14:16:24.409+0100 I - [main] UnicodeString/RemoveDiacritics Failed
|
2018-02-20T14:16:24.409+0100 I - [main] UnicodeString/CaseFolding Failed
|
2018-02-20T14:16:24.410+0100 I - [main] UnicodeString/CaseFoldingTurkish Failed
|
2018-02-20T14:16:24.410+0100 I - [main] UnicodeString/CaseFoldingAndRemoveDiacritics Failed
|
2018-02-20T14:16:24.410+0100 I - [main] UnicodeString/SubstringMatch Failed
|
2018-02-20T14:16:24.410+0100 I - [main] UnicodeString/SubstringMatchTurkish Failed
|
2018-02-20T14:16:24.410+0100 I - [main] FAILURE - 6 tests in 1 suites failed
|
When I disable/remove altivec include in src/mongo/db/fts/unicode/byte_vector.h everything works.
When I debuged byte_vector_test and error {{FAIL: MaskAny Expected ByteVector::countInitialZeros(mask) == offset (16 == 0) @src/mongo/db/fts/unicode/byte_vector_test.cpp:70}} I figured out that vec_extract(vec_vbpermq(_data, bits), 0) in ByteVector::maskHight() returns 0.
I don't know if this is mongodb problem or problem in compiler,... Do you have any idea how to easily test it? (I don't know ppc64 altivec instructions well) What could be the minimal reproducer in case of compiler problem?