Errors compiling 0.4 on OpenBSD

For all the help you need with Armagetron!
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors either compiling or running 0.4 on OpenBSD

Post by Monkey »

So, I'm now using much newer GNU compilers (version 4.9.4, 2015) and tools. Note that I'm compiling with the option -std=c++11. There is some good news, some incredible news and some bad news.

Good news: It compiles fine and runs (well, it only partly runs). :)
Incredible news: I can now view the built-in server browser and select a server without it crashing! I have no idea why but I'm happy about that of course. :D
Bad news: It crashes within a few seconds of play, both in online games and local games. :(

Here is a backtrace of a crash:

Code: Select all

(gdb) run
Starting program: /usr/local/bin/armagetronad
[New thread 187610]
[New thread 576840]

Thread 1 received signal SIGABRT, Aborted.
0x00001f3cd1db93ea in thrkill () at <stdin>:2
2       <stdin>: No such file or directory.
(gdb) bt
#0  0x00001f3cd1db93ea in thrkill () at <stdin>:2
#1  0x00001f3cd1db6b29 in *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:52
#2  0x00001f3c7be49b15 in _Unwind_Resume (exc=0x1f3cb4e34a60) at /usr/src/gnu/usr.bin/cc/libgcc/../../../gcc/gcc/unwind.inc:238
#3  0x00001f39e3a0cee1 in eGameObject::Move(tCoord const&, float, float, bool) ()
#4  0x00001f39e3a644bf in eSensor::detect(float) ()
#5  0x00001f39e3933c62 in gCycle::ReadSync(Game::CycleSync const&, nSenderInfo const&) ()
#6  0x00001f39e393f25f in nNetObjectDescriptor<gCycle, Game::CycleSync>::DoReadSync(nNetObject&, nStreamMessage&, bool) const ()
#7  0x00001f39e3ab6adb in net_sync_handler(nStreamMessage&) ()
#8  0x00001f39e3ac95cb in nMessageBase::Handle() ()
#9  0x00001f39e3ac9f09 in rec_peer(unsigned int) ()
#10 0x00001f39e3953199 in sg_Receive() ()
#11 0x00001f39e3958717 in gGame::GameLoop(bool) ()
#12 0x00001f39e39540c9 in GameLoop(bool) ()
#13 0x00001f39e39544a9 in sg_EnterGameCore(nNetState) ()
#14 0x00001f39e39544dd in sg_EnterGame(nNetState) ()
#15 0x00001f39e39568fd in ConnectToServerCore(nServerInfoBase*) ()
#16 0x00001f39e3956c19 in ConnectToServer(nServerInfoBase*) ()
#17 0x00001f39e3b0bcad in uMenu::HandleEvent(SDL_Event) ()
#18 0x00001f39e3b0d0a4 in uMenu::OnEnter() ()
#19 0x00001f39e39aa207 in gServerBrowser::BrowseServers() ()
#20 0x00001f39e39aa8fa in gServerBrowser::BrowseSpecialMaster(nServerInfoBase*, char const*) ()
#21 0x00001f39e3b0bcad in uMenu::HandleEvent(SDL_Event) ()
#22 0x00001f39e3b0d0a4 in uMenu::OnEnter() ()
#23 0x00001f39e395d887 in net_game() ()
#24 0x00001f39e3b0bcad in uMenu::HandleEvent(SDL_Event) ()
#25 0x00001f39e3b0d0a4 in uMenu::OnEnter() ()
#26 0x00001f39e3b0bcad in uMenu::HandleEvent(SDL_Event) ()
#27 0x00001f39e3b0d0a4 in uMenu::OnEnter() ()
#28 0x00001f39e3961746 in MainMenu(bool) ()
#29 0x00001f39e392d7da in main ()
Is it looking like a thread issue again?
Playing since December 2006
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Re: Errors either compiling or running 0.4 on OpenBSD

Post by Lucifer »

Monkey wrote:So, I'm now using much newer GNU compilers (version 4.9.4, 2015) and tools. Note that I'm compiling with the option -std=c++11. There is some good news, some incredible news and some bad news.

Code: Select all

cc1plus: error: unrecognized command line option "-std=c++11"
Try again with two dashes, like "--std=c++11". Note: this makes every single test program fail to compile, and configure isn't figuring out the gcc version.

Code: Select all

/usr/bin/ld: cannot find -lboost_thread
If your config.log output applies to your latest build attempt, I'd suggest fixing the commandline option and installing boost_thread and trying again.

It does not appear that you have gotten past the initial issue, even though there does appear to be progress. I'm going with "same problem, different manifestation".
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

That config.log was from the first attempt, not the most recent attempt.
Lucifer wrote:Try again with two dashes, like "--std=c++11".
Nah, its with just the one dash and even when I don't add it, configure adds it automatically, as Z-Man said, IIRC.
Lucifer wrote:/usr/bin/ld: cannot find -lboost_thread
Great spot Lucifer! :)

For some reason, on OpenBSD, boost (which is packaged altogether as just one package) has not been compiled with libboost_thread. Strangely though, it has been compiled with libboost_thread-mt. So, I made symlinks to the latter, named as the former and configure *did* find them this time (even though it's not a correct solution). So, the solution that I'm trying is to recompile boost with libboost_thread added. I'm hoping that this will fix the crashing issue. Boost is currently compiling, which should take a long time, even on my computer. I'll post again some time in the not so near future. :P
Playing since December 2006
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Z-Man »

Without boost-thread, we have a minimal posix threads fallback. We're just using simple mutexes and locks, after all. And the callstack looks more like an exception issue. Our raycasts are really just game objects sent out into the world, and to avoid work, they throw an exception once they hit the first wall. It's very convenient, but some say you should only use exceptions for truly exceptional events (not only errors), and raycasts hitting something certainly is not exceptional. I'll try to change that code into using plain return values. Of course, we're using exceptions elsewhere, too, so this may just shift the crash from one place to the other. But at least we'll know then.

Edit: Done. I expect crashes when cycles crash in local games and during close dogfights in multiplayer mode.

Still, good that you're trying whether boost fixes things.
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

Z-Man wrote:I expect crashes when cycles crash in local games and during close dogfights in multiplayer mode.
I've just tested your changes and this happens exactly as predicted. So, hopefully, other exceptions can be converted too? That would be appreciated :)

I've altered boost's Makefile to incorporate libboost_thread and it compiles but, strangely, doesn't create the libboost_thread library. Grrr. I will keep fiddling with this but it takes a long time to compile so I'm not going to make quick progress.
Playing since December 2006
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Lucifer »

Code: Select all

0x00001f3cd1db93ea in thrkill () at <stdin>:2
2       <stdin>: No such file or directory.
What's this stuff? Is this a gdb error, and not armagetron?

Code: Select all

#0  0x00001f3cd1db93ea in thrkill () at <stdin>:2
#1  0x00001f3cd1db6b29 in *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:52
#2  0x00001f3c7be49b15 in _Unwind_Resume (exc=0x1f3cb4e34a60) at /usr/src/gnu/usr.bin/cc/libgcc/../../../gcc/gcc/unwind.inc:238
So, here where it says "Unwind_Resume", the parenthetical part where it says (exc=blahblah) is what indicates an exception has been thrown?
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Z-Man »

Lucifer: The error ( No such file or directory.) is gdb, I think, all of the functions are libstdc++. I guessed it was exception handling because of the _Unwind_Resume fuction; the part of exception handling between throwing and catching it is called "Stack Unwinding". Also, I know that an exception is thrown somewhere and couldn't think of any other problematic action.

Monkey: Removing all exception is, sadly, out of the question. At least some included third party code also uses them and I wouldn't know where to begin there. And exceptions are the only sane way to handle network errors that some processing function deep down notices. Something is wrong there with your system. My best guess: your shiny new compiler still links against the stinky old c++ standard library. The exception code the compiler generates could then be incompatible with the handling code in the library.

I can remove the exceptions during gameplay; there are two left, I reckon, both relatively easy to replace. Another one that could be relevant is when you press an instant chat key while already chatting, that one can just use an callback instead.
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

Z-Man wrote:I can remove the exceptions during gameplay; there are two left, I reckon, both relatively easy to replace.
Thankyou.
Z-Man wrote:Something is wrong there with your system. My best guess: your shiny new compiler still links against the stinky old c++ standard library.
OK, I'll look into my system in more detail.
Playing since December 2006
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

Welp, my shiny new compiler now links against my shiny new C++ standard library but that hasn't solved anything. Nevermind, I'll keep at it...
Playing since December 2006
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Z-Man »

Z-Man wrote:I can remove the exceptions during gameplay; there are two left, I reckon, both relatively easy to replace. Another one that could be relevant is when you press an instant chat key while already chatting, that one can just use an callback instead.
Finally got around to that. They're gone. Left are true error handling exceptions. So if a server sends a malformatted message or has an invalid map in its rotation, you're going to crash instead of just disconnecting. And running a server is out of the question.
User avatar
aP|Nelg
Match Winner
Posts: 621
Joined: Wed Oct 22, 2014 10:22 pm
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by aP|Nelg »

Z-Man wrote: you're going to crash instead of just disconnecting. And running a server is out of the question.
That doesn't sound very good.
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Z-Man »

Yeah, but considering we're dealing with a broken compiler here, really the best I can do without jeopardizing security for everyone else. For handling network errors of all kinds on all protocol layers, exceptions simply are the best tool. No alternative makes it so easy to guarantee that handling the faulty input really stops dead and that the error does not go unhandled.
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

So, the good news is that, thanks to Z-Man's recent changes, I now don't crash anywhere near as often as before. Thankyou Z-Man :D
The bad news is that now backspace doesn't work in ingame chat, however, it's a minor inconvenience and I'm guessing it's a fairly easy fix?
Playing since December 2006
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: Errors compiling 0.4 on OpenBSD

Post by Z-Man »

Oh, heh, that's bad fallout from an unrelated fix. You should be able to go back to revision 1615.
Edit: And it should be fixed now.
Monkey
Match Winner
Posts: 759
Joined: Thu May 22, 2008 12:36 am
Location: England, UK

Re: Errors compiling 0.4 on OpenBSD

Post by Monkey »

As of fairly recently, Arma now doesn't compile all of the way:

Code: Select all

...
mv -f tools/.deps/libtools_a-tMemManager.Tpo tools/.deps/libtools_a-tMemManager.Po
rm -f libtools.a
ar cru libtools.a resource/libtools_a-tResourceManager.o tools/libtools_a-tVersion.o tools/libtools_a-tArray.o tools/libtools_a-tCallback.o tools/libtools_a-tColor.o tools/libtools_a-tConfiguration.o tools/libtools_a-tConsole.o tools/libtools_a-tDirectories.o tools/libtools_a-tError.o tools/libtools_a-tEventQueue.o tools/libtools_a-tHeap.o tools/libtools_a-tLinkedList.o tools/libtools_a-tLocale.o tools/libtools_a-tMemStack.o tools/libtools_a-tRing.o tools/libtools_a-tSafePTR.o tools/libtools_a-tString.o tools/libtools_a-tSysTime.o tools/libtools_a-tToDo.o tools/libtools_a-tException.o tools/libtools_a-tRecorder.o tools/libtools_a-tRecorderInternal.o tools/libtools_a-tCommandLine.o tools/libtools_a-tRandom.o tools/libtools_a-tIniFile.o tools/libtools_a-tXmlParser.o thirdparty/binreloc/prefix.o tools/values/libtools_a-vCore.o tools/values/libtools_a-vParser.o tools/values/libtools_a-vRegistry.o tools/values/libtools_a-vCollection.o tools/values/libtools_a-veComparison.o tools/values/libtools_a-veLogic.o tools/values/libtools_a-veMath.o tools/values/libtools_a-vebLegacy.o tools/values/libtools_a-vebMathExpr.o tools/libtools_a-tStatFile.o tools/libtools_a-tStatEntry.o tools/libtools_a-tRectangle.o tools/libtools_a-tPlayList.o tools/libtools_a-tDecorator.o tools/libtools_a-tMutex.o tools/libtools_a-tCoord.o tools/libtools_a-tFunction.o tools/libtools_a-tPolynomial.o tools/libtools_a-tPolynomialMarshaler.o tools/libtools_a-tPolynomialWithBase.o tools/libtools_a-tRuby.o tools/libtools_a-md5.o tools/libtools_a-tCrypto.o resource/libtools_a-tResource.o resource/libtools_a-tResourceType.o tools/libtools_a-tMemManager.o 
ranlib libtools.a
/usr/local/bin/eg++   -I./tools -I./resource -I./thirdparty/mathexpr -I./thirdparty/utf8 -I./protobuf -Iprotobuf  -I./render -I./ui -I./thirdparty/shttpd -I./thirdparty/scrap     -I./network -I./engine -I./engine/sound -I./thirdparty/particles -I./tron -I./tron/cockpit -O2 -std=c++11 -I/usr/X11R6/include  -L/usr/local/lib -L/usr/local/lib/gcc/ -o armagetronad_main tron/armagetronad_main-gFloor.o tron/cockpit/armagetronad_main-cCockpit.o tron/cockpit/armagetronad_main-cMap.o tron/cockpit/armagetronad_main-cCamview.o tron/zone/armagetronad_main-zFortress.o libtron.a libenginecore.a libengine.a libnetwork.a libui.a librender.a libtools.a protobuf/libprotobuf.a thirdparty/mathexpr/libmathexpr.a thirdparty/particles/libparticles.a thirdparty/scrap/libscrap.a -lSDL2_image -lGLEW -lGLU -lGL -lX11 -L/usr/X11R6/lib -lSDL2_mixer -L/usr/local/lib -lSDL2 -L/usr/X11R6/lib -lm -lprotobuf  -lboost_system -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -llzma -L/usr/local/lib -liconv -lm  -L/usr/X11R6/lib -R/usr/X11R6/lib  -lpng -L/usr/local/lib -lftgl -L/usr/X11R6/lib -lfreetype -lz
libengine.a(libengine_a-ePlayer.o): In function `ePlayerNetID::ScrambleTeams()':
ePlayer.cpp:(.text+0x1da99): warning: warning: rand() may return deterministic values, is that what you want?
/usr/X11R6/lib/libGL.so.17.1: warning: warning: random() may return deterministic values, is that what you want?
/usr/X11R6/lib/libX11.so.16.1: warning: warning: strcat() is almost always misused, please use strlcat()
libtools.a(libtools_a-tIniFile.o): In function `tIniFile::LoadFile(char const*)':
tIniFile.cpp:(.text+0x1149): warning: warning: sprintf() is often misused, please use snprintf()
/usr/X11R6/lib/libGLU.so.9.0: warning: warning: strcpy() is almost always misused, please use strlcpy()
/usr/local/lib/libsmpeg2.so.2.0: warning: warning: vsprintf() is often misused, please use vsnprintf()
libnetwork.a(libnetwork_a-nProtoBuf.o): In function `nProtoBufMessageBase::OnWrite(nMessageBase::WriteArguments&) const':
nProtoBuf.cpp:(.text+0x58a2): undefined reference to `google::protobuf::Message::SerializeToOstream(std::ostream*) const'
protobuf/libprotobuf.a(libprotobuf_a-tColor.pb.o): In function `Tools::protobuf_AddDesc_tColor_2eproto()':
tColor.pb.cc:(.text+0x1333): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-tColor.pb.o): In function `Tools::protobuf_AssignDesc_tColor_2eproto()':
tColor.pb.cc:(.text+0x1497): undefined reference to `google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
protobuf/libprotobuf.a(libprotobuf_a-tCoord.pb.o): In function `Tools::protobuf_AddDesc_tCoord_2eproto()':
tCoord.pb.cc:(.text+0xf83): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-tCoord.pb.o): In function `Tools::protobuf_AssignDesc_tCoord_2eproto()':
tCoord.pb.cc:(.text+0x10e7): undefined reference to `google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
protobuf/libprotobuf.a(libprotobuf_a-tFunction.pb.o): In function `Tools::protobuf_AddDesc_tFunction_2eproto()':
tFunction.pb.cc:(.text+0x773): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-tFunction.pb.o): In function `Tools::protobuf_AssignDesc_tFunction_2eproto()':
tFunction.pb.cc:(.text+0x852): undefined reference to `google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
protobuf/libprotobuf.a(libprotobuf_a-tPolynomial.pb.o): In function `Tools::protobuf_AddDesc_tPolynomial_2eproto()':
tPolynomial.pb.cc:(.text+0xad3): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-tPolynomial.pb.o): In function `Tools::protobuf_AssignDesc_tPolynomial_2eproto()':
tPolynomial.pb.cc:(.text+0xc37): undefined reference to `google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o): In function `Network::PasswordRequest::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
nAuthentication.pb.cc:(.text+0x8b1): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
nAuthentication.pb.cc:(.text+0x8e1): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
nAuthentication.pb.cc:(.text+0x911): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
nAuthentication.pb.cc:(.text+0x961): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
nAuthentication.pb.cc:(.text+0x991): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o):nAuthentication.pb.cc:(.text+0xa71): more undefined references to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)' follow
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o): In function `Network::PasswordAnswer::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nAuthentication.pb.cc:(.text+0x2045): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
nAuthentication.pb.cc:(.text+0x2167): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o): In function `Network::PasswordRequest::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nAuthentication.pb.cc:(.text+0x25fc): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
nAuthentication.pb.cc:(.text+0x266a): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
nAuthentication.pb.cc:(.text+0x2716): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o):nAuthentication.pb.cc:(.text+0x2763): more undefined references to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)' follow
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o): In function `Network::protobuf_AddDesc_nAuthentication_2eproto()':
nAuthentication.pb.cc:(.text+0x3943): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-nAuthentication.pb.o): In function `Network::protobuf_AssignDesc_nAuthentication_2eproto()':
nAuthentication.pb.cc:(.text+0x3c97): undefined reference to `google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::Connection::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
nNetwork.pb.cc:(.text+0x13c1): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::LoginDenied::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
nNetwork.pb.cc:(.text+0x1491): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::LoginAccepted::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
nNetwork.pb.cc:(.text+0x15b1): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::Login::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
nNetwork.pb.cc:(.text+0x1721): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
nNetwork.pb.cc:(.text+0x1751): undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o):nNetwork.pb.cc:(.text+0x1841): more undefined references to `google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)' follow
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::ConsoleMessage::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nNetwork.pb.cc:(.text+0x2b7a): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::CenterMessage::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nNetwork.pb.cc:(.text+0x2d6a): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::Connection::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nNetwork.pb.cc:(.text+0x33a9): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::LoginDenied::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
nNetwork.pb.cc:(.text+0x4df4): undefined reference to `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::protobuf_AddDesc_nNetwork_2eproto()':
nNetwork.pb.cc:(.text+0x7bf8): undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
protobuf/libprotobuf.a(libprotobuf_a-nNetwork.pb.o): In function `Network::protobuf_AssignDesc_nNetwork_2eproto()':
...
Note that I haven't knowingly made any changes to protobuf/libprotobuf and Arma did work up until fairly recently. Here is the state of protobuf/libprotobuf on my system:

Code: Select all

$ locate protobuf
/usr/local/include/google/protobuf
/usr/local/include/google/protobuf-c
/usr/local/include/google/protobuf-c/protobuf-c.h
/usr/local/include/google/protobuf/compiler
/usr/local/include/google/protobuf/compiler/code_generator.h
/usr/local/include/google/protobuf/compiler/command_line_interface.h
/usr/local/include/google/protobuf/compiler/cpp
/usr/local/include/google/protobuf/compiler/cpp/cpp_generator.h
/usr/local/include/google/protobuf/compiler/importer.h
/usr/local/include/google/protobuf/compiler/java
/usr/local/include/google/protobuf/compiler/java/java_generator.h
/usr/local/include/google/protobuf/compiler/parser.h
/usr/local/include/google/protobuf/compiler/plugin.h
/usr/local/include/google/protobuf/compiler/plugin.pb.h
/usr/local/include/google/protobuf/compiler/plugin.proto
/usr/local/include/google/protobuf/compiler/python
/usr/local/include/google/protobuf/compiler/python/python_generator.h
/usr/local/include/google/protobuf/descriptor.h
/usr/local/include/google/protobuf/descriptor.pb.h
/usr/local/include/google/protobuf/descriptor.proto
/usr/local/include/google/protobuf/descriptor_database.h
/usr/local/include/google/protobuf/dynamic_message.h
/usr/local/include/google/protobuf/extension_set.h
/usr/local/include/google/protobuf/generated_message_reflection.h
/usr/local/include/google/protobuf/generated_message_util.h
/usr/local/include/google/protobuf/io
/usr/local/include/google/protobuf/io/coded_stream.h
/usr/local/include/google/protobuf/io/gzip_stream.h
/usr/local/include/google/protobuf/io/printer.h
/usr/local/include/google/protobuf/io/tokenizer.h
/usr/local/include/google/protobuf/io/zero_copy_stream.h
/usr/local/include/google/protobuf/io/zero_copy_stream_impl.h
/usr/local/include/google/protobuf/io/zero_copy_stream_impl_lite.h
/usr/local/include/google/protobuf/message.h
/usr/local/include/google/protobuf/message_lite.h
/usr/local/include/google/protobuf/reflection_ops.h
/usr/local/include/google/protobuf/repeated_field.h
/usr/local/include/google/protobuf/service.h
/usr/local/include/google/protobuf/stubs
/usr/local/include/google/protobuf/stubs/common.h
/usr/local/include/google/protobuf/stubs/once.h
/usr/local/include/google/protobuf/text_format.h
/usr/local/include/google/protobuf/unknown_field_set.h
/usr/local/include/google/protobuf/wire_format.h
/usr/local/include/google/protobuf/wire_format_lite.h
/usr/local/include/google/protobuf/wire_format_lite_inl.h
/usr/local/include/protobuf-c
/usr/local/include/protobuf-c/protobuf-c.h
/usr/local/lib/libprotobuf-c.a
/usr/local/lib/libprotobuf-c.la
/usr/local/lib/libprotobuf-c.so.1.0
/usr/local/lib/libprotobuf-lite.a
/usr/local/lib/libprotobuf-lite.la
/usr/local/lib/libprotobuf-lite.so.1.0
/usr/local/lib/libprotobuf.a
/usr/local/lib/libprotobuf.la
/usr/local/lib/libprotobuf.so.1.0
/usr/local/lib/pkgconfig/libprotobuf-c.pc
/usr/local/lib/pkgconfig/protobuf-lite.pc
/usr/local/lib/pkgconfig/protobuf.pc
/usr/local/share/yelp-xsl/js/jquery.syntax.brush.protobuf.js
/var/db/pkg/protobuf-2.4.1p6
/var/db/pkg/protobuf-2.4.1p6/+CONTENTS
/var/db/pkg/protobuf-2.4.1p6/+DESC
/var/db/pkg/protobuf-2.4.1p6/+REQUIRED_BY
/var/db/pkg/protobuf-c-1.0.2p0
/var/db/pkg/protobuf-c-1.0.2p0/+CONTENTS
/var/db/pkg/protobuf-c-1.0.2p0/+DESC
/var/db/pkg/protobuf-c-1.0.2p0/+REQUIRING
Any help would be appreciated :)
Playing since December 2006
Post Reply