Jump to content

divisorxx

Members
  • Posts

    48
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by divisorxx

  1. Testing in middle population 1200+, when some maps crash and try to restart all other maps freeze forever:

    ************ BackTrace ************
    ***********************************
    /lib/libc.so.6(gsignal+0x35) [0x7f32be4814b5]
    /lib/libc.so.6(abort+0x180) [0x7f32be484f50]
    /lib/libc.so.6 [0x7f32be4b9c97]
    /lib/libc.so.6 [0x7f32be4c3dd6]
    /lib/libc.so.6(cfree+0x6c) [0x7f32be4c870c]
    ./mangos-worldd(ZA +0x181) [0x6a5d61]
    ./mangos-worldd(_Z13VisitorHelperIN6MaNGOS15VisibleNotifierE8CreatureEvRT_R16ContainerMapListIT0_E+0x8e) [0x5e83ce]
    ./mangos-worldd(_Z13VisitorHelperIN6MaNGOS15VisibleNotifierE8Creature8TypeListI13DynamicObjectS3_I6Corpse8TypeNullEEEvRT_R16ContainerMapListIS3_IT0_T1_EE+0x1b) [0x5e877b]
    ./mangos-worldd(_ZN3Map5VisitI6RGuardI19ACE_RW_Thread_Mutex16ACE_Thread_MutexEN6MaNGOS15VisibleNotifierE16TypeMapContainerI8TypeListI10GameObjectS8_I8CreatureS8_I13DynamicObjectS8_I6Corpse8TypeNullEEEEEEEvRK8CellLockIT_ER20TypeContainerVisitorIT0_T1_E+0x1e9) [0x5ec3c9]
    ./mangos-worldd(_ZN3Map26UpdateObjectsVisibilityForEP6Player4Cell9CoordPairILj512EE+0x11fa) [0x5e3eaa]
    ./mangos-worldd(_ZN3Map3AddEP6Player+0x1a5) [0x5e4d55]
    ./mangos-worldd(_ZN12WorldSession28HandleMoveWorldportAckOpcodeEv+0x233) [0x7c01d3]
    ./mangos-worldd(_ZN12WorldSession12LogoutPlayerEb+0x31) [0x75e561]
    ./mangos-worldd(_ZN12WorldSessionD1Ev+0x22) [0x75f372]
    ./mangos-worldd(_ZN5World11AddSession_EP12WorldSession+0xb0) [0x758650]
    ./mangos-worldd(_ZN5World14UpdateSessionsEj+0x2b) [0x758d5b]
    ./mangos-worldd(_ZN5World6UpdateEj+0xcb) [0x7596fb]
    ./mangos-worldd(_ZN13WorldRunnable3runEv+0x84) [0x4e4df4]
    ./mangos-worldd(_ZN9ACE_Based6Thread10ThreadTaskEPv+0x1c) [0x80440c]
    /lib/libpthread.so.0 [0x7f32bef6ea04]
    /lib/libc.so.6(clone+0x6d) [0x7f32be52d7bd]
    
    mangos>***********************************
    World Thread hangs, kicking out server!
    
    ************ BackTrace ************
    ***********************************
    ./mangos-worldd(_ZN22FreezeDetectorRunnable3runEv+0x120) [0x4e3070]
    ./mangos-worldd(_ZN9ACE_Based6Thread10ThreadTaskEPv+0x1c) [0x80440c]
    /lib/libpthread.so.0 [0x7f32bef6ea04]
    /lib/libc.so.6(clone+0x6d) [0x7f32be52d7bd]
    
    ***********************************

    In Testing Realm all ok, some ideas¿?

    Hi one questions, how much uptime did you have with this patch? Thanks.

  2. I went from a Trinity 3.1.3 server to Mangos 3.2.2a for what??!! The DK quests in the Trinity server work 1000 times better than Mangos. Death from above, Grand Theft Palomino, Killing the initiates.. even the dragon quest at the end works on Trinity WITHOUT ANY PATCHES!!!! This server is freakin rediculous. Are the Trinity coders really that much better? WTF?!

    No, trinity core ... is a leach of MaNGOS core, from the beginning until now...initial rev in repo from Trinity Core was a MaNGOS rev leeched (with some of custom patches from this forum included) and every important fix from MaNGOS was leeched too by Trinity Core even every version's switch...they aren't better than MaNGOS Dev even Trinity Core exist only due MaNGOS Dev and this great community...

    Trinity Core has that freatures because they leech every commit from MaNGOS so...with leeching those commits from MaNGOS they have free time to do that kind of freatures...again only possible due MaNGOS leechs.

    But quest related scripts is job of ScriptDev2 not MaNGOS Core...and just for note Trinity Core leechs ScriptDev2 work too in the same way.

    So think twice before say such crap.

  3. But.. all thread in same core? o will support multicore?

    It will by multithread (multicore).. like mtmaps patch but instead of you set the number of threads and all maps are working between those threads , it will one thread per map and in the end, free of race conditions, crashes, etc..so you can hold a great number of characters or future stuffs.

  4. I have the same crash :( Can you provide patch, how to fix this?

    Like I said early...problem seems to be in multithreaded player updates, so revert this commit http://github.com/mangos/mangos/commit/e24d2938b21e8d6910c5aed1a3f115abf0fbddf1 and problem solved but again almost all load will remain in main thread like time ago. Also you can try openmt maps with Infinity suggestions , if that work you can still have Player:Update in Map:Updates w/o crash.

    P.S.: By the way... just for curiosity , what kind of mtmaps patch are you using? (Ace mtmaps or OpenMP mtmaps)

  5. I'm curious: Is this necessary? After all this happens within Player::Update which only happens within Map::Update on the single map the player is on :).

    In fact there is a crash log of what i'm talking about, using ACE mtmaps. With 7XX characters... it crash like 5 times by day (some days less).. but like a said before once that i move Players:Update from Map:Update...I got like 3day uptimes.

    http://pastebin.com/m836455e

    To infinfny, thanks for your suggestions i will try it with your patch.

  6. In what unit? Meters? Approximately 4326243.

    Sorry if my english is not too good but i don't see any errors in my word. In any case I mean how much uptime do you have... because in my experience I have a lot of crashes due _UpdateSpells in Unit.cpp using mtmaps (I think due race conditions)...due to this I move Players update out of Maps and problem solved...but again main thread have the almost charge(load) compare to the others.

    Again sorry If my english is not too good. Bye

  7. 8780 rev - 1k ppl
    36478     20  50    0  3273M  2446M select 2   4:35 172.85% mangos-worldd
    
    36478        103    0  3276M  2450M uwait  5  15:45 31.15% mangos-worldd
    36478         54    0  3276M  2450M uwait  7   5:45 13.28% mangos-worldd
    36478         53    0  3276M  2450M CPU3   3   5:44 13.18% mangos-worldd
    36478         53    0  3276M  2450M RUN    6   5:43 12.99% mangos-worldd
    36478         52    0  3276M  2450M CPU1   1   5:43 12.79% mangos-worldd
    36478         52    0  3276M  2450M CPU2   2   5:47 12.35% mangos-worldd
    36478         52    0  3276M  2450M CPU0   0   5:45 12.35% mangos-worldd
    36478         52    0  3276M  2450M uwait  6   5:46 12.16% mangos-worldd
    36478         51    0  3276M  2450M select 5   4:35 11.96% mangos-worldd
    36478         51    0  3276M  2450M select 6   4:36 11.67% mangos-worldd
    36478         51    0  3276M  2450M RUN    7   4:46 11.57% mangos-worldd
    36478         50    0  3276M  2450M select 7   4:37 10.89% mangos-worldd 
    

    gcc version 4.4.2

    FreeBSD 7.2-RELEASE-p3

    Hi men, one question, how stable is?

  8. my crashfix: http://pastebin.com/m2038ed4b

    ps: it's a realy bad hack :P and if someone asks: you don't got it from me.. ^^

    the other one is just removing an assert..

    please don't spam the thread with such stuff and stay on topic.. i just posted this patch cause patch in first post got no updates.. also the patch i posted is surely nothing special and if you have an already running one you shouldn't switch to this one..

    ps: cyrex you should use another os.. i think win3.11 doesn't support 64bit, which is in your case better, cause you have more than 4gb ram which can't be adressed with 32bit ^^

    Hi balrok, Thanks for your time, just one question it's this assert the one that you remove ? And it's this safe to remove?

    Object.h

     const uint32& GetUInt32Value( uint16 index ) const
           {
               ASSERT( index < m_valuesCount || PrintIndexError( index , false) );
               return m_uint32Values[ index ];
           }
    

  9. I already have it on my server... tested with Rev 8579 and ~750 characters ON, finaly, not one crash due bgqueue update using derek's mtmaps. Thanks!

    Only one due this assert, but it's not related at all, and it's and old crash, I posted here not to want something just to show you that it's not related.

           const uint32& GetUInt32Value( uint16 index ) const
           {
               ASSERT( index < m_valuesCount || PrintIndexError( index , false) );
               return m_uint32Values[ index ];
           }
    

    #1  0x00007f057bd39960 in abort () from /lib64/libc.so.6
    No symbol table info available.
    #2  0x00007f057bd3137f in __assert_fail () from /lib64/libc.so.6
    No symbol table info available.
    #3  0x00000000004d5715 in Object::GetUInt32Value (this=<value optimized out>,
       index=<value optimized out>) at ../../../src/game/Object.h:166
           st = {static SYMBUFSIZ = 4096,
     buf_ = "./mangos-worldd(_ZNK5Guild12CanStoreItemEhhRSt6vectorI17GuildItemPosC
     static UNSUPPORTED = 0x7f057e3faaa0 "<stack traces unsupported platform>",
     static UNABLE_TO_GET_TRACE = 0x7f057e3faad0 "<unable to get trace>"}
           __FUNCTION__ = "GetUInt32Value"
           __PRETTY_FUNCTION__ = "const uint32& Object::GetUInt32Value(uint16) con
    #4  0x00000000007694c8 in Guild::_CanStoreItem_InTab (this=0x435efa0,
       tab=<value optimized out>, dest=@0x451c7ef0, count=<value optimized out>,
       merge=<value optimized out>, pSrcItem=0x7f05192bfb70, skip_slot=255 'ÿ')
       at ../../../src/game/Object.h:142
           pItem2 = <value optimized out>
           j = <value optimized out>
    #5  0x0000000000769a0d in Guild::CanStoreItem (this=0x435efa0,
       tab=<value optimized out>, slot=255 'ÿ', dest=@0x451c7ef0, count=1,
       pItem=0x7f05192bfb70, swap=false) at ../../../src/game/Guild.cpp:1954
           res = 0 '\\0'
           res = 0 '\\0'
    #6  0x00000000007700bd in Guild::MoveFromCharToBank (this=0x435efa0,
       pl=0x7f05034db9c0, PlayerBag=<value optimized out>,
       PlayerSlot=<value optimized out>, BankTab=<value optimized out>,
       BankTabSlot=<value optimized out>, SplitedAmount=0)
       at ../../../src/game/Guild.cpp:2342
           dest = {<std::_Vector_base<GuildItemPosCount, std::allocator<GuildItemP
       _M_impl = {<std::allocator<GuildItemPosCount>> = {<__gnu_cxx::new_allocator
         _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
           msg = <value optimized out>
           pItemBank = (class Item *) 0x0
           pItemChar = (class Item *) 0x7f05192bfb70
    #7  0x00000000007745b6 in WorldSession::HandleGuildBankSwapItems (
       this=0x2c3474b0, recv_data=@0x7f0556ab9650)
       at ../../../src/game/GuildHandler.cpp:1143
           BankTab = 0 '\\0'
           BankTabDst = 102 'f'
           unk2 = 0 '\\0'
           SplitedAmount = 0
           pl = (class Player *) 0x7f05034db9c0
           GoGuid = <value optimized out>
           AutoStore = 0 '\\0'
           ToChar = 0 '\\0'
           AutoStoreCount = 0
           AutoStoreCount = 0
           GuildId = <value optimized out>
           BankTabSlot = 255 'ÿ'
           PlayerBag = 20 '\\024'
           BankTabSlotDst = 240 'ð'
           ItemEntry = 0
           BankToBank = 0 '\\0'
           PlayerSlot = 5 '\\005'
           unk1 = 4294967295
           pGuild = (Guild *) 0x435efa0
    #8  0x0000000000727902 in WorldSession::Update (this=0x2c3474b0)
       at ../../../src/game/../shared/Log.h:119
           packet = (WorldPacket *) 0x7f0556ab9650
           currTime = <value optimized out>

  10. +    SetUInt32Value(GAMEOBJECT_BYTES_1, uint32(-1));

    GAMEOBJECT_BYTES_1 is not TWO_SHORT, andvalues are already set below in code by

        SetGoState(go_state);
       SetGoType(GameobjectTypes(goinfo->type));
       SetGoAnimProgress(animprogress);

    You mean SetUInt16Value(GAMEOBJECT_DYNAMIC, 1, uint16(-1)); maybe?

    Edit: i tested patch, and had some problems when object created. That was solved by the below code (*data split in two uint16 values, since we now know type is really TWO_SHORT).

    diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp
    index 6ddd5a2..e4c631f 100644
    --- a/src/game/GameObject.cpp
    +++ b/src/game/GameObject.cpp
    @@ -150,9 +150,10 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMa
    
        SetUInt32Value(GAMEOBJECT_DISPLAYID, goinfo->displayId);
    
    +    // GAMEOBJECT_BYTES_1, index at 0, 1, 2 and 3
        SetGoState(go_state);
        SetGoType(GameobjectTypes(goinfo->type));
    -
    +    SetGoArtKit(0);                                         // unknown what this is
        SetGoAnimProgress(animprogress);
    
        //Notify the map's instance data.
    diff --git a/src/game/Object.cpp b/src/game/Object.cpp
    index 1601738..71b691f 100644
    --- a/src/game/Object.cpp
    +++ b/src/game/Object.cpp
    @@ -592,10 +592,9 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask
            if (isType(TYPEMASK_GAMEOBJECT) && !((GameObject*)this)->IsTransport())
            {
                if ( ((GameObject*)this)->ActivateToQuest(target) || target->isGameMaster())
    -            {
                    IsActivateToQuest = true;
    -                updateMask->SetBit(GAMEOBJECT_DYNAMIC);
    -            }
    +
    +            updateMask->SetBit(GAMEOBJECT_DYNAMIC);
            }
            else if (isType(TYPEMASK_UNIT))
            {
    @@ -711,18 +710,27 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask
                            switch(((GameObject*)this)->GetGoType())
                            {
                                case GAMEOBJECT_TYPE_CHEST:
    -                                *data << uint32(9);         // enable quest object. Represent 9, but 1 for client before 2.3.0
    +                                // enable quest object. Represent 9, but 1 for client before 2.3.0
    +                                *data << uint16(9);
    +                                *data << uint16(-1);
                                    break;
                                case GAMEOBJECT_TYPE_GOOBER:
    -                                *data << uint32(1);
    +                                *data << uint16(1);
    +                                *data << uint16(-1);
                                    break;
                                default:
    -                                *data << uint32(0);         // unknown, not happen.
    +                                // unknown, not happen.
    +                                *data << uint16(0);
    +                                *data << uint16(-1);
                                    break;
                            }
                        }
                        else
    -                        *data << uint32(0);                 // disable quest object
    +                    {
    +                        // disable quest object
    +                        *data << uint16(0);
    +                        *data << uint16(-1);
    +                    }
                    }
                    else
                        *data << m_uint32Values[ index ];       // other cases
    

    Besides that, it now works ok.

    I want to test it but i don't know if you patch is full patch or it has to be with original patch?

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use