View Issue Details

IDProjectCategoryView StatusLast Update
0000548Gameplay + OpenGL[All Projects] Bugpublic2017-04-08 17:06
ReporterSpie812 
Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
PlatformOSWindowsOS Version7, 8.1, 10
Summary0000548: Hitting multiple players with BFG hitscans causes a crash.
DescriptionUsing GZDoom version 2.4.0
Had this happen multiple times playing multiplayer.
Shooting the BFG and hitting multiple (2 or more) players with the tracers crashes GZDoom.
It works with both real players and with bots.
In a Multiplayer LAN game, GZDoom crashes all computers in the game.
Steps To ReproduceIt seems pretty self-explanatory to me, but I'll leave my config attached if for some reason that helps.
TagsGZDoom, Multiplayer

Relationships

Activities

Spie812

Spie812

2017-04-06 20:05

reporter  

gzdoom-Spie812.ini (43,986 bytes)
Spie812

Spie812

2017-04-06 20:21

reporter   ~0001266

Works in deathmatch, not coop
_mental_

_mental_

2017-04-07 02:35

developer   ~0001267

Using 2.4.0 the crash is present but I can't reproduce it with the latest devbuild.
Could you please download the recent version from here and give it a try?
Spie812

Spie812

2017-04-07 13:22

reporter   ~0001273

using gzdoom-2.5pre-273-gb1e1f25, the most recent version right now, I was still able to reproduce the crash.

Crash: https://www.youtube.com/watch?v=o6-jJkPDFRE
Graf Zahl

Graf Zahl

2017-04-07 13:55

administrator   ~0001274

That looks like a stack overflow caused by some infinite recursion.
_mental_

_mental_

2017-04-07 13:59

developer   ~0001275

Yes, it's something with obituary messages. It happened only on maint2.4 branch for me but apparently the issue is still there. I'll check it again on master a bit later.
_mental_

_mental_

2017-04-08 03:38

developer   ~0001279

Last edited: 2017-04-08 03:38

View 2 revisions

An infinite recursion was introduced in this commit.
To fix the recursion itself this part can be rewritten as
if (inflictor != NULL && inflictor.Obituary.Length() > 0)
{
    message = inflictor.Obituary;
}

Although I have some problems with matching old and new code. Old version of ClientObituary() did more things which were partly moved to Actor.GetObituary() function. Probably I'm just missing something.

Graf Zahl

Graf Zahl

2017-04-08 10:53

administrator   ~0001281

That would pretty much break the entire intent here, i.e. allowing to override GetObituary.
The actual condition that causes the recursion needs to be identified and properly handled.
_mental_

_mental_

2017-04-08 13:10

developer   ~0001282

Last edited: 2017-04-08 13:20

View 2 revisions

attacker and inflictor are the same object in ClientObituary() function on C++ side. This is the real cause of infinite recursion. I have no clear vision how resolve it. Is it enough just to compare them for inequality?

Issue History

Date Modified Username Field Change
2017-04-06 20:05 Spie812 New Issue
2017-04-06 20:05 Spie812 File Added: gzdoom-Spie812.ini
2017-04-06 20:05 Spie812 Tag Attached: GZDoom
2017-04-06 20:05 Spie812 Tag Attached: Multiplayer
2017-04-06 20:21 Spie812 Note Added: 0001266
2017-04-07 02:35 _mental_ Status new => feedback
2017-04-07 02:35 _mental_ Note Added: 0001267
2017-04-07 13:22 Spie812 Note Added: 0001273
2017-04-07 13:22 Spie812 Status feedback => new
2017-04-07 13:55 Graf Zahl Note Added: 0001274
2017-04-07 13:59 _mental_ Note Added: 0001275
2017-04-08 02:14 _mental_ Status new => confirmed
2017-04-08 03:38 _mental_ Note Added: 0001279
2017-04-08 03:38 _mental_ Note Edited: 0001279 View Revisions
2017-04-08 10:53 Graf Zahl Note Added: 0001281
2017-04-08 13:10 _mental_ Note Added: 0001282
2017-04-08 13:20 _mental_ Note Edited: 0001282 View Revisions
2017-04-08 17:06 Graf Zahl Status confirmed => resolved
2017-04-08 17:06 Graf Zahl Resolution open => fixed