#390 player position update doesn't hold mutex long enough

Closed
opened 2 years ago by image · 0 comments
image commented 2 years ago
    #0 0x7ffff723231d  (/lib/x86_64-linux-gnu/libasan.so.5+0x3f31d)
    #1 0x5555562cbbc2 in Spawn::player_position_update_packet(Player*, unsigned short) ../WorldServer/Spawn.cpp:937
    #2 0x55555593689d in ZoneServer::SendPlayerPositionChanges(Player*) ../WorldServer/zoneserver.cpp:1956
    #3 0x555555fc0f09 in Client::Process(bool) ../WorldServer/client.cpp:3067
    #4 0x555555a04d78 in ZoneServer::ClientProcess() ../WorldServer/zoneserver.cpp:3186
    #5 0x555555a115fb in ZoneServer::Process() ../WorldServer/zoneserver.cpp:1408
    #6 0x555555a1cd76 in ZoneLoop(void*) ../WorldServer/zoneserver.cpp:6863
    #7 0x7ffff6fbbfa2 in start_thread /build/glibc-vjB4T1/glibc-2.28/nptl/pthread_create.c:486
    #8 0x7ffff68264ce in clone (/lib/x86_64-linux-gnu/libc.so.6+0xf94ce)

0x60300d217515 is located 0 bytes to the right of 21-byte region [0x60300d217500,0x60300d217515)
allocated by thread T23 here:
    #0 0x7ffff72ddef0 in operator new[](unsigned long) (/lib/x86_64-linux-gnu/libasan.so.5+0xeaef0)
    #1 0x5555562baf5e in Spawn::spawn_pos_changes(Player*, unsigned short) ../WorldServer/Spawn.cpp:842
    #2 0x5555562cb61f in Spawn::player_position_update_packet(Player*, unsigned short) ../WorldServer/Spawn.cpp:883
    #3 0x55555593689d in ZoneServer::SendPlayerPositionChanges(Player*) ../WorldServer/zoneserver.cpp:1956
    #4 0x555555fc0f09 in Client::Process(bool) ../WorldServer/client.cpp:3067
    #5 0x555555a04d78 in ZoneServer::ClientProcess() ../WorldServer/zoneserver.cpp:3186
    #6 0x555555a115fb in ZoneServer::Process() ../WorldServer/zoneserver.cpp:1408
    #7 0x555555a1cd76 in ZoneLoop(void*) ../WorldServer/zoneserver.cpp:6863
    #8 0x7ffff6fbbfa2 in start_thread /build/glibc-vjB4T1/glibc-2.28/nptl/pthread_create.c:486

Thread T23 created by T0 here:
    #0 0x7ffff7243db0 in __interceptor_pthread_create (/lib/x86_64-linux-gnu/libasan.so.5+0x50db0)
    #1 0x5555559ddb97 in ZoneServer::Init() ../WorldServer/zoneserver.cpp:309
    #2 0x555555ddf99c in ZoneList::Get(unsigned int, bool) ../WorldServer/World.cpp:595
    #3 0x555555f0c88a in Client::SetCurrentZone(unsigned int) ../WorldServer/client.cpp:3369
    #4 0x5555561e7555 in WorldDatabase::loadCharacter(char const*, unsigned int, Client*) ../WorldServer/WorldDatabase.cpp:1784
    #5 0x555555f9ae6c in Client::HandleNewLogin(unsigned int, unsigned int) ../WorldServer/client.cpp:9814
    #6 0x555555f9fbe8 in Client::HandlePacket(EQApplicationPacket*) ../WorldServer/client.cpp:1065
    #7 0x555555fc0258 in Client::Process(bool) ../WorldServer/client.cpp:3006
    #8 0x555555fc304e in ClientList::Process() ../WorldServer/client.cpp:3301
    #9 0x555555c63a4a in main ../WorldServer/net.cpp:458
    #10 0x7ffff675109a in __libc_start_main ../csu/libc-start.c:308
``` #0 0x7ffff723231d (/lib/x86_64-linux-gnu/libasan.so.5+0x3f31d) #1 0x5555562cbbc2 in Spawn::player_position_update_packet(Player*, unsigned short) ../WorldServer/Spawn.cpp:937 #2 0x55555593689d in ZoneServer::SendPlayerPositionChanges(Player*) ../WorldServer/zoneserver.cpp:1956 #3 0x555555fc0f09 in Client::Process(bool) ../WorldServer/client.cpp:3067 #4 0x555555a04d78 in ZoneServer::ClientProcess() ../WorldServer/zoneserver.cpp:3186 #5 0x555555a115fb in ZoneServer::Process() ../WorldServer/zoneserver.cpp:1408 #6 0x555555a1cd76 in ZoneLoop(void*) ../WorldServer/zoneserver.cpp:6863 #7 0x7ffff6fbbfa2 in start_thread /build/glibc-vjB4T1/glibc-2.28/nptl/pthread_create.c:486 #8 0x7ffff68264ce in clone (/lib/x86_64-linux-gnu/libc.so.6+0xf94ce) 0x60300d217515 is located 0 bytes to the right of 21-byte region [0x60300d217500,0x60300d217515) allocated by thread T23 here: #0 0x7ffff72ddef0 in operator new[](unsigned long) (/lib/x86_64-linux-gnu/libasan.so.5+0xeaef0) #1 0x5555562baf5e in Spawn::spawn_pos_changes(Player*, unsigned short) ../WorldServer/Spawn.cpp:842 #2 0x5555562cb61f in Spawn::player_position_update_packet(Player*, unsigned short) ../WorldServer/Spawn.cpp:883 #3 0x55555593689d in ZoneServer::SendPlayerPositionChanges(Player*) ../WorldServer/zoneserver.cpp:1956 #4 0x555555fc0f09 in Client::Process(bool) ../WorldServer/client.cpp:3067 #5 0x555555a04d78 in ZoneServer::ClientProcess() ../WorldServer/zoneserver.cpp:3186 #6 0x555555a115fb in ZoneServer::Process() ../WorldServer/zoneserver.cpp:1408 #7 0x555555a1cd76 in ZoneLoop(void*) ../WorldServer/zoneserver.cpp:6863 #8 0x7ffff6fbbfa2 in start_thread /build/glibc-vjB4T1/glibc-2.28/nptl/pthread_create.c:486 Thread T23 created by T0 here: #0 0x7ffff7243db0 in __interceptor_pthread_create (/lib/x86_64-linux-gnu/libasan.so.5+0x50db0) #1 0x5555559ddb97 in ZoneServer::Init() ../WorldServer/zoneserver.cpp:309 #2 0x555555ddf99c in ZoneList::Get(unsigned int, bool) ../WorldServer/World.cpp:595 #3 0x555555f0c88a in Client::SetCurrentZone(unsigned int) ../WorldServer/client.cpp:3369 #4 0x5555561e7555 in WorldDatabase::loadCharacter(char const*, unsigned int, Client*) ../WorldServer/WorldDatabase.cpp:1784 #5 0x555555f9ae6c in Client::HandleNewLogin(unsigned int, unsigned int) ../WorldServer/client.cpp:9814 #6 0x555555f9fbe8 in Client::HandlePacket(EQApplicationPacket*) ../WorldServer/client.cpp:1065 #7 0x555555fc0258 in Client::Process(bool) ../WorldServer/client.cpp:3006 #8 0x555555fc304e in ClientList::Process() ../WorldServer/client.cpp:3301 #9 0x555555c63a4a in main ../WorldServer/net.cpp:458 #10 0x7ffff675109a in __libc_start_main ../csu/libc-start.c:308 ```
image referenced this issue from a commit 2 years ago
Sign in to join this conversation.
Loading...
Cancel
Save
There is no content yet.