I will try and figure out where the segfault is happening and get back to 
you.

My compiler options included the following flag: -fsingle-precision-constant

Turning off this option got rid of all the precision errors. Every test now 
passes prior to the segfault. However I still segfault at the infinity test.

Now I am wondering if it has to do with the fact that I am compiling for 
softfp. Perhaps I need to try doing all floating point in software.

Best,
David

On Tuesday, November 15, 2016 at 4:18:05 PM UTC-6, Adam Cozzette wrote:
>
> Interestingly it kind of looks like your compiler is treating 
> floating-point literals as single-precision floats instead of doubles. 
> Judging from this snippet you posted for example:
>
> Expected: 1.234567890123456789
> Which is: 1.2345678806304932
>
> The first number is the original text from the source file, but the second 
> number is the compiler's interpretation of it and seems to be downgraded to 
> a 32-bit float.
>
> I'm not sure of the exact link between that and the segfault, but I 
> suspect they're related because the failing test (InfinityInputTest) 
> involves setting float and double fields to infinity. If you could figure 
> out which line in that test triggers the segfault that would be useful to 
> know, too.
>
> On Fri, Nov 11, 2016 at 2:53 PM, David Edge <[email protected] 
> <javascript:>> wrote:
>
>> I have been trying to compile protobuf for soft float ARMv7. I am 
>> compiling on board rather than cross compiling, and am failing some unit 
>> tests when I run "make check". Most of the tests seem to be failing due to 
>> rounding error, and the segmentation fault seems to have occurred during an 
>> infinity input test, so I'm thinking I could fix these by using less 
>> aggressive optimization flags and turning off fastmath.
>>
>> Any ideas?
>>
>> I can't seem to attach the whole logfile, as it is over 200MB. I attached 
>> one of the longer failed unit tests and a few more interesting pieces 
>> below. Here is my console output:
>>
>> ./test-driver: line 107:  2847 Segmentation fault      "$@" > $log_file 
>> 2>&1
>> FAIL: protobuf-test
>> PASS: protobuf-lazy-descriptor-test
>> PASS: protobuf-lite-test
>> PASS: google/protobuf/compiler/zip_output_unittest.sh
>> PASS: google/protobuf/io/gzip_stream_unittest.sh
>> PASS: protobuf-lite-arena-test
>> PASS: no-warning-test
>>
>> ============================================================================
>> Testsuite summary for Protocol Buffers 3.1.0
>>
>> ============================================================================
>> # TOTAL: 7
>> # PASS:  6
>> # SKIP:  0
>> # XFAIL: 0
>> # FAIL:  1
>> # XPASS: 0
>> # ERROR: 0
>>
>> ============================================================================
>> See src/test-suite.log
>> Please report to [email protected] <javascript:>
>>
>> ============================================================================
>> Makefile:7407: recipe for target 'test-suite.log' failed
>>
>> And here are some of the failures from the log:
>> ================================================
>>    Protocol Buffers 3.1.0: src/test-suite.log
>> ================================================
>>
>> # TOTAL: 7
>> # PASS:  6
>> # SKIP:  0
>> # XFAIL: 0
>> # FAIL:  1
>> # XPASS: 0
>> # ERROR: 0
>>
>> .. contents:: :depth: 2
>>
>> FAIL: protobuf-test
>> ===================
>>
>> google/protobuf/descriptor_unittest.cc:2312: Failure
>> Value of: message->field(5)->default_value_double()
>>   Actual: 1e+101
>> Expected: 10e100
>> Which is: inf
>> [  FAILED  ] MiscTest.DefaultValues (2 ms)
>>
>> google/protobuf/descriptor_unittest.cc:2786: Failure
>> Value of: options->GetExtension(protobuf_unittest::double_opt)
>>   Actual: 1.2345678901234567
>> Expected: 1.234567890123456789
>> Which is: 1.2345678806304932
>> [  FAILED  ] CustomOptions.OptionTypes (0 ms)
>>
>> [ RUN      ] TimeUtilTest.DurationOperators
>> google/protobuf/util/time_util_test.cc:276: Failure
>> Value of: TimeUtil::ToString(a * 0.5)
>>   Actual: "0s"
>> Expected: "0.999999999s"
>> google/protobuf/util/time_util_test.cc:277: Failure
>> Value of: TimeUtil::ToString(b * 0.5)
>>   Actual: "0s"
>> Expected: "-0.999999999s"
>> [  FAILED  ] TimeUtilTest.DurationOperators (1 ms)
>>
>> [ RUN      ] JsonStreamParserTest.ArrayComplexValues
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: ><[[22, -127, 45.3, -1056.4, 11779497823553162765], {'key': true}]
>> unknown file: Failure
>>
>> Unexpected mock function call - returning default value.
>>     Function call: RenderDouble({}, 45.3)
>>           Returns: NULL
>> Google Mock tried the following 2 expectations, but none matched:
>>
>> ./google/protobuf/util/internal/expecting_objectwriter.h:178: tried 
>> expectation #0: EXPECT_CALL(*mock_, RenderDouble(IsEmpty(), 
>> NanSensitiveDoubleEq(value)))...
>>   Expected arg #1: is approximately 45.299999237060547
>>            Actual: 45.3
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> ./google/protobuf/util/internal/expecting_objectwriter.h:178: tried 
>> expectation #1: EXPECT_CALL(*mock_, RenderDouble(IsEmpty(), 
>> NanSensitiveDoubleEq(value)))...
>>   Expected arg #1: is approximately -1056.4000244140625
>>            Actual: 45.3
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> unknown file: Failure
>>
>> Unexpected mock function call - returning default value.
>>     Function call: RenderDouble({}, -1056.4)
>>           Returns: NULL
>> Google Mock tried the following 2 expectations, but none matched:
>>
>> ./google/protobuf/util/internal/expecting_objectwriter.h:178: tried 
>> expectation #0: EXPECT_CALL(*mock_, RenderDouble(IsEmpty(), 
>> NanSensitiveDoubleEq(value)))...
>>   Expected arg #1: is approximately 45.299999237060547
>>            Actual: -1056.4
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> ./google/protobuf/util/internal/expecting_objectwriter.h:178: tried 
>> expectation #1: EXPECT_CALL(*mock_, RenderDouble(IsEmpty(), 
>> NanSensitiveDoubleEq(value)))...
>>   Expected arg #1: is approximately -1056.4000244140625
>>            Actual: -1056.4
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> unknown file: Failure
>>
>> Unexpected mock function call - returning default value.
>>     Function call: RenderUint64({}, 11779497823553162765)
>>           Returns: NULL
>> Google Mock tried the following 2 expectations, but none matched:
>>
>> ./google/protobuf/util/internal/expecting_objectwriter.h:167: tried 
>> expectation #0: EXPECT_CALL(*mock_, RenderUint64(IsEmpty(), 
>> TypedEq<uint64>(value)))...
>>          Expected: the expectation is active
>>            Actual: it is retired
>>          Expected: to be called once
>>            Actual: called once - saturated and retired
>> ./google/protobuf/util/internal/expecting_objectwriter.h:167: tried 
>> expectation #1: EXPECT_CALL(*mock_, RenderUint64(IsEmpty(), 
>> TypedEq<uint64>(value)))...
>>          Expected: all pre-requisites are satisfied
>>            Actual: the following immediate pre-requisites are not 
>> satisfied:
>> ./google/protobuf/util/internal/expecting_objectwriter.h:178: 
>> pre-requisite #0
>>                    (end of pre-requisites)
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> unknown file: Failure
>>
>> ===
>> Snipped thousands of similar lines here.
>> ====
>>
>> ./google/protobuf/util/internal/expecting_objectwriter.h:95: Failure
>> Actual function call count doesn't match EXPECT_CALL(*mock_, 
>> StartObject(IsEmpty()))...
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> ./google/protobuf/util/internal/expecting_objectwriter.h:96: Failure
>> Actual function call count doesn't match EXPECT_CALL(*mock_, 
>> StartObject(StrEq(name.ToString())))...
>>          Expected: to be called once
>>            Actual: never called - unsatisfied and active
>> [  FAILED  ] JsonStreamParserTest.ObjectValues (88792 ms)
>>
>> [ RUN      ] JsonStreamParserTest.RejectNonUtf8WhenNotCoerced
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: ><{"address":ÿ"חרושת 23, ×¨×¢× × ×”, ×™×©×¨× ×œ"}
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartObject({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: {><"address":ÿ"חרושת 23, ×¨×¢× × ×”, ×™×©×¨× ×œ"}
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartObject({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: {"><address":ÿ"חרושת 23, ×¨×¢× × ×”, ×™×©×¨× ×œ"}
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartObject({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: {"a><ddress":ÿ"חרושת 23, ×¨×¢× × ×”, ×™×©×¨× ×œ"}
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartObject({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: {"ad><dress":ÿ"חרושת 23, ×¨×¢× × ×”, ×™×©×¨× ×œ"}
>>
>> =====
>> snipped similar lines
>> =====
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartList({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:111] Testing 
>> split: ["\ud83d\ud83d"><]
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartList({})
>>           Returns: NULL
>> Stack trace:
>> [libprotobuf INFO 
>> google/protobuf/util/internal/json_stream_parser_test.cc:97] Testing split 
>> every char: ["\ud83d\ud83d"]
>>
>> GMOCK WARNING:
>> Uninteresting mock function call - returning default value.
>>     Function call: StartList({})
>>           Returns: NULL
>> Stack trace:
>> [       OK ] 
>> JsonStreamParserTest.UnicodeEscapingMissingLowSurrogateWhenNotCoerced (7 ms)
>>
>> This seems to be where the segfault occurs:
>>
>> [----------] 45 tests from 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EmptyObject/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EmptyObject/0 (33 
>> ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.SimpleObject/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.SimpleObject/0 (1 
>> ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.SimpleMessage/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.SimpleMessage/0 (4 
>> ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.CustomJsonName/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.CustomJsonName/0 (0 
>> ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.IntEnumValuesAreAccepted/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.IntEnumValuesAreAccepted/0
>>  
>> (1 ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesWithoutUnderscoreAreAccepted/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesWithoutUnderscoreAreAccepted/0
>>  
>> (1 ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesInCamelCaseAreAccepted/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesInCamelCaseAreAccepted/0
>>  
>> (0 ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesInCamelCaseWithNameNotUppercaseAreAccepted/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.EnumValuesInCamelCaseWithNameNotUppercaseAreAccepted/0
>>  
>> (1 ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.PrimitiveFromStringConversion/0
>> [       OK ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.PrimitiveFromStringConversion/0
>>  
>> (1 ms)
>> [ RUN      ] 
>> DifferentTypeInfoSourceTest/ProtoStreamObjectWriterTest.InfinityInputTest/0
>> FAIL protobuf-test (exit status: 139)
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to