Opened 6 years ago

Closed 6 years ago

#5073 closed defect (fixed)

Segfault when destroying a Kush gate

Reported by: elexis Owned by: Stan
Priority: Release Blocker Milestone: Alpha 23
Component: Core engine Keywords:
Cc: Patch:

Description

fpre noticed in an SP match after the jebel barkal kushite wall commit that the game can segfault on that map.

When we played it in MP, all of us got a segfault. ` (22:24:01) Dunedan: It crashed exactly at the time when my rams destroyed the first of gaias gates. Don't know if that's just a coincidence or not. (22:27:34) smiley: wait, Dunedan i just crashed exactly when gate destroyed. `

It is entirely reproducible to get a segfault by constructing a kushite gate and delecting it.

The segfault is not reproducible in nonvisual replay mode, so it is a graphics bug.

gdb reveals:

Thread 1 "pyrogenesis" received signal SIGSEGV, Segmentation fault.
CObjectManager::FindObjectBase (this=0x2e34ba0, objectname=...) at ../../../source/graphics/ObjectManager.cpp:67
67	{
(gdb) info stack
#0  CObjectManager::FindObjectBase (this=0x2e34ba0, objectname=...) at ../../../source/graphics/ObjectManager.cpp:67
#1  0x0000000000832ef3 in CObjectBase::CalculateRandomRemainingSelections (this=this@entry=0x3161820, rng=..., initialSelections=std::vector of length 2, capacity 2 = {...})
    at ../../../source/graphics/ObjectBase.cpp:598
#2  0x0000000000833134 in CObjectBase::CalculateRandomRemainingSelections (this=this@entry=0x315a2f0, rng=..., initialSelections=std::vector of length 2, capacity 2 = {...})
    at ../../../source/graphics/ObjectBase.cpp:605
#3  0x0000000000833134 in CObjectBase::CalculateRandomRemainingSelections (this=this@entry=0x3161820, rng=..., initialSelections=std::vector of length 2, capacity 2 = {...})
    at ../../../source/graphics/ObjectBase.cpp:605

...

    at ../../../source/graphics/ObjectBase.cpp:605
#27 0x0000000000833134 in CObjectBase::CalculateRandomRemainingSelections (this=this@entry=0x3161820, rng=..., initialSelections=std::vector of length 2, capacity 2 = {...})
    at ../../../source/graphics/ObjectBase.cpp:605
#28 0x0000000000833134 in CObjectBase::CalculateRandomRemainingSelections (this=this@entry=0x315a2f0, rng=..., initialSelections=std::vector of length 2, capacity 2 = {...})
    at ../../../source/graphics/ObjectBase.cpp:605

So it most likely is an infinite loop.

Change History (2)

comment:1 by Stan, 6 years ago

Owner: set to Stan

comment:2 by Stan, 6 years ago

Resolution: fixed
Status: newclosed

Fixed in r21558 (rP21558)

Note: See TracTickets for help on using tickets.