Hi Kenton,
I've crosscompiled the tests and ran them on the target board, here are the results... everything appears to have passed! I'm assuming some of those tests verify the threading (pthreads)? Is there anything else I should run?
-Robroot:~> ./protobuf-lite-test
PASS
And...root:~> ./protobuf-lazy-descriptor-test
Running main() from gtest_main.cc
[==========] Running 34 tests from 3 test cases.
[----------] Global test environment set-up.
[----------] 30 tests from GeneratedMessageTest
[ RUN ] GeneratedMessageTest.Defaults
[ OK ] GeneratedMessageTest.Defaults (1 ms)
[ RUN ] GeneratedMessageTest.FloatingPointDefaults
[ OK ] GeneratedMessageTest.FloatingPointDefaults (0 ms)
[ RUN ] GeneratedMessageTest.Accessors
[ OK ] GeneratedMessageTest.Accessors (1 ms)
[ RUN ] GeneratedMessageTest.MutableStringDefault
[ OK ] GeneratedMessageTest.MutableStringDefault (1 ms)
[ RUN ] GeneratedMessageTest.Clear
[ OK ] GeneratedMessageTest.Clear (0 ms)
[ RUN ] GeneratedMessageTest.EmbeddedNullsInBytesCharStar
[ OK ] GeneratedMessageTest.EmbeddedNullsInBytesCharStar (0 ms)
[ RUN ] GeneratedMessageTest.ClearOneField
[ OK ] GeneratedMessageTest.ClearOneField (1 ms)
[ RUN ] GeneratedMessageTest.StringCharStarLength
[ OK ] GeneratedMessageTest.StringCharStarLength (0 ms)
[ RUN ] GeneratedMessageTest.CopyFrom
[ OK ] GeneratedMessageTest.CopyFrom (1 ms)
[ RUN ] GeneratedMessageTest.SwapWithEmpty
[ OK ] GeneratedMessageTest.SwapWithEmpty (1 ms)
[ RUN ] GeneratedMessageTest.SwapWithSelf
[ OK ] GeneratedMessageTest.SwapWithSelf (1 ms)
[ RUN ] GeneratedMessageTest.SwapWithOther
[ OK ] GeneratedMessageTest.SwapWithOther (1 ms)
[ RUN ] GeneratedMessageTest.CopyConstructor
[ OK ] GeneratedMessageTest.CopyConstructor (1 ms)
[ RUN ] GeneratedMessageTest.CopyAssignmentOperator
[ OK ] GeneratedMessageTest.CopyAssignmentOperator (1 ms)
[ RUN ] GeneratedMessageTest.UpcastCopyFrom
[ OK ] GeneratedMessageTest.UpcastCopyFrom (1 ms)
[ RUN ] GeneratedMessageTest.NonEmptyMergeFrom
[ OK ] GeneratedMessageTest.NonEmptyMergeFrom (1 ms)
[ RUN ] GeneratedMessageTest.MergeFromSelf
[WARNING] src/gtest-death-test.cc:743: Death tests use fork(), which is unsafe .
Abort
And Finally...root:~> ./protobuf-test
Running main() from gtest_main.cc
[==========] Running 684 tests from 94 test cases.
[----------] Global test environment set-up.
[----------] 1 test from GeneratedDescriptorTest
[ RUN ] GeneratedDescriptorTest.IdenticalDescriptors
[ OK ] GeneratedDescriptorTest.IdenticalDescriptors (258 ms)
[----------] 1 test from GeneratedDescriptorTest (258 ms total)
[----------] 34 tests from GeneratedMessageTest
[ RUN ] GeneratedMessageTest.Defaults
[ OK ] GeneratedMessageTest.Defaults (1 ms)
[ RUN ] GeneratedMessageTest.FloatingPointDefaults
[ OK ] GeneratedMessageTest.FloatingPointDefaults (0 ms)
[ RUN ] GeneratedMessageTest.Accessors
[ OK ] GeneratedMessageTest.Accessors (1 ms)
[ RUN ] GeneratedMessageTest.MutableStringDefault
[ OK ] GeneratedMessageTest.MutableStringDefault (0 ms)
[ RUN ] GeneratedMessageTest.Clear
[ OK ] GeneratedMessageTest.Clear (1 ms)
[ RUN ] GeneratedMessageTest.EmbeddedNullsInBytesCharStar
[ OK ] GeneratedMessageTest.EmbeddedNullsInBytesCharStar (0 ms)
[ RUN ] GeneratedMessageTest.ClearOneField
[ OK ] GeneratedMessageTest.ClearOneField (1 ms)
[ RUN ] GeneratedMessageTest.StringCharStarLength
[ OK ] GeneratedMessageTest.StringCharStarLength (0 ms)
[ RUN ] GeneratedMessageTest.CopyFrom
[ OK ] GeneratedMessageTest.CopyFrom (1 ms)
[ RUN ] GeneratedMessageTest.SwapWithEmpty
[ OK ] GeneratedMessageTest.SwapWithEmpty (2 ms)
[ RUN ] GeneratedMessageTest.SwapWithSelf
[ OK ] GeneratedMessageTest.SwapWithSelf (1 ms)
[ RUN ] GeneratedMessageTest.SwapWithOther
[ OK ] GeneratedMessageTest.SwapWithOther (1 ms)
[ RUN ] GeneratedMessageTest.CopyConstructor
[ OK ] GeneratedMessageTest.CopyConstructor (1 ms)
[ RUN ] GeneratedMessageTest.CopyAssignmentOperator
[ OK ] GeneratedMessageTest.CopyAssignmentOperator (1 ms)
[ RUN ] GeneratedMessageTest.UpcastCopyFrom
[ OK ] GeneratedMessageTest.UpcastCopyFrom (0 ms)
[ RUN ] GeneratedMessageTest.DynamicMessageCopyFrom
[ OK ] GeneratedMessageTest.DynamicMessageCopyFrom (2 ms)
[ RUN ] GeneratedMessageTest.NonEmptyMergeFrom
[ OK ] GeneratedMessageTest.NonEmptyMergeFrom (1 ms)
[ RUN ] GeneratedMessageTest.MergeFromSelf
[WARNING] src/gtest-death-test.cc:743: Death tests use fork(), which is unsafe particularly in a threaded context. For thi.
Abort
[----------] Global test environment tear-down
[==========] 677 tests from 94 test cases ran. (30793 ms total)
[ PASSED ] 664 tests.
[ FAILED ] 13 tests, listed below:
[ FAILED ] ParseDecriptorDebugTest.TestAllDescriptorTypes
[ FAILED ] TextFormatTest.PrintExotic
[ FAILED ] TextFormatTest.PrintFloatPrecision
[ FAILED ] TextFormatTest.ParseExotic
[ FAILED ] DynamicMessageTest.Descriptor
[ FAILED ] DynamicMessageTest.OnePrototype
[ FAILED ] DynamicMessageTest.Defaults
[ FAILED ] DynamicMessageTest.IndependentOffsets
[ FAILED ] DynamicMessageTest.Extensions
[ FAILED ] DynamicMessageTest.PackedFields
[ FAILED ] DynamicMessageTest.SpaceUsed
[ FAILED ] MiscTest.DefaultValues
[ FAILED ] DatabaseBackedPoolTest.UnittestProto
[ RUN ] ParseDecriptorDebugTest.TestAllDescriptorTypes
google/protobuf/compiler/parser_unittest.cc:1215: Failure
Value of: error_collector_.text_
Actual: "102:54: Expected integer.
370:64: Expected integer.
[ RUN ] TextFormatTest.PrintExotic
google/protobuf/text_format_unittest.cc:423: Failure
Value of: RemoveRedundantZeros(message.DebugString())
Actual: "repeated_int64: -42949672960
I dunno.If you want to reproduce the problem in context, all you need to do is declare a message like:message Foo {optional sfixed64 foo = 1 [default = -50];}Then use this C++ code:google::protobuf::DescriptorProto proto;Foo::descriptor()->CopyTo(&proto);cout << proto.DebugString() << endl;And you should see the bogus default value in the printed text.
I guess I can't really debug it myself since I don't have access to your platform, so it's up to you.
On Thu, Oct 22, 2009 at 7:22 PM, Rob <r...@rmdashr.com> wrote:
When I execute this code:
Hi Kenton,
I was able to reproduce the problem with the code you provided below. I have also hooked up a remote debugger and stepped through the code.
Apparently the line causing the problem is in FastInt64ToBuffer() as you said before. It's specifically: i = -i (see diff below);
i=-40 before that statement
i=-176093659096 after the statement