MantisBT - VCMI
View Issue Details
0002384VCMIOtherpublic2016-01-18 18:212016-09-04 08:14
anonymous1 
AVS 
normalminoralways
resolvedfixed 
GNU/Linux 4.2.8-300.fc23.x86_64Fedora23
0.98f 
0.99 
0002384: game crash on load save game
(gdb) bt full
#0 0x00007fffc8000098 in ?? ()
No symbol table info available.
#1 0x00007ffff7849076 in CBonusSystemNode::propagateBonus (this=this@entry=0x7fffcbb45e98, b=0x7fffcbafd570) at /usr/src/debug/vcmi-0.98f/lib/HeroBonus.cpp:830
        lchildren = std::set with 140736605091712 elements<error reading variable: Cannot access memory at address 0x18>
0000002 0x00007ffff7849342 in CBonusSystemNode::newRedDescendant (this=this@entry=0x7fffcbafd688, descendant=0x7fffcbb45e98) at /usr/src/debug/vcmi-0.98f/lib/HeroBonus.cpp:942
        b = <optimized out>
        __for_range = @0x7fffcbafd6b0: {bonuses = std::vector of length 1, capacity 1 = {0x7fffcbafd570}, belongsToTree = false}
        lparents = std::set with 140736610686600 elements<error reading variable: Cannot access memory at address 0x48e8894810894813>
0000003 0x00007ffff7849439 in CBonusSystemNode::attachTo (this=0x7fffcbafd688, parent=<optimized out>, parent@entry=0x7fffcbb45e98) at /usr/src/debug/vcmi-0.98f/lib/HeroBonus.cpp:735
No locals.
0000004 0x00007ffff78ba1fc in CGameState::buildGlobalTeamPlayerTree (this=this@entry=0x7fffcb5a7780) at /usr/src/debug/vcmi-0.98f/lib/CGameState.cpp:2746
        p = <optimized out>
        teamMember = <optimized out>
        __for_range = std::set with 1 elements = {[0] = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'}, static CANNOT_DETERMINE = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'},
              static CANNOT_DETERMINE = <same as static member of an already seen type>, static UNFLAGGABLE = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'},
                static CANNOT_DETERMINE = <same as static member of an already seen type>, static UNFLAGGABLE = <same as static member of an already seen type>,
                static NEUTRAL = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'}, static CANNOT_DETERMINE = <same as static member of an already seen type>,
                  static UNFLAGGABLE = <same as static member of an already seen type>, static NEUTRAL = <same as static member of an already seen type>,
                  static PLAYER_LIMIT = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'}, static CANNOT_DETERMINE = <same as static member of an already seen type>,
                    static UNFLAGGABLE = <same as static member of an already seen type>, static NEUTRAL = <same as static member of an already seen type>,
                    static PLAYER_LIMIT = <same as static member of an already seen type>}}, static PLAYER_LIMIT = <same as static member of an already seen type>},
              static NEUTRAL = <same as static member of an already seen type>, static PLAYER_LIMIT = <same as static member of an already seen type>},
            static UNFLAGGABLE = <same as static member of an already seen type>, static NEUTRAL = <same as static member of an already seen type>,
            static PLAYER_LIMIT = <same as static member of an already seen type>}}
        t = 0x7fffcbb45e98
        k = {first = {<BaseForID<TeamID, unsigned char>> = {num = 0 '\000'}, static NO_TEAM = {<BaseForID<TeamID, unsigned char>> = {num = 0 '\000'},
              static NO_TEAM = <same as static member of an already seen type>}}, second = {<CBonusSystemNode> = {<IBonusBearer> = {_vptr.IBonusBearer = <vtable for TeamState+16>}, bonuses = {
                bonuses = std::vector of length 0, capacity 0, belongsToTree = false}, exportedBonuses = {bonuses = std::vector of length 0, capacity 0, belongsToTree = false},
              parents = std::vector of length 1, capacity 1 = {}, children = std::vector of length 0, capacity 0, nodeType = CBonusSystemNode::TEAM, description = "", static cachingEnabled = true,
              cachedBonuses = {bonuses = std::vector of length 0, capacity 0, belongsToTree = false}, cachedLast = 0, static treeChanged = 84459, cachedRequests = std::map with 0 elements},
            id = {<BaseForID<TeamID, unsigned char>> = {num = 0 '\000'}, static NO_TEAM = {<BaseForID<TeamID, unsigned char>> = {num = 0 '\000'},
                static NO_TEAM = <same as static member of an already seen type>}}, players = std::set with 1 elements = {[0] = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'},
                static CANNOT_DETERMINE = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'}, static CANNOT_DETERMINE = <same as static member of an already seen type>,
                  static UNFLAGGABLE = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'}, static CANNOT_DETERMINE = <same as static member of an already seen type>,
                    static UNFLAGGABLE = <same as static member of an already seen type>, static NEUTRAL = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'},
                      static CANNOT_DETERMINE = <same as static member of an already seen type>, static UNFLAGGABLE = <same as static member of an already seen type>,
                      static NEUTRAL = <same as static member of an already seen type>, static PLAYER_LIMIT = {<BaseForID<PlayerColor, unsigned char>> = {num = 0 '\000'},
                        static CANNOT_DETERMINE = <same as static member of an already seen type>, static UNFLAGGABLE = <same as static member of an already seen type>,
                        static NEUTRAL = <same as static member of an already seen type>, static PLAYER_LIMIT = <same as static member of an already seen type>}},
                    static PLAYER_LIMIT = <same as static member of an already seen type>}, static NEUTRAL = <same as static member of an already seen type>,
                  static PLAYER_LIMIT = <same as static member of an already seen type>}, static UNFLAGGABLE = <same as static member of an already seen type>,
                static NEUTRAL = <same as static member of an already seen type>, static PLAYER_LIMIT = <same as static member of an already seen type>}}, fogOfWarMap = std::vector of length 72, capacity 72 = {
              std::vector of length 72, capacity 72 = {std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
---Type <return> to continue, or q <return> to quit---
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}}, std::vector of length 72, capacity 72 = {std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}}, std::vector of length 72, capacity 72 = {
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
                std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'}, std::vector of length 2, capacity 2 = {1 '\001', 0 '\000'},
---Type <return> to continue, or q <return> to quit---std::vector of Quit
(gdb)
1) run vcmiclient
2) load save game Autosave_2
No tags attached.
duplicate of 0002314closed AVS Crashes related to bonus system in deserializationFix 
? Autosave_2.tar.xz (607,264) 2016-01-18 18:21
https://bugs.vcmi.eu/file_download.php?file_id=2429&type=bug
Issue History
2016-01-18 18:21anonymous1New Issue
2016-01-18 18:21anonymous1File Added: Autosave_2.tar.xz
2016-01-18 18:34SXXRelationship addedduplicate of 0002314
2016-01-18 18:37SXXNote Added: 0006302
2016-09-04 08:14SXXNote Added: 0006614
2016-09-04 08:14SXXStatusnew => resolved
2016-09-04 08:14SXXFixed in Version => 0.99
2016-09-04 08:14SXXResolutionopen => fixed
2016-09-04 08:14SXXAssigned To => AVS

Notes
(0006302)
SXX   
2016-01-18 18:37   
This problem is already fixed, but it's not yet merged into mainline as it's will break save format. Fix going to be included with next stable release.
(0006614)
SXX   
2016-09-04 08:14   
Fixed by PR202. For more details or comments please check 0002314