Page 1 of 2

[FIXED][Bug] Client Crash on Revive

Posted: Sun Jan 22, 2012 4:48 pm
by TILT
Posting this bug here for now. When attempting to report the bug while in-game, the chat window shows "error" upon sending the report.

Category: Mechanics

SubCategory: Other

Causes a crash: Causes Crash

Reproducible: Always Happens

Bug: Client crashes after selecting a revive point and produces a fatal error message.

To replicate this bug the player only needs to die (sometimes more than once) at which point they will be given a choice for revive locations. Upon selection, the fatal error pops and the client crashes.

Note: This bug was produced on EQ2Emulator public server (1-22-2012) using client version 6118L.

Here is the fatal error pop-up:

Re: [Bug] Client Crash on Revive

Posted: Sun Jan 22, 2012 5:02 pm
by John Adams
Thanks, TILT. Scat and I saw this last night, before I saw you mention working in "Revive Points"... so now this becomes fairly urgent to fix, or you can't do your work ;)

I'll take a look at it right now, but might need the Scatmasta's help.

Re: [Bug] Client Crash on Revive

Posted: Sun Jan 22, 2012 5:30 pm
by TILT
Sounds good. Thanks for looking into this.

Re: [Bug] Client Crash on Revive

Posted: Mon Jan 23, 2012 1:25 am
by Scatman
Yeah I believe this has been a long haunting bug. Let's squash her.

Re: [Bug] Client Crash on Revive

Posted: Tue Jan 24, 2012 5:54 am
by TILT
I'm not sure if this will help pinpoint where the problem occurs, but I noticed this bug doesn't seem to happen when the revive point selected sends the player to another zone. It only seems to happen when the revive point is within the current zone the player has died in.

Edit: Actually just manually zoning anywhere the bug will not occur until after the first death in the same zone.

Re: [Bug] Client Crash on Revive

Posted: Thu Jan 26, 2012 9:50 pm
by TILT
TILT wrote:Actually just manually zoning anywhere the bug will not occur until after the first death in the same zone.
I hate to quote myself here but I didn't want to edit my last post again and have this missed in the ongoing effort to find out what is causing this nasty bug. The above quoted statement is actually true when replicating the bug on SF client 6118L; however, this is not the case for DoV client 7628L which seems to crash regardless.

Re: [Bug] Client Crash on Revive

Posted: Fri Jan 27, 2012 8:38 am
by John Adams
TILT wrote:Posting this bug here for now. When attempting to report the bug while in-game, the chat window shows "error" upon sending the report.
TILT (and other Team Members), when you follow this link, do you see an "Add" button? If so, you can add bugs to the Bug Tracker from the website vs in-game, for cases such as this.

The module is in Test (with you guys) right now, and if it works okay, I can open it to the public.

Re: [Bug] Client Crash on Revive

Posted: Fri Jan 27, 2012 8:57 am
by TILT
John Adams wrote:TILT (and other Team Members), when you follow this link, do you see an "Add" button?
I do not see an "Add" button anywhere.

Re: [Bug] Client Crash on Revive

Posted: Fri Jan 27, 2012 8:59 am
by John Adams
Okay, I forgot I changed the damn groups all around, so I have to update the "allowed PHPBB groups" id's... damn, probably broke a lot by doing that :)

I'll have that fixed today.

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 11:09 am
by John Adams
Wow. HandlePlayerRevive() is quite a function. Check out all the packets that have to line up...
WS_ServerControlFlags
WS_Resurrected
WS_CancelMoveObjectMode
WS_TeleportWithinZone
WS_SetControlGhost
WS_SetPOVGhostCmd
Gonna find this sucker if it kills me... which I hope it doesn't, because I won't be able to revive without crashing :shock:

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 11:18 am
by TILT
I was thinking it may be one of those structs since in 6118L you can revive once in a zone without crashing but when using 7628L you crash immediately. It doesn't seem like this would relate directly to the code itself but I could be wrong.

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 11:49 am
by John Adams
And naturally, now that I've peppered the code with logs and printpackets, there is no crash. Going to attempt the Million Ways to Die and see if I can trap it, otherwise I'll put this code on our test servers and let anyone else attempt to die.

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 11:58 am
by TILT
John Adams wrote:And naturally, now that I've peppered the code with logs and printpackets, there is no crash.
Figures - lol!
John Adams wrote:'ll put this code on our test servers and let anyone else attempt to die.
Thanks for doing this as this bug is really annoying and would be a huge fix for stability! I look forward to testing more.

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 12:16 pm
by John Adams
Okay, here's my debug logging of this event. TILT is right, first death with the 6118L client seems to revive just fine. No revive points set, so it is using zone safe coords.

Both deaths are in an unpopulated zone (GM Hall) and using the /kill self command.

The OKAY death/revive:

Code: Select all

17:59:02 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 36 00 04 00 73 65 6C 66                            | 6...self
17:59:02 D Command: Handler: 54, COMMAND: 'kill'
17:59:02 D Command: Player 'John' (150), Command: kill
17:59:02 D Zone: ZoneServer::RemoveSpawnSupportFunctions
17:59:02 D Zone: ZoneServer::RemoveDeadEnemyList
17:59:02 D Zone: WS_HearDeath Packet:
Name: attacker          Index:  0       Type:  int32            Data:  01
Name: defender          Index:  0       Type:  int32            Data:  01
Name: damage_type       Index:  0       Type:  int8             Data:  00
Name: blow_type         Index:  0       Type:  int16            Data:  00
17:59:02 D Zone: DisplayDeadWindow()
17:59:02 D Client: WS_ServerControlFlags Packet (parameter1=8):
Name: parameter1        Index:  0       Type:  int8             Data:  08
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  01
17:59:02 D Client: WS_ServerControlFlags Packet (parameter1=16):
Name: parameter1        Index:  0       Type:  int8             Data:  16
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  01
17:59:02 D Client: WS_ServerUpdateTarget Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
Name: unknown   Index:  0       Type:  int8             Data:  00
17:59:02 D Client: SendPlayerDeathWindow
17:59:02 D Zone: ZoneServer::GetRevivePoints
17:59:02 D Zone: Got revive point in ZoneServer::GetRevivePoints!
17:59:02 W Zone: No Revive Points set for zoneID 1. Add some!
17:59:02 D Client: WS_DeathWindow Packet:
Name: location_count    Index:  0       Type:  int16            Data:  01
Array:  Data:
Name: location_id_0     Index:  0       Type:  int32            Data:  4294967295
Name: unknown2_0        Index:  0       Type:  int8             Data:  00
Name: zone_name_0       Index:  0       Type:  EQ2_16BitString  Data:  GM Playground
Name: location_name_0   Index:  0       Type:  EQ2_16BitString  Data:  Zone Safe Point
Name: choice_text_0     Index:  0       Type:  EQ2_16BitString  Data:
Name: distance_0        Index:  0       Type:  float            Data:  0
Name: unknown5          Index:  0       Type:  int8             Data:  00
Name: unknown5          Index:  1       Type:  int8             Data:  00
Name: unknown5          Index:  2       Type:  int8             Data:  00
17:59:02 D Zone: ZoneServer::RemoveSpawn
17:59:02 D Zone: ZoneServer::RemoveSpawnSupportFunctions
17:59:02 D Zone: ZoneServer::RemoveDeadEnemyList
17:59:02 D Zone: ZoneServer::RemoveDeadEnemyList
17:59:02 D Zone: Enter: ZoneServer::SendRemoveSpawn
17:59:02 D Zone: GetIndexForSpawn: 1, WasSpawnRemoved = false
17:59:02 D Zone: Has Packet (before):
Name: spawn_index       Index:  0       Type:  int16            Data:  00
Name: delete    Index:  0       Type:  int8             Data:  00
17:59:02 D Player: Remove Spawn 'John' (25176)
17:59:02 D Zone: player_spawn_id_map.erase()
17:59:02 D Zone: player_spawn_reverse_id_map.erase()
17:59:02 D Zone: Has Packet (after):
Name: spawn_index       Index:  0       Type:  int16            Data:  01
Name: delete    Index:  0       Type:  int8             Data:  01
17:59:02 D Zone: Exit True: ZoneServer::SendRemoveSpawn
Name: spawn_index       Index:  0       Type:  int16            Data:  01
Name: delete    Index:  0       Type:  int8             Data:  01
17:59:03 D Opcode: Opcode 0029 (41): OP_UpdateTargetMsg
17:59:03 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 09 01 00 00                                        | ....
17:59:03 D Command: Player 'John' (150), Command: clearallqueuedabilities
17:59:03 D Player: John left grid 4294967295 and entered grid 1000839081
17:59:10 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 35 00 0A 00 34 32 39 34 - 39 36 37 32 39 35        | 5...4294967295
17:59:10 D Command: Handler: 53, COMMAND: 'select_junction'
17:59:10 D Command: Player 'John' (150), Command: select_junction
17:59:10 D Client: WS_ServerControlFlags Packet (parameter1=8):
Name: parameter1        Index:  0       Type:  int8             Data:  08
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  00
17:59:10 D Client: WS_ServerControlFlags Packet (parameter1=16):
Name: parameter1        Index:  0       Type:  int8             Data:  16
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  00
17:59:10 D Client: WS_Resurrected Packet:
Name: unknown   Index:  0       Type:  int8             Data:  00
17:59:10 W Client: No Revive Point! Spawning player at safe coordinates!
17:59:10 D Client: Attempt Revive @ GM Playground, 665.43, -35.90, 1485.44, 0.00, HP: 40, Pow: 1, Zone Safe Point
17:59:11 D Client: WS_CancelMoveObjectMode Packet:
Name: unknown   Index:  0       Type:  int32            Data:  00
17:59:11 D Client: WS_TeleportWithinZone Packet:
Name: x         Index:  0       Type:  float            Data:  665.435
Name: y         Index:  0       Type:  float            Data:  -35.8975
Name: z         Index:  0       Type:  float            Data:  1485.44
17:59:11 D Client: WS_SetControlGhost Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
Name: speed     Index:  0       Type:  float            Data:  0
Name: size      Index:  0       Type:  float            Data:  0
Name: unknown2          Index:  0       Type:  int8             Data:  255
17:59:11 D Client: WS_SetPOVGhostCmd Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
17:59:11 D Zone: ZoneServer::RemoveSpawn
17:59:11 D Zone: ZoneServer::RemoveSpawnSupportFunctions
17:59:11 D Zone: ZoneServer::RemoveDeadEnemyList
17:59:11 D Zone: ZoneServer::RemoveDeadEnemyList
17:59:11 D Zone: Enter: ZoneServer::SendRemoveSpawn
17:59:11 D Zone: GetIndexForSpawn: 0, WasSpawnRemoved = true
17:59:11 D Zone: Exit False: ZoneServer::SendRemoveSpawn
Name: spawn_index       Index:  0       Type:  int16            Data:  00
Name: delete    Index:  0       Type:  int8             Data:  00
17:59:11 D Opcode: Opcode 0029 (41): OP_UpdateTargetMsg
17:59:11 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 09 01 00 00                                        | ....
17:59:11 D Command: Player 'John' (150), Command: clearallqueuedabilities
17:59:11 D Opcode: Opcode 000D (13): OP_DoneLoadingZoneResourcesMsg
17:59:12 D Opcode: Opcode 000F (15): OP_DoneLoadingEntityResourcesMsg
17:59:12 D Items: Loading items for character 'John' (2)
17:59:12 D Player: Getting current title index for player 'John'...
17:59:12 D Player:      Prefix Index: -1
17:59:12 D Player: Getting current title index for player 'John'...
17:59:12 D Player:      Suffix Index: -1
17:59:12 D Merchant: Loading Buyback - Player: 2
17:59:12 D Opcode: Opcode 0010 (16): OP_PredictionUpdateMsg
17:59:13 D Packet: Unable to convert EQ opcode 0X00B3 to an emu opcode.
17:59:13 D Opcode: Opcode 0000 (0): Unknown in ..\..\source\WorldServer\client.cpp
17:59:13 D Opcode: OP_Unknown Received 00B3 (179)
17:59:13 D Opcode: Opcode 0029 (41): OP_UpdateTargetMsg
17:59:13 D Opcode: Opcode 00B5 (181): OP_SignalMsg
17:59:13 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 09 01 00 00                                        | ....
17:59:13 D Command: Player 'John' (150), Command: clearallqueuedabilities
17:59:13 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 25 00 01 00 30                                     | %...0
17:59:13 D Command: Handler: 37, COMMAND: 'autoattack'
17:59:13 D Command: Player 'John' (150), Command: autoattack
17:59:13 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 23 00 01 00 31                                     | #...1
17:59:13 D Command: Handler: 35, COMMAND: 'enablequeuedabilities'
17:59:13 D Command: Player 'John' (150), Command: enablequeuedabilities
17:59:22 D Player: John left grid 4294967295 and entered grid 1000839081

The 2nd Death, crashes client with ProxyActor (proximity code?)

Code: Select all

18:00:30 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 36 00 04 00 73 65 6C 66                            | 6...self
18:00:30 D Command: Handler: 54, COMMAND: 'kill'
18:00:30 D Command: Player 'John' (150), Command: kill
18:00:30 D Zone: ZoneServer::RemoveSpawnSupportFunctions
18:00:30 D Zone: ZoneServer::RemoveDeadEnemyList
18:00:30 D Zone: WS_HearDeath Packet:
Name: attacker          Index:  0       Type:  int32            Data:  00
Name: defender          Index:  0       Type:  int32            Data:  00
Name: damage_type       Index:  0       Type:  int8             Data:  00
Name: blow_type         Index:  0       Type:  int16            Data:  00
18:00:30 D Zone: DisplayDeadWindow()
18:00:30 D Client: WS_ServerControlFlags Packet (parameter1=8):
Name: parameter1        Index:  0       Type:  int8             Data:  08
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  01
18:00:30 D Client: WS_ServerControlFlags Packet (parameter1=16):
Name: parameter1        Index:  0       Type:  int8             Data:  16
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  01
18:00:30 D Client: WS_ServerUpdateTarget Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
Name: unknown   Index:  0       Type:  int8             Data:  00
18:00:30 D Client: SendPlayerDeathWindow
18:00:30 D Zone: ZoneServer::GetRevivePoints
18:00:30 D Zone: Got revive point in ZoneServer::GetRevivePoints!
18:00:30 W Zone: No Revive Points set for zoneID 1. Add some!
18:00:30 D Client: WS_DeathWindow Packet:
Name: location_count    Index:  0       Type:  int16            Data:  01
Array:  Data:
Name: location_id_0     Index:  0       Type:  int32            Data:  4294967295
Name: unknown2_0        Index:  0       Type:  int8             Data:  00
Name: zone_name_0       Index:  0       Type:  EQ2_16BitString  Data:  GM Playground
Name: location_name_0   Index:  0       Type:  EQ2_16BitString  Data:  Zone Safe Point
Name: choice_text_0     Index:  0       Type:  EQ2_16BitString  Data:
Name: distance_0        Index:  0       Type:  float            Data:  0
Name: unknown5          Index:  0       Type:  int8             Data:  00
Name: unknown5          Index:  1       Type:  int8             Data:  00
Name: unknown5          Index:  2       Type:  int8             Data:  00
18:00:30 D Opcode: Opcode 0029 (41): OP_UpdateTargetMsg
18:00:30 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 09 01 00 00                                        | ....
18:00:30 D Command: Player 'John' (150), Command: clearallqueuedabilities
18:00:30 D Zone: ZoneServer::RemoveSpawn
18:00:30 D Zone: ZoneServer::RemoveSpawnSupportFunctions
18:00:30 D Zone: ZoneServer::RemoveDeadEnemyList
18:00:30 D Zone: ZoneServer::RemoveDeadEnemyList
18:00:30 D Zone: Enter: ZoneServer::SendRemoveSpawn
18:00:30 D Zone: GetIndexForSpawn: 2, WasSpawnRemoved = false
18:00:30 D Zone: Has Packet (before):
Name: spawn_index       Index:  0       Type:  int16            Data:  00
Name: delete    Index:  0       Type:  int8             Data:  00
18:00:30 D Player: Remove Spawn 'John' (25176)
18:00:30 D Zone: player_spawn_id_map.erase()
18:00:30 D Zone: player_spawn_reverse_id_map.erase()
18:00:30 D Zone: Has Packet (after):
Name: spawn_index       Index:  0       Type:  int16            Data:  02
Name: delete    Index:  0       Type:  int8             Data:  01
18:00:30 D Zone: Exit True: ZoneServer::SendRemoveSpawn
Name: spawn_index       Index:  0       Type:  int16            Data:  02
Name: delete    Index:  0       Type:  int8             Data:  01
18:00:37 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 35 00 0A 00 34 32 39 34 - 39 36 37 32 39 35        | 5...4294967295
18:00:37 D Command: Handler: 53, COMMAND: 'select_junction'
18:00:37 D Command: Player 'John' (150), Command: select_junction
18:00:37 D Client: WS_ServerControlFlags Packet (parameter1=8):
Name: parameter1        Index:  0       Type:  int8             Data:  08
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  00
18:00:37 D Client: WS_ServerControlFlags Packet (parameter1=16):
Name: parameter1        Index:  0       Type:  int8             Data:  16
Name: parameter2        Index:  0       Type:  int8             Data:  00
Name: parameter3        Index:  0       Type:  int8             Data:  00
Name: parameter4        Index:  0       Type:  int8             Data:  00
Name: parameter5        Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  0       Type:  int8             Data:  00
Name: unknown   Index:  1       Type:  int8             Data:  00
Name: unknown   Index:  2       Type:  int8             Data:  00
Name: value     Index:  0       Type:  int8             Data:  00
18:00:37 D Client: WS_Resurrected Packet:
Name: unknown   Index:  0       Type:  int8             Data:  00
18:00:37 W Client: No Revive Point! Spawning player at safe coordinates!
18:00:37 D Client: Attempt Revive @ GM Playground, 665.43, -35.90, 1485.44, 0.00, HP: 40, Pow: 1, Zone Safe Point
18:00:37 D Client: WS_CancelMoveObjectMode Packet:
Name: unknown   Index:  0       Type:  int32            Data:  00
18:00:37 D Client: WS_TeleportWithinZone Packet:
Name: x         Index:  0       Type:  float            Data:  665.435
Name: y         Index:  0       Type:  float            Data:  -35.8975
Name: z         Index:  0       Type:  float            Data:  1485.44
18:00:37 D Client: WS_SetControlGhost Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
Name: speed     Index:  0       Type:  float            Data:  0
Name: size      Index:  0       Type:  float            Data:  0
Name: unknown2          Index:  0       Type:  int8             Data:  255
18:00:37 D Client: WS_SetPOVGhostCmd Packet:
Name: spawn_id          Index:  0       Type:  int32            Data:  4294967295
18:00:37 D Zone: ZoneServer::RemoveSpawn
18:00:37 D Zone: ZoneServer::RemoveSpawnSupportFunctions
18:00:37 D Zone: ZoneServer::RemoveDeadEnemyList
18:00:37 D Zone: ZoneServer::RemoveDeadEnemyList
18:00:37 D Zone: Enter: ZoneServer::SendRemoveSpawn
18:00:37 D Zone: GetIndexForSpawn: 0, WasSpawnRemoved = true
18:00:37 D Zone: Exit False: ZoneServer::SendRemoveSpawn
Name: spawn_index       Index:  0       Type:  int16            Data:  00
Name: delete    Index:  0       Type:  int8             Data:  00
18:00:37 D Opcode: Opcode 0029 (41): OP_UpdateTargetMsg
18:00:37 D Opcode: Opcode 0011 (17): OP_RemoteCmdMsg
   0: 09 01 00 00                                        | ....
18:00:37 D Command: Player 'John' (150), Command: clearallqueuedabilities
18:00:37 D Opcode: Opcode 00B5 (181): OP_SignalMsg
18:00:37 D Opcode: Opcode 000D (13): OP_DoneLoadingZoneResourcesMsg
18:00:38 D Opcode: Opcode 000F (15): OP_DoneLoadingEntityResourcesMsg
18:00:38 D Items: Loading items for character 'John' (2)
18:00:38 D Player: Getting current title index for player 'John'...
18:00:38 D Player:      Prefix Index: -1
18:00:38 D Player: Getting current title index for player 'John'...
18:00:38 D Player:      Suffix Index: -1
18:00:38 D Merchant: Loading Buyback - Player: 2
18:01:24 D World: Timeout up!, state=
18:01:25 D Zone: ZoneServer::RemoveSpawn
18:01:25 D Zone: ZoneServer::RemoveSpawnSupportFunctions
18:01:25 D Zone: ZoneServer::RemoveDeadEnemyList
18:01:25 D Zone: ZoneServer::RemoveDeadEnemyList
18:01:25 I Zone: Scheduling client 'John' for removal.
18:01:25 D Player: Toggling Character OFFLINE!
18:01:34 D World: Timeout up!, state=
18:01:39 D World: Timeout up!, state=
18:01:39 D World: Removing connection...
Unless I am missing something, these 2 deaths look identical.
With better placement of packet->PrintPacket() statements, I do start seeing differences. Help me look these two dumps over, see if we can figure this thing out.


Btw, this is the only place this function is called in the entire World:

Code: Select all

		case COMMAND_SELECT_JUNCTION:{
			LogWrite(MISC__TODO, "TODO", "For access/travel selections (i.e. Mariner Bells, Player Death Window, etc.)\n\t(%s, function: %s, line #: %i)", __FILE__, __FUNCTION__, __LINE__);
			int32 choice = 0;
			if(sep && sep->arg[0] && sep->IsNumber(0))
				choice = atoul(sep->arg[0]);
			if(client->GetPlayer()->GetHP() == 0){ //dead and this is a revive request
				client->HandlePlayerRevive(choice);
			}
			break;
									 }

Edit: Updated the blocks of code a few times, after getting better placement of my printpackets.

Re: [Bug] Client Crash on Revive

Posted: Wed Feb 01, 2012 4:50 pm
by John Adams
I have spent the entire day, and I do not exaggerate, ask Xinux... trying to chase this down. There are so many threads running in so many directions, I cannot figure out how to properly debug this.

So once again, I fall to the mercy of Scatman (or other savvy C++ devs) to try and find the answer to this problem. With the 6118 client and a brand spanking new fresh database, you can crash your client every time you die once, revive, die again, revive again, crash.

Should be simple for you smart guys to figure out.