Jump to content

crashuncle

Members
  • Posts

    132
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by crashuncle

  1. Thank you for your fast replies :)

    You cannot compare oregoncore crashes to mangos like that really, maby oregoncore git just one line different then mangos making it work/not work. And i have not had any mangos one crash in a very long time. Except my own creations and menory overload i have git 0 really. But i have bot had any load on my server so i cannot say that it doesnt exist tho. But try mangos and see what we deliver from here!:) And also remember! MaNGOS is the place where all new systems are born;)

    I know Mangos pretty good and check the source of Mangos since years, the code quality is compared to other projects (Which are indeed most of the time based on Mangos) way better. I learned in general a lot about MMORPG developing from Mangos, that is one of the reasons why I supported Mangos at least with a few small donations and in the future maybe even with some fixes once my developing skills are better.

    In the log m_mapId = 4294967295 which is -1 represented in unsigned. Where exactly are you? Are your players allowed in non retail like areas?

    The crash is coming quite randomly and I wasn't able to reproduce it myself yet. Well players can go on all retail areas, the testing map (cube) and the old unused Azshara map. They have both a small map ID value though so I have no idea why a function would send "-1" as map value.

  2. This shouldn't even be an issue in any repo of mangos?

    What version of mangos are you using?

    The 0.12 version for the 2.4.3 client, based on the source code from August 2010~ I remember there was around this time also a fix for the mentioned issue, but I can't find it.

    I basically look for the revision which fixes the issue that players keep being displayed at the outer part of the server sided view distance (They stuck there moving even if they are gone since a while).

  3. I remember that there was long time ago a revision for Mangos which fixed the issue that players who are out of the view distance don't "stuck" on the screen. On older revisions of Mangos players who were out of the view distance were still being shown ingame (Walking at the same place till the world is reloaded). This looks quite ugly when you are for example in a city and see a lot of players there which stuck "walking" even if they are at a totally different position or not even ingame anymore.

    Does anyone remember which revision it was? Or can tell me at least a date or give me a hint which code part fixed that?

  4. Hello Mangos community,

    I updated the IDs of my item_template and have to update the IDs of my character database now. If I understood it correctly then I have to update the "character_inventory and item_instance" tables for the player inventory?

    Updating the character_inventory table is no problem at all, the item_template column explains itself. The problem is the "item_instance" because it is using a data field which seems to be "variable" if I see it correctly? I only saw that the difference between a item and container yet.

    So what I basically need now is a query which can update the item_template IDs in the item_instance. I'm since hours busy with this issue and slowly give up, help would be really appreciated.

    I just need the basic query, it doesn't needs to read the ids from the item_template or something because it are only a few values.

  5. so you don't use core dumps anyway...and i have no idea why you are running mangos in gdb twice in the loop, or why you set the date before running it...

    Well the script was written like that and in the end only one server is running, though a better script which is less buggy would be welcome. For me it is only important to get a detailed output of GDB and not empty files sometimes when a unexpected crash appeared.

    (And yes the 2nd app call was quite dumb)

  6. Need more information...which method are you using in the first place?

    You can't force GDB to do anything if it has no input...if you're using core dumps, make sure they are actually created, and have expected names.

    check ulimit and /proc/sys/kernel/core_pattern first...

    OS: Ubuntu 64bit Server

    Well I use a debug restarter script which I start with the following cmd:"screen -A -m -d -S debugrs ./debug.sh".

    Here is the content of debug.sh:

    LOGDIR="logs/"

    LOG_LOG0="log_server" #destinationfile for your generallogs

    LOG_ERR0="err_server" #destinationfile for your errorlogs

    LOG_GDB0="gdb_server" #destinationfile for your crashlogs

    LOG_LOG=$LOGDIR$LOG_LOG0

    LOG_ERR=$LOGDIR$LOG_ERR0

    LOG_GDB=$LOGDIR$LOG_GDB0

    echo "run" > .core.gdb

    echo "bt" >> .core.gdb

    echo "bt full" >> .core.gdb

    echo "thread apply all backtrace full" >> .core.gdb

    while true

    do

    date=`date +%Y%m%d_%H.%M.%S`

    gdb ./mangos -x .core.gdb --batch > $LOG_LOG".log" 2> $LOG_ERR".log"

    gdb ./mangos -x .core.gdb --batch &>$LOG_LOG".log"

    grep -B 40 -A 1800 "Program received signal SIG" $LOG_LOG".log" > $LOG_GDB$date".log"

    mv $LOG_LOG".log" $LOG_LOG$date".log"

    mv $LOG_ERR".log" $LOG_ERR$date".log"

    rm $LOGDIR"last_"$LOG_LOG0".log"

    ln -s $LOG_LOG$date".log" "last_"$LOG_LOG0".log"

    rm $LOGDIR"last_"$LOG_ERR0".log"

    ln -s $LOG_ERR$date".log" "last_"$LOG_ERR0".log"

    rm $LOGDIR"last_"$LOG_GDB0".log"

    ln -s $LOG_GDB$date".log" "last_"$LOG_GDB0".log"

    echo `date`" restarting"

    sleep 20

    done

    It works quite acceptable except that the log dates don't fit always and that you can't see the output of the server console anymore (Except with tail -f). But sometimes it simply outputs nothing at all or creates only a empty file, the core itself is of course compiled in debug mode and most of the time it outputs the GDB logs.

    Ulimit says "unlimited" I guess thats fine. "nano /proc/sys/kernel/core_pattern" is set to "core".

    Any idea what could cause the issue that it outputs nothing or only empty files sometimes?

  7. Ok, i tryed it, and worked fine.

    But an other edit was simpler : disable the call in the " Player::LoadFromDB "

    sorry to bump this thread but i got to exact same spot, however im not very good with c++ and cant find this, first of all which cpp, second of all is that all of the code to disable or is it more (fairly sure its more) i could find multiple codes in player.cpp which had that and neither (from what i could see) had any "call"

    i tried pm tareld but he is no longer active on forum and this didnt reply

    anyone who fixed without a full rollback, which code exactly to disable for it to be possible again?

    if you preffer, pm me otherwise just reply here

    +rep for answer, thx

    Well just make a new function like that:

    void Player::InitDisplayIdsAlt()
    {
       PlayerInfo const *info = sObjectMgr.GetPlayerInfo(getRace(), getClass());
       if(!info)
       {
           sLog.outError("Player %u has incorrect race/class pair. Can't init display ids.", GetGUIDLow());
           return;
       }
    
       // reset scale before reapply auras
       SetObjectScale(DEFAULT_OBJECT_SCALE);
    
       uint8 gender = getGender();
       switch(gender)
       {
           case GENDER_FEMALE:
               SetDisplayId(GetNativeDisplayId()); // Get the current native ID and set it as model
               break;
           case GENDER_MALE:
               SetDisplayId(GetNativeDisplayId()); // Get the current native ID and set it as model
               break;
           default:
               sLog.outError("Invalid gender %u for player",gender);
               return;
       }
    }

    Replace "InitDisplayIds();" in the LoadFromDB function with "InitDisplayIdsAlt();" and the native ID will stay. Temporary models will be still overwritten :)

  8. I'm currently trying to use "GetName()" in the Channel.cpp (Channel::Say). That actually works fine until the client automatically joins ID 26, then the whole server is crashing when it trys to read the name. Reading the ID only works fine. Is that maybe the LFG or Addon channel?

    I try currently to add a server side check if a channel has a specific name OR if a channel is not one of the default ones (custom channel) and don't allow them to talk there.

    If I see it correct then custom channels have always the ID 0?

    Here an example:

    else if(plr->getMap() == 530 && GetChannelId() == 0)
       {
           WorldPacket data;
           MakeMuted(&data);
           SendToOne(&data, p);
       }

    Could I use this code without problems to disable the possibility to talk on custom channels in the Outland? (Just as an example)

    I would also try to prevent the issue that someone sets a password on the world chat.

    Thanks in advance for a answer!

  9. ...well.... no share = die.

    You can try to sue them, but that's difficult with a open source project and probably won't work. If you attack them or do anything similar you aren't better as they are. They have to live with the bad conscience, anyway now we are going off-topic.

    I noticed a small unknown issue in the latest ACE MTMaps patch of Infinity_Return:

    MapManager.cpp:

    - for(MapMapType::iterator iter=i_maps.begin(); iter != i_maps.end(); ++iter)

    - iter->second->Update((uint32)i_timer.GetCurrent());

    + for (MapMapType::iterator iter=i_maps.begin(); iter != i_maps.end(); ++iter)

    + {

    + if (m_updater.activated())

    + m_updater.schedule_update(*iter->second, i_timer.GetCurrent());

    + else

    + iter->second->Update(i_timer.GetCurrent());

    + }

    +

    + if (m_updater.activated())

    + m_updater.wait();

    Since the latest revisions there exists also "checkAndCorrectGridStatesArray();" in this part. If I understood it correct then I don't have to add it for the MT patch?

  10. I had the same crash on my custom core, and i found that it was due to an assertion fail , enven if the backtrace didn't mentionned it.

    Polymorphism makes the core call Object::BuildUpdateData() instead of WorldObject::BuildUpdateData() in several cases I've not identified yet.

    To prevent thoses crashes an hacky way, you can comment the assert in Object.cpp (around line 1130)

    void Object::BuildUpdateData( UpdateDataMapType& /*update_players */)
    {
       sLog.outError("Unexpected call of Object::BuildUpdateData for object (TypeId: %u Update fields: %u)",GetTypeId(), m_valuesCount);
       //ASSERT(false);
    }
    

    Has this issue been fixed yet?

×
×
  • 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