Jump to content

Weber K.

Community Members
  • Posts

    15
  • Joined

  • Last visited

Posts posted by Weber K.

  1. 15 hours ago, Imarok said:

    How did you fix the gloox issue?

    I've created a new chroot jail sandbox for compiling and in this new sandbox I've upgraded a lot of packages. After compiling in this new sandbox, lobby was not crashing.

    This way, I don't know if only upgrading gloox to 1.0.22 and recompiling is enough for solving TLS problem or not. But I've provided all packages of my test environment, as reference.

  2. Hello all!

    Thank you very much! You are awesome!

    Good news!

    Fix released:
    https://code.wildfiregames.com/D1852

    I applied with:
    patch -p0 < D1852.diff

    And I can connect to lobby! No crash!

    Here are my packages: (Maybe the patch and this list could be included in https://trac.wildfiregames.com/wiki/BuildInstructions#Slackware )

    boost-1.59.0-x86_64-1
    icu4c-56.1-x86_64-2
    libogg-1.3.2-x86_64-1

    cmake-3.5.2-x86_64-1.txz
    curl-7.64.0-x86_64-2_slack14.2.txz
    enet-1.3.12-x86_64-1_slonly.txz
    gcc-5.5.0-x86_64-1_slack14.2.txz
    gcc-g++-5.5.0-x86_64-1_slack14.2.txz
    guile-2.0.11-x86_64-2.txz
    libXcursor-1.1.15-x86_64-1_slack14.2.txz
    libpng-1.6.27-x86_64-1_slack14.2.txz
    libsodium-1.0.16-x86_64-1_slonly.txz
    libvorbis-1.3.6-x86_64-1_slack14.2.txz
    libxml2-2.9.5-x86_64-1_slack14.2.txz
    make-4.1-x86_64-2.txz
    mozilla-nss-3.40.1-x86_64-1_slack14.2.txz
    pkg-config-0.29.2-x86_64-1_slack14.2.txz
    premake-4.4_beta5-x86_64-1_slonly.txz
    zlib-1.2.11-x86_64-1_slack14.2.txz
    OpenAL-1.18.1-x86_64-1alien.txz
    libzip-1.0.1-x86_64-3_slack14.2.txz
    sdl2-2.0.3-x86_64-1jsc.txz
    miniupnpc-2.0-x86_64-1_slonly.txz
    wxGTK3-3.0.4-x86_64-2ponce.txz
    flex-2.6.0-x86_64-1.txz
    libSM-1.2.2-x86_64-2.txz
    binutils-2.26-x86_64-3.txz
    gloox-1.0.22-x86_64-1_SBo.tgz
    perl-5.22.2-x86_64-1.txz
    python-2.7.16-x86_64-1_slack14.2.txz
    python-setuptools-22.0.5-x86_64-1.txz
    pip-9.0.3-x86_64-1_slonly.txz
    sed-4.2.2-x86_64-1.txz
    kernel-headers-4.4.157-x86-1.txz
    OpenGL (mesa 11.2.2)

    2.9.0 git (not used, downloaded tarball)
     

    • Like 1
  3. This backtrace is when it  crashes right after clicking login. The other backtrace I can see the lobby, then it crashes.

    Thread 1 (Thread 0x7ffff7f87b80 (LWP 24753)):
    #0  0x00007ffff490b72e in gloox::Tag::xmlns(std::string const&) const () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #1  0x00007ffff490c33d in gloox::Tag::xmlns() const () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #2  0x0000000000a916f7 in glooxwrapper::Tag::xmlns (this=this@entry=0x3ade4c0) at ../../../source/lobby/glooxwrapper/glooxwrapper.cpp:735
    No locals.
    #3  0x0000000000a8bc3c in GameListQuery::GameListQuery (this=0x5331bb0, tag=0x3ade4c0) at ../../../source/lobby/StanzaExtensions.cpp:129
            c = <optimized out>
    #4  0x0000000000a8c985 in GameListQuery::newInstance (this=<optimized out>, tag=0x3ade4c0) at ../../../source/lobby/StanzaExtensions.h:67
    No locals.
    #5  0x0000000000a95e17 in glooxwrapper::StanzaExtensionWrapper::newInstance (this=0x4381510, tag=0x25c4050)
        at ../../../source/lobby/glooxwrapper/glooxwrapper.cpp:257
            tagWrapper = 0x3ade4c0
            ret = <optimized out>
    #6  0x00007ffff496c4be in gloox::StanzaExtensionFactory::addExtensions(gloox::Stanza&, gloox::Tag*) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #7  0x00007ffff49064b6 in gloox::ClientBase::handleTag(gloox::Tag*) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #8  0x00007ffff48faa72 in gloox::Parser::closeTag() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #9  0x00007ffff48fbcb8 in gloox::Parser::feed(std::string&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #10 0x00007ffff4900aad in gloox::ClientBase::parse(std::string const&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #11 0x00007ffff49726de in gloox::GnuTLSBase::decrypt(std::string const&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #12 0x00007ffff48fcb7e in gloox::ConnectionTCPClient::recv(int) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #13 0x000000000043d4ee in Frame () at ../../../source/main.cpp:403
            profile2__ = {m_Name = 0xb2aaf8 "frame"}
            time = <optimized out>
            realTimeSinceLastFrame = 0.0330168754
            __func__ = "Frame"
            need_update = false

     

  4. I've double checked. This error occur if user is not registered.

    I can register with gloox 1.0.22. Then I can enter lobby.

    Right after, I am still getting segmentation fault. But now is a different one:

    Thread 1 (Thread 0x7ffff7f87b80 (LWP 23818)):
    #0  0x00007ffff490b7a0 in gloox::Tag::xmlns(std::string const&) const () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #1  0x00007ffff490c33d in gloox::Tag::xmlns() const () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #2  0x0000000000a916f7 in glooxwrapper::Tag::xmlns (this=this@entry=0x27a2a90) at ../../../source/lobby/glooxwrapper/glooxwrapper.cpp:735
    No locals.
    #3  0x0000000000a8bc3c in GameListQuery::GameListQuery (this=0x27a23f0, tag=0x27a2a90) at ../../../source/lobby/StanzaExtensions.cpp:129
            c = <optimized out>
    #4  0x0000000000a8c985 in GameListQuery::newInstance (this=<optimized out>, tag=0x27a2a90) at ../../../source/lobby/StanzaExtensions.h:67
    No locals.
    #5  0x0000000000a95e17 in glooxwrapper::StanzaExtensionWrapper::newInstance (this=0x4329150, tag=0x408c7a0)
        at ../../../source/lobby/glooxwrapper/glooxwrapper.cpp:257
            tagWrapper = 0x27a2a90
            ret = <optimized out>
    #6  0x00007ffff496c4be in gloox::StanzaExtensionFactory::addExtensions(gloox::Stanza&, gloox::Tag*) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #7  0x00007ffff49064b6 in gloox::ClientBase::handleTag(gloox::Tag*) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #8  0x00007ffff48faa72 in gloox::Parser::closeTag() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #9  0x00007ffff48fbcb8 in gloox::Parser::feed(std::string&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #10 0x00007ffff4900aad in gloox::ClientBase::parse(std::string const&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #11 0x00007ffff49726de in gloox::GnuTLSBase::decrypt(std::string const&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #12 0x00007ffff48fcb7e in gloox::ConnectionTCPClient::recv(int) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #13 0x000000000043d4ee in Frame () at ../../../source/main.cpp:403
            profile2__ = {m_Name = 0xb2aaf8 "frame"}
            time = <optimized out>
            realTimeSinceLastFrame = 0.033053346
            __func__ = "Frame"
            need_update = false

     

  5. An wise advice! I was doing that right now! But I only upgrade gloox, as I've deleted my sandbox already.

    Now the error is invalid pointer, in gdb signal is SIGABRT.

    Thread 1 (Thread 0x7ffff7f87b80 (LWP 23198)):
    #0  0x00007ffff34443f8 in raise () from /lib64/libc.so.6
    No symbol table info available.
    #1  0x00007ffff3445ffa in abort () from /lib64/libc.so.6
    No symbol table info available.
    #2  0x00007ffff34866f9 in __libc_message () from /lib64/libc.so.6
    No symbol table info available.
    #3  0x00007ffff348ef4a in _int_free () from /lib64/libc.so.6
    No symbol table info available.
    #4  0x00007ffff3492c1c in free () from /lib64/libc.so.6
    No symbol table info available.
    #5  0x00007ffff4902ba4 in gloox::ClientBase::~ClientBase() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #6  0x00007ffff491b0a3 in gloox::Client::~Client() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #7  0x00007ffff491b1d9 in gloox::Client::~Client() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #8  0x0000000000a8d181 in glooxwrapper::Client::~Client (this=0x409e380, __in_chrg=<optimized out>) at ../../../source/lobby/glooxwrapper/glooxwrapper.cpp:330
    No locals.
    #9  0x0000000000a7b713 in XmppClient::~XmppClient (this=0x4317bf0, __in_chrg=<optimized out>) at ../../../source/lobby/XmppClient.cpp:167
    No locals.
    #10 0x0000000000a7c0a0 in XmppClient::~XmppClient (this=0x4317bf0, __in_chrg=<optimized out>) at ../../../source/lobby/XmppClient.cpp:175
    No locals.
    #11 0x0000000000a7402b in JSI_Lobby::StopXmppClient () at ../../../source/lobby/scripting/JSInterface_Lobby.cpp:112
    No locals.
    #12 ScriptInterface_NativeWrapper<void>::call<void (ScriptInterface::CxPrivate*)>(JSContext*, JS::MutableHandle<JS::Value>, void (ScriptInterface::CxPrivate*)) (
        fptr=<optimized out>, cx=0x27765c0) at ../../../source/scriptinterface/NativeWrapperDefns.h:86
    No locals.
    #13 ScriptInterface::call<void, &JSI_Lobby::StopXmppClient> (cx=0x27765c0, argc=<optimized out>, vp=0x1097040)
        at ../../../source/scriptinterface/NativeWrapperDefns.h:125
            args = <optimized out>
            rq = {mContext = 0x27765c0}
            rval = {<js::RootedBase<JS::Value>> = {<js::MutableValueOperations<JS::Rooted<JS::Value> >> = {<js::ValueOperations<JS::Rooted<JS::Value> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x2776628, prev = 0x7fffffffba70, ptr = {data = {asBits = 18444773748872577024, debugView = {payload47 = 0,
                    tag = JSVAL_TAG_UNDEFINED}, s = {payload = {i32 = 0, u32 = 0, why = JS_ELEMENTS_HOLE}}, asDouble = -nan(0x9000000000000),
                  asPtr = 0xfff9000000000000, asWord = 18444773748872577024, asUIntPtr = 18444773748872577024}}}
    #14 0x00007ffff6e9e0c0 in js::CallJSNative (args=..., native=<optimized out>, cx=0x27765c0)
        at /home/weberkai/0ad-0.0.23b-alpha/libraries/source/spidermonkey/mozjs-38.0.0/js/src/jscntxtinlines.h:226
    No locals.
    #15 js::Invoke (cx=0x27765c0, args=..., construct=<optimized out>)
        at /home/weberkai/0ad-0.0.23b-alpha/libraries/source/spidermonkey/mozjs-38.0.0/js/src/vm/Interpreter.cpp:498
            gcIfRequested = {runtime = 0xfdb800}
            initial = <optimized out>
            state = {<js::RunState> = {_vptr.RunState = 0x27765e0, kind_ = (unknown: 4294949808), script_ = {<js::RootedBase<JSScript*>> = {<No data fields>},
                  stack = 0x7fff6f652f90, prev = 0x7ffff3fe228f <std::string::replace(unsigned long, unsigned long, char const*, unsigned long)+111>, ptr = 0x27765f0}},
              args_ = @0x0, initial_ = (js::INITIAL_CONSTRUCT | unknown: 1869216480), createSingleton_ = 255}
            ok = <optimized out>
    #16 0x00007ffff6e92e3d in Interpret (cx=0x27765c0, state=...)
        at /home/weberkai/0ad-0.0.23b-alpha/libraries/source/spidermonkey/mozjs-38.0.0/js/src/vm/Interpreter.cpp:2602
            createSingleton = false
    ---Type <return> to continue, or q <return> to quit---

     

  6. Thread 1 (Thread 0x7ffff7f87b80 (LWP 3102)):
    #0  0x00007fffebaa0094 in ?? () from /usr/lib64/../lib64/libgnutls.so.30
    No symbol table info available.
    #1  0x00007fffebaa11d4 in ?? () from /usr/lib64/../lib64/libgnutls.so.30
    No symbol table info available.
    #2  0x00007fffebaa18ad in gnutls_x509_crt_verify () from /usr/lib64/../lib64/libgnutls.so.30
    No symbol table info available.
    #3  0x00007ffff4971d2c in gloox::GnuTLSClient::verifyAgainstCAs(gnutls_x509_crt_int*, gnutls_x509_crt_int**, int) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #4  0x00007ffff4971e5d in gloox::GnuTLSClient::getCertInfo() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #5  0x00007ffff49746e5 in gloox::GnuTLSBase::handshake() () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #6  0x00007ffff4974859 in gloox::GnuTLSBase::decrypt(std::string const&) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #7  0x00007ffff48ff72b in gloox::ConnectionTCPClient::recv(int) () from /usr/lib64/libgloox.so.13
    No symbol table info available.
    #8  0x000000000043d4ee in Frame () at ../../../source/main.cpp:403
            profile2__ = {m_Name = 0xb2aaf8 "frame"}
            time = <optimized out>
            realTimeSinceLastFrame = 0.0329228155
            __func__ = "Frame"
            need_update = true

    I think calling gloox recv() is returning bigger message than allowed oe no message at all.

    Maybe the server is sending a bigger message or maybe it is filling an input buffer downsized allocated https://stackoverflow.com/questions/3632861/segmentation-fault-on-recv

    Maybe the server is not sending  any message, or maybe the routine is doing just tls handshake with no message.

    • Thanks 1
  7. My solution is more like "Proof of Concept", not a definitive optimized solution, as I am not a very experienced coder.

    I prefer to wait for the outcomes from 'audit' first rather than to send an 'ugly' solution, as I believe the coder staff can provide a much better one.

    Well... Unless this 'audit' option is not really for real usage... But if this, I think someone will answer that very clear. And then I will post a diff as you pointed out.

    I've edited https://code.wildfiregames.com/rP19674 and added that I can send this diff anyway, if ok.

    Thanks!

    • Like 2
  8. Hi, fellows!

     

    I am glad to help, and I'm sorry I wasn't that clear...

    You have to edit source/ps/GameSetup/VisualReplay.cpp .

    You have to 'cut' these 2 lines:

        static OsPath tempCacheFileName = VisualReplay::GetDirectoryName() / L"replayCache_temp.json";
        static OsPath cacheFileName = VisualReplay::GetDirectoryName() / L"replayCache.json";

    Then 'paste' them twice... One inside this function:

        bool VisualReplay::ReadCacheFile(const ScriptInterface& scriptInterface, JS::MutableHandleObject cachedReplaysObject)

    And another inside this function:

        void VisualReplay::StoreCacheFile(const ScriptInterface& scriptInterface, JS::HandleObject replays)

    Paste them just after the opening '{'.

    This way we are changing the scope of these variables, the same way they were back at version 0.0.21.

    In 0.0.23 they are globals, and are created before the execution, but g_args is still not filled. After these changes, they will be created only upon function call, after g_args was filled.

    I've tried to comment at the bug tracker, but I haven't permission. Maybe I will have to become a developer to send a solution.

    But maybe @andy5995 could manage this for us?

    Please, Andy, may you help us?

    Thank you very much!

    • Like 1
    • Thanks 1
  9. Hi!

    During variable creation, tempCacheFileName is created at VisualReplay.cpp (and also cacheFileName):

    static const OsPath tempCacheFileName = VisualReplay::GetDirectoryName() / L"replayCache_temp.json";

    which calls GetDirectoryName which uses global variable g_args:

    const Paths paths(g_args);

    But in main.cpp g_args are filled at function RunGameOrAtlas during runtime, after variable creation:

    g_args = args;

    Using global g_args early at variable creation while it is not filled yet is causing segmentation fault in Slackware. Don't know why in other distros this won't happen (maybe newer stdlib version... Or different default compiler options... I've tried with g++ 5.3.0).

    In previous working version 0.0.21, VisualReplay.cpp uses GetDirectoryName only in runtime. That's why there is no error.

    Just moved these at VisualReplay.cpp to inside VisualReplay::ReadCacheFile and VisualReplay::StoreCacheFile and now its working:

    static OsPath tempCacheFileName = VisualReplay::GetDirectoryName() / L"replayCache_temp.json";
    static OsPath cacheFileName = VisualReplay::GetDirectoryName() / L"replayCache.json";
     

    Maybe a better coder could provide a better solution.

    This solves https://trac.wildfiregames.com/ticket/4789

    • Like 1
    • Thanks 1
×
×
  • Create New...