azerothcore / azerothcore/mod-autobalance

Crash: mod-autobalance crash in _IsSummonCloneOfSummoner during respawn of transport NPC.

Open
#222 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
160
Forks
141
PR merge metrics
No merged PRs in 30d

Description

### Current Behaviour

The worldserver crashed with a C0000005 ACCESS_VIOLATION after a creature respawn was triggered.

The crash occurred inside mod-autobalance while AutoBalance was processing creature level/attribute logic during Creature::Respawn().

[8bf01db8498f_worldserver.exe_\[26-5_6-13-9\].dmp](https://github.com/user-attachments/files/28285854/8bf01db8498f_worldserver.exe_.26-5_6-13-9.dmp)
[8bf01db8498f_worldserver.exe_\[26-5_6-13-9\].txt](https://github.com/user-attachments/files/28285853/8bf01db8498f_worldserver.exe_.26-5_6-13-9.txt)

**_Relevant crash path:_**
```
Object::GetUInt32Value()
AutoBalance_AllCreatureScript::_isSummonCloneOfSummoner()
AutoBalance_AllCreatureScript::ModifyCreatureAttributes()
AutoBalance_AllCreatureScript::OnCreatureSelectLevel()
Creature::SelectLevel()
Creature::Respawn()
misc_commandscript::HandleRespawnCommand()
```

**_The creature involved in the crash log was:_**
```
Entry: 31708
Name: Deathguard Barth
SubName: The Cloudkisser
SpawnId / guid: 142827
```

**_Database checks show that this NPC is spawned on map 610 with local transport-style coordinates:_**
```
guid: 142827
id: 31708
map: 610
zoneId: 0
areaId: 0
position_x: -2.74581
position_y: -1.47146
position_z: -17.7765
orientation: 4.67712
```

Additional database checks showed multiple NPCs with the subname "The Cloudkisser" on map 610, suggesting this creature is part of a zeppelin/transport context rather than a dungeon, or raid creature.

**_The crash log also showed a non-null summoner pointer, but the internal object value arrays were unreadable:_**
```
m_int32Values =
m_uint32Values =
m_floatValues =
m_inWorld = 0
```

This suggests AutoBalance may be attempting to read object fields from a creature/unit that is no longer in a safe world state, possibly related to transport handling, grid unload/reload state, or stale summon/summoner references.

### Expected Behaviour

AutoBalance should not crash when a transport NPC or transport-bound creature is respawned.

**_AutoBalance should safely ignore or return early when handling creatures, summons, or summoners that are:_**

- null
- not in world
- attached to a transport
- on transport maps
- partially removed or unloaded
- unsafe to inspect as summon/summoner references

The server should continue running normally, and the respawn command should complete without causing an access violation.

### Steps to reproduce the problem

1. Use AzerothCore rev. 8bf01db8498f 2026-05-24 04:18:34 -0300 (master branch) (Win64, RelWithDebInfo, Static) with mod-autobalance enabled.
2. **_Locate the transport NPC Deathguard Barth:_**
- **Entry:** 31708
- **Name:** Deathguard Barth
- **SubName:** The Cloudkisser
- **guid:** 142827
- **map:** 610
3. Trigger a creature respawn involving this NPC or transport NPCs from The Cloudkisser.
4. AutoBalance processes the creature through **OnCreatureSelectLevel()** during **Creature::Respawn()**.
5. In the crash case, AutoBalance reached **_IsSummonCloneOfSummoner()** and eventually calls **Object::GetUInt32Value()** on an unsafe object, causing an **ACCESS_VOILATION**.

**_Note:_** The crash may be state-dependent. After the original crash, manually going to the zeppelin and forcing a respawn again did not immediately reproduce the crash. This may depend on transport state, grid loading/unloading, creature world state, or stale summon/summoner data.

### Extra Notes

The crash appears to be caused by mod-autobalance processing a transport/zeppelin NPC during respawn handling, then attempting to inspect summon/summoner data without enough safety checks.

This does not appear to be a normal database spawn issue or a regular instance creature issue. The affected NPC is part of The Cloudkisser transport crew, which is located outside dungeons/raids.

### AutoBalance Debug Commands

_No response_

### AC rev. hash/commit

AzerothCore rev. 8bf01db8498f 2026-05-24 04:18:34 -0300 (master branch) (Win64, RelWithDebInfo, Static)

### Operating system

Windows 11

### Custom changes or Modules

List of enabled modules:
|- mod-1v1-arena
|- mod-ah-bot-plus
|- mod-ale
|- mod-aoe-loot
|- mod-assistant
|- mod-autobalance
|- mod-breaking-news-override
|- mod-easy-respawn
|- mod-fly-in-old-world
|- mod-junk-to-gold
|- mod-npc-services
|- mod-profession-experience
|- mod-starter-guild

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the crash path through AutoBalance_AllCreatureScript::_isSummonCloneOfSummoner(), ModifyCreatureAttributes(), and OnCreatureSelectLevel() during Creature::Respawn(). Review the supplied dump and text report, then reproduce the Deathguard Barth respawn if possible. Done means transport-related or unsafe summon/summoner states are ignored safely and the respawn command completes without an access violation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.