PDA

View Full Version : Death+respawn cause segfaults



elf
05-28-2011, 01:47 PM
I think what is happening is that when the player dies and respawns (not rez) in the same zone, the death causes them to be removed from the group but they are never added back. Deaths followed by respawning then zoning do not appear to cause this problem. I am not sure if the mercenary is partially to blame for this, because I haven't tested the problem to exhaustion.

Version of ShowEQ: 5.13.10.3 + patches from the threads posted around here.

Step to reproduce:
1: bind in unsafe zone of your choice (I like blightfire)
2: get out a mercenary and leave them on passive (might be optional)
3: die in that zone
4: choose bind point respawn (you will pop to your bind point without a 'loading please wait' screen)
5: kill something that gives exp
6: watch showeq sigsegv

Backtrace follows:

Program received signal SIGSEGV, Segmentation fault.
0x08140b38 in GroupMgr::totalLevels (this=0x83f5428) at group.cpp:368
368 total += m_members[i]->m_spawn->level();
(gdb) bt
#0 0x08140b38 in GroupMgr::totalLevels (this=0x83f5428) at group.cpp:368
#1 0x08116024 in ExperienceWindow::addExpRecord (this=0x8468888,
mob_name=..., mob_level=21, xp_gained=0, zone_name=...)
at experiencelog.cpp:296
#2 0x08116ce5 in ExperienceWindow::qt_invoke (this=0x8468888, _id=60,
_o=0xbfffc26c) at experiencelog.moc:118
#3 0xb7b5263a in QObject::activate_signal(QConnectionList*, QUObject*) ()
from /usr/qt/3//lib/libqt-mt.so.3
#4 0x081245fc in Player::expGained (this=0x84791d8, t0=..., t1=21, t2=0,
t3=...) at player.moc:596
#5 0x0812570d in Player::updateExp (this=0x84791d8, data=0x8a79575 "\301")
at player.cpp:669
#6 0x0812a04f in Player::qt_invoke (this=0x84791d8, _id=15, _o=0xbfffc420)
at player.moc:737
#7 0xb7b5263a in QObject::activate_signal(QConnectionList*, QUObject*) ()
from /usr/qt/3//lib/libqt-mt.so.3
#8 0x08091cdf in EQPacketDispatch::signal (this=0x84d0b80,
t0=0x8a79575 "\301", t1=8, t2=2 '\002') at packetinfo.moc:99
#9 0x0808f00d in EQPacketStream::dispatchPacket (this=0x837e2d0,
data=0x8a79575 "\301", len=8, opCode=1365, opcodeEntry=0x844c460)
at packetstream.cpp:435
#10 0x0808f802 in EQPacketStream::processPacket (this=0x837e2d0, packet=...,
isSubpacket=true) at packetstream.cpp:713
#11 0x0808fae2 in EQPacketStream::processPacket (this=0x837e2d0, packet=...,
isSubpacket=true) at packetstream.cpp:801
#12 0x0808f900 in EQPacketStream::processPacket (this=0x837e2d0, packet=...,
isSubpacket=false) at packetstream.cpp:653
#13 0x08090348 in EQPacketStream::handlePacket (this=0x837e2d0, packet=...)
at packetstream.cpp:566
#14 0x0809951e in EQPacket::dispatchPacket (this=0x82de858, packet=...)
at packet.cpp:659
#15 0x08099665 in dispatchPacket (this=0x82de858) at packet.cpp:583
#16 EQPacket::processPackets (this=0x82de858) at packet.cpp:400
#17 0x0809c508 in EQPacket::qt_invoke (this=0x82de858, _id=2, _o=0xbfffe898)
at packet.moc:577
#18 0xb7b5263a in QObject::activate_signal(QConnectionList*, QUObject*) ()
from /usr/qt/3//lib/libqt-mt.so.3
#19 0xb7b547a8 in QObject::activate_signal(int) ()
from /usr/qt/3//lib/libqt-mt.so.3
#20 0xb7eaec29 in QTimer::timeout() () from /usr/qt/3//lib/libqt-mt.so.3
#21 0xb7b76fce in QTimer::event(QEvent*) () from /usr/qt/3//lib/libqt-mt.so.3
#22 0xb7aed55f in QApplication::internalNotify(QObject*, QEvent*) ()
from /usr/qt/3//lib/libqt-mt.so.3
#23 0xb7aee86b in QApplication::notify(QObject*, QEvent*) ()
from /usr/qt/3//lib/libqt-mt.so.3
#24 0xb7ae30ca in QEventLoop::activateTimers() ()
from /usr/qt/3//lib/libqt-mt.so.3
#25 0xb7a99ec8 in QEventLoop::processEvents(unsigned int) ()
from /usr/qt/3//lib/libqt-mt.so.3
#26 0xb7b061d0 in QEventLoop::enterLoop() () from /usr/qt/3//lib/libqt-mt.so.3
#27 0xb7b06056 in QEventLoop::exec() () from /usr/qt/3//lib/libqt-mt.so.3
#28 0xb7aedbaf in QApplication::exec() () from /usr/qt/3//lib/libqt-mt.so.3
#29 0x0806a29b in main (argc=1, argv=0xbffff4a4) at main.cpp:723

sammie
05-28-2011, 05:44 PM
Be sure to comment out all the group related opcodes in /usr/local/share/showeq/zoneopcodes.xml.