So, for some more details, it would seem like what occurs (on my server at least) is some sort of situation where the server starts to misinterpret incoming packets from the client.
When this occurs, you'll see something like the following in the server log:
01:09:45 E Client : OP_QuestJournalSetVisibleMsg error: Player does not have quest with id of 3607334484
01:09:45 E Client : OP_ReadyForTakeOffMsg recieved but unable to get an index for path (2784) in zone (252)
01:09:45 E Client : OP_QuestJournalSetVisibleMsg error: Player does not have quest with id of 2101156308
01:09:45 E Client : num_quests = 3322065697 - quantity too high, aborting load.
01:09:45 E World : Unknown id of 969906781 when looting!
01:09:45 E Command : Error, command handler of 25365 was requested, but max handler is 2010
01:09:45 E World : Invalid ZoneAuthRequest, disconnecting client.
This seems to randomly happen when connecting or zoning. I've also had it happen just by idling for a long time, where my ping will shoot up to 8K (although no lag is experienced) and the above will eventually happen.
This does not always crash the server but occasionally it will.
Stack trace from one of the crashes:
(gdb) bt
#0 _int_free (av=0x7fffc0000020, p=0x7fffc06988c0, have_lock=0) at malloc.c:3841
#1 0x00007ffff65a553c in __GI___libc_free (mem=<optimized out>) at malloc.c:2968
#2 0x000000000092e52a in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned short const, EQProtocolPacket*> > >::deallocate (this=0x7fffc0002f80,
__p=0x7fffc06988d0) at /usr/include/c++/5/ext/new_allocator.h:110
#3 0x000000000092dbe7 in std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned short const, EQProtocolPacket*> > > >::deallocate (__a=...,
__p=0x7fffc06988d0, __n=1) at /usr/include/c++/5/bits/alloc_traits.h:517
#4 0x000000000092c527 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::_M_put_node (this=0x7fffc0002f80, __p=0x7fffc06988d0)
at /usr/include/c++/5/bits/stl_tree.h:495
#5 0x000000000092ab78 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::_M_drop_node (this=0x7fffc0002f80, __p=0x7fffc06988d0)
at /usr/include/c++/5/bits/stl_tree.h:562
#6 0x000000000092e854 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::_M_erase_aux (this=0x7fffc0002f80, __position=...)
at /usr/include/c++/5/bits/stl_tree.h:2249
#7 0x000000000092dee6 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::erase[abi:cxx11](std::_Rb_tree_const_iterator<std::pair<unsigned short const, E$
ProtocolPacket*> >) (this=0x7fffc0002f80, __position=...) at /usr/include/c++/5/bits/stl_tree.h:1024
#8 0x000000000092cef3 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::_M_erase_aux (this=0x7fffc0002f80, __first=..., __last=...)
at /usr/include/c++/5/bits/stl_tree.h:2263
#9 0x000000000092bba9 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::erase[abi:cxx11](std::_Rb_tree_const_iterator<std::pair<unsigned short const, E$
ProtocolPacket*> >, std::_Rb_tree_const_iterator<std::pair<unsigned short const, EQProtocolPacket*> >) (this=0x7fffc0002f80, __first=..., __last=...)
at /usr/include/c++/5/bits/stl_tree.h:1057
#10 0x0000000000929e91 in std::_Rb_tree<unsigned short, std::pair<unsigned short const, EQProtocolPacket*>, std::_Select1st<std::pair<unsigned short const, EQProtocolPacket*> >,
std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::erase (this=0x7fffc0002f80, __x=@0x7fffc00028fc: 37402)
at /usr/include/c++/5/bits/stl_tree.h:2274
#11 0x0000000000928e31 in std::map<unsigned short, EQProtocolPacket*, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, EQProtocolPacket*> > >::erase (
this=0x7fffc0002f80, __x=@0x7fffc00028fc: 37402) at /usr/include/c++/5/bits/stl_map.h:745
#12 0x0000000000924f1b in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698860) at ../common/EQStream.cpp:482
#13 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06987b0) at ../common/EQStream.cpp:491
#14 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698700) at ../common/EQStream.cpp:491
#15 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698650) at ../common/EQStream.cpp:491
#16 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06985a0) at ../common/EQStream.cpp:491
#17 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06984f0) at ../common/EQStream.cpp:491
#18 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698440) at ../common/EQStream.cpp:491
#19 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698390) at ../common/EQStream.cpp:491
#20 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06982e0) at ../common/EQStream.cpp:491
#21 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698230) at ../common/EQStream.cpp:491
#22 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698180) at ../common/EQStream.cpp:491
#23 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06980b0) at ../common/EQStream.cpp:491
#24 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0698020) at ../common/EQStream.cpp:491
#25 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0696ff0) at ../common/EQStream.cpp:491
#26 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0697eb0) at ../common/EQStream.cpp:491
#27 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0697e00) at ../common/EQStream.cpp:491
#28 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0697d50) at ../common/EQStream.cpp:491
#29 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0695080) at ../common/EQStream.cpp:491
#30 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0694fd0) at ../common/EQStream.cpp:491
#31 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0694f20) at ../common/EQStream.cpp:491
#32 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0697a90) at ../common/EQStream.cpp:491
#33 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc06979e0) at ../common/EQStream.cpp:491
#34 0x0000000000924f42 in EQStream::ProcessPacket (this=0x7fffc00008c0, p=0x7fffc0697930) at ../common/EQStream.cpp:491
---Type <return> to continue, or q <return> to quit---quit
On a side note, I have a packet collect from one of the "insta crashes" that happen occasionally when you log in, where you'll get an error message and the game will exit completely. The logs seem to be filled with random garbage.
It makes me wonder if this is related to a memory access error that I saw pop up when running valgrind, something related to the Color type in one of the packet structures.