Thanks to the help of jca@ and sthen@ I got to a point where the port
builds nicely on amd64 6.1 (I know the ports tree is tracking -current).
The patch is here:
https://github.com/openbsd/ports/compare/master...blackgnezdo:proto3?expand=1
Now some tests are failing.
% make test
...
FAIL: protobuf-test
FAIL: protobuf-lazy-descriptor-test
PASS: protobuf-lite-test
PASS: google/protobuf/compiler/zip_output_unittest.sh
PASS: google/protobuf/io/gzip_stream_unittest.sh
FAIL: protobuf-lite-arena-test
PASS: no-warning-test
gdb traces are below. A couple of failures look like something I would
expect when a multi-threaded program is trying to deallocate a statically
defined string object on exit while it is being accessed from a different
thread.. The AddExpectation one is harder to pinpoint for me.
I'll keep poking this, but would be happy to entertain some hypotheses.
% LD_LIBRARY_PATH=/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs gdb
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-lazy-descriptor-test
(gdb) run
[ PASSED ] 46 tests.
Program received signal SIGBUS, Bus error.
0x00000168a266de2d in ~basic_string (this=Variable "this" is not available.
) at atomicity.h:51
51 atomicity.h: No such file or directory.
in atomicity.h
Current language: auto; currently c++
(gdb) where
where
#0 0x00000168a266de2d in ~basic_string (this=Variable "this" is not
available.
) at atomicity.h:51
#1 0x000001692d573b18 in __tcf_7 ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgmock.so.0.0
#2 0x00000168f0a75627 in *_libc___cxa_finalize (dso=0x0)
at /usr/src/lib/libc/stdlib/atexit.c:159
#3 0x00000168f0a6dc7e in *_libc_exit (status=0) at
/usr/src/lib/libc/stdlib/exit.c:57
#4 0x000001662f202965 in _start ()
from
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-lazy-descriptor-test
#5 0x0000000000000000 in ?? ()
(gdb)
% LD_LIBRARY_PATH=/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs gdb
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-lite-arena-test
...
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (10 ms total)
[ PASSED ] 2 tests.
Program received signal SIGBUS, Bus error.
0x00001eee6b4c0e2d in ~basic_string (this=Variable "this" is not available.
) at atomicity.h:51
51 atomicity.h: No such file or directory.
in atomicity.h
Current language: auto; currently c++
(gdb) where
where
#0 0x00001eee6b4c0e2d in ~basic_string (this=Variable "this" is not
available.
) at atomicity.h:51
#1 0x00001eef270cab18 in __tcf_7 ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgmock.so.0.0
#2 0x00001eeeaa44b627 in *_libc___cxa_finalize (dso=0x0)
at /usr/src/lib/libc/stdlib/atexit.c:159
#3 0x00001eeeaa443c7e in *_libc_exit (status=0) at
/usr/src/lib/libc/stdlib/exit.c:57
#4 0x00001eec67f00fd5 in _start ()
from
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-lite-arena-test
#5 0x0000000000000000 in ?? ()
(gdb)
% LD_LIBRARY_PATH=/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs gdb
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-test
(gdb) run
...
[----------] 70 tests from JsonStreamParserTest
[ RUN ] JsonStreamParserTest.SimpleTrue
Program received signal SIGSEGV, Segmentation fault.
0x0000167fd8be45bb in testing::Sequence::AddExpectation ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgmock.so.0.0
(gdb) where
where
#0 0x0000167fd8be45bb in testing::Sequence::AddExpectation ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgmock.so.0.0
#1 0x0000167d8fe86887 in
testing::internal::MockSpec<google::protobuf::util::converter::ObjectWriter*
()(google::protobuf::StringPiece, bool)>::InternalExpectedAt ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-test
#2 0x0000167d8fe8bb2a in
google::protobuf::util::converter::ExpectingObjectWriter::RenderBool ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-test
#3 0x0000167d8fea74a6 in
google::protobuf::util::converter::JsonStreamParserTest_SimpleTrue_Test::TestBody
()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-test
#4 0x0000167fef61c46b in
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>
() from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#5 0x0000167fef609429 in testing::Test::Run ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#6 0x0000167fef609565 in testing::TestInfo::Run ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#7 0x0000167fef609625 in testing::TestCase::Run ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#8 0x0000167fef60e05c in testing::internal::UnitTestImpl::RunAllTests ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#9 0x0000167fef615c55 in
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool> ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#10 0x0000167fef61bfbc in
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool> ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#11 0x0000167fef606c85 in testing::UnitTest::Run ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgtest.so.1.0
#12 0x0000167ff6694f3e in main ()
from
/usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/libgmock_main.so.0.0
#13 0x0000167d8fa0504e in _start ()
from /usr/ports/pobj/protobuf-3.2.0/build-amd64/src/.libs/protobuf-test
#14 0x0000000000000000 in ?? ()
(gdb)
%