azerothcore / azerothcore-wotlk

Complete Open Source and Modular solution for MMO
http://www.azerothcore.org
GNU Affero General Public License v3.0
6.52k stars 2.61k forks source link

Fatal crash in BattlegroundQueue.cpp #5279

Closed skxawng-cu closed 3 years ago

skxawng-cu commented 3 years ago

CURRENT BEHAVIOUR:

src/server/game/Battleground/BattlegroundQueue.cpp:258 in RemovePlayer ABORTED. Segmentation fault (core dumped)

EXPECTED BLIZZLIKE BEHAVIOUR:

SOURCE:

IMG_20210413_211534

STEPS TO REPRODUCE THE PROBLEM:

  1. Build and start the server.
  2. Join players to BG Queue until BG call.
  3. Server will crash.

EXTRA NOTES:

AC HASH/COMMIT:

c860b44

OPERATING SYSTEM:

Ubuntu 20.04

MODULES:

Anticheat Transmog

CUSTOMIZATIONS:

skxawng-cu commented 3 years ago

IMG_20210413_220525

ABORT() ;

That line cause the crash, I try comment the line and rebuild and work.

Kitzunu commented 3 years ago

Weird that it happens now and not anytime before...

Did any commit recently adjust something about battlegrounds @FrancescoBorzi ?

FrancescoBorzi commented 3 years ago

Weird that it happens now and not anytime before...

Did any commit recently adjust something about battlegrounds @FrancescoBorzi ?

I did something but it's not merged yet, so it can't be that.

@Winfidonarleyan recently worked on BGs

However, I can confirm that using https://github.com/azerothcore/azerothcore-wotlk/commit/b9ae587b6b37355448c30301f7cccd50175117cd with CFBG I didn't get any crash with players.

@skxawng-cu do you have any changes in your AC or it's clean? Can you try to reproduce this without any modifications or modules enabled?

also can anyone else reproduce this?

Winfidonarleyan commented 3 years ago

Need crashlog for check problem

FrancescoBorzi commented 3 years ago

Need crashlog for check problem

no need crashlog this time, it's clear what the line of the crash is because it's ABORT()

Helias commented 3 years ago

I checked the lines near to ABORT() and I saw that besides the conversion from the var type of itr to auto there were no changes even to the part of code of RemovePlayer(), so, I am not sure that what causes the issue is that line, a crash log could be helpful I think

skxawng-cu commented 3 years ago

Where the core save crash logs in Linux?

Kitzunu commented 3 years ago

I cannot reproduce this in Windows

Footman commented 3 years ago

same crash

Kitzunu commented 3 years ago

Please add a crashlog

Footman commented 3 years ago
#0  0x0000000000e4ac2e in acore::Abort (file=0xf1d768 "/src/server/game/Battlegrounds/BattlegroundQueue.cpp", line=277, function=0xf1d80e "RemovePlayer") at /src/common/Debugging/Errors.cpp:116
        formattedMessage = <incomplete type>
#1  0x000000000044bcb5 in BattlegroundQueue::RemovePlayer (this=0x1431130 <BattlegroundMgr::instance()::instance+96>, guid=4106, sentToBg=<optimized out>, playerQueueSlot=0) at /src/server/game/Battlegrounds/BattlegroundQueue.cpp:277
        player = 0x7ffe88ec4940
        itr = <optimized out>
        groupInfo = <optimized out>
        _bracketId = <optimized out>
        _groupType = <optimized out>
        group_itr = <optimized out>
        pitr = <optimized out>
#2  0x0000000000644d9f in WorldSession::HandleBattlemasterJoinArena (this=0x7ffea8e9f100, recvData=...) at /src/server/game/Handlers/BattleGroundHandler.cpp:655
        bgQueue = @0x1431130: {m_QueuedPlayers = std::map with 0 elements, m_QueuedGroups = {{empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}, {empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list, empty std::__cxx11::list}}, m_SelectionPools = {{SelectedGroups = empty std::__cxx11::list, PlayerCount = 0}, {SelectedGroups = empty std::__cxx11::list, PlayerCount = 0}}, m_bgTypeId = BATTLEGROUND_TYPE_NONE, m_arenaType = 0, m_WaitTimes = {{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0} <repeats 16 times>}, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0} <repeats 16 times>}}, m_WaitTimeLastIndex = {{0 <repeats 16 times>}, {0 <repeats 16 times>}}, m_events = {m_time = 3601001, m_events = std::multimap with 0 elements, m_aborting = false}}
        asGroup = 0 '\000'
        isRated = 1 '\001'
        arenatype = 5 '\005'
        arenaslot = <optimized out>
        bgt = <optimized out>
        bgTypeId = BATTLEGROUND_AA
        bgQueueTypeId = BATTLEGROUND_QUEUE_NONE
        bracketEntry = 0x7ffff36e6494
        startHour = <optimized out>
        endHour = <optimized out>
        arenaJoinStartTime = <optimized out>
        arenaJoinStoptTime = <optimized out>
        currentTime = <optimized out>
        err = <optimized out>
        guid = <optimized out>
        qSlot = <optimized out>
#3  0x000000000071a5a8 in WorldSession
Footman commented 3 years ago

than same reason caused crash with cfbg module:

#4  CFBG::ShouldForgetInListPlayers (this=0x1464888 <CFBG::instance()::instance>, player=0x7ffed44aad00) at /modules/mod-cfbg/src/CFBG.cpp:380
No locals.
#5  CFBG::UpdateForget (this=0x1464888 <CFBG::instance()::instance>, player=0x7ffed44aad00) at /modules/mod-cfbg/src/CFBG.cpp:496
        bg = <optimized out>

#6  0x00000000008f7891 in CFBG_Player::OnBeforeUpdate (this=0x7ffff6919780, player=0x7ffed44aad00, diff=<optimized out>) at /modules/mod-cfbg/src/CFBG_SC.cpp:177
No locals.
#7  0x00000000006ef403 in ScriptMgr::OnBeforePlayerUpdate (this=<optimized out>, player=0x7ffed44aad00, p_time=16) at /src/server/game/Scripting/ScriptMgr.cpp:1549
        itr = {first = 7, second = 0x7ffff6919780}
#8  0x00000000004e5eef in Player::Update (this=0x7ffed44aad00, p_time=16) at /src/server/game/Entities/Player/Player.cpp:1598
FrancescoBorzi commented 3 years ago

@Winfidonarleyan this seems to be caused by the MS Hooks PR, please fix it asap

ernesto-glz commented 3 years ago

@Winfidonarleyan You can reproduce the error simply by dialing 2v2 skirmish

Winfidonarleyan commented 3 years ago

@Footman Thanks for crashlog