MantisBT - VCMI
View Issue Details
0000823VCMIMechanics - Objectspublic2011-09-28 07:212014-05-30 17:40
q4a 
Tow 
normalcrashalways
closedfixed 
WindowsWindows XPSP3
 
0.89 
0000823: Artifact "Vial of Dragon Blood" freeze game
Artifact "Vial of Dragon Blood" freeze game. No error, no log message, just sandglass. Tested on r2401, built with vc10 express.
1.Start any map.
2.Get all artifacts by cheat: vcmiforgeofnoldorking
3.Put on artifact "Vial of Dragon Blood".
4.Exit hero screen.
5.Double click on the same hero and you get frozen game.
No tags attached.
related to 0000764closed beegee Random crashes thanks to bonus system 
has duplicate 0000859closed Tow Golden Bow causes freeze when aiming at creatures 
Issue History
2011-09-28 07:21q4aNew Issue
2011-09-28 07:21q4aStatusnew => assigned
2011-09-28 07:21q4aAssigned To => Tow
2011-09-28 09:08WarmongerSeverityminor => crash
2011-09-29 00:30ubuntuxNote Added: 0002074
2012-02-18 18:10WarmongerRelationship addedrelated to 0000859
2012-02-20 20:55TowRelationship replacedhas duplicate 0000859
2012-03-01 23:31TowRelationship addedrelated to 0000764
2012-03-06 17:02TowNote Added: 0002287
2012-03-06 17:02TowStatusassigned => resolved
2012-03-06 17:02TowFixed in Version => 0.89
2012-03-06 17:02TowResolutionopen => fixed
2014-05-30 17:40beegeeStatusresolved => closed

Notes
(0002074)
ubuntux   
2011-09-29 00:30   
CBonusSystemNode::getAllBonuses takes a lock and recursively calls itself.

#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1 0x00007f9938668849 in _L_lock_953 () from /lib/libpthread.so.0
0000002 0x00007f993866866b in __pthread_mutex_lock (mutex=0x7f993b98d760) at pthread_mutex_lock.c:61
0000003 0x000000000051222a in boost::mutex::lock (this=0x7f993b98d760)
    at /usr/include/boost/thread/pthread/mutex.hpp:50
0000004 0x0000000000514174 in boost::unique_lock<boost::mutex>::lock (this=0x7f992a92ee90)
    at /usr/include/boost/thread/locks.hpp:349
0000005 0x00000000005140c1 in boost::unique_lock<boost::mutex>::unique_lock (this=0x7f992a92ee90, m_=...)
    at /usr/include/boost/thread/locks.hpp:227
0000006 0x00007f993b58d892 in CBonusSystemNode::getAllBonuses (this=0x3e9e168, selector=..., limit=..., root=0x0,
    cachingStr=...) at HeroBonus.cpp:488
0000007 0x00007f993b58c426 in IBonusBearer::getBonuses (this=0x3e9e168, selector=..., cachingStr=...)
    at HeroBonus.cpp:308
0000008 0x00007f993b58bd14 in IBonusBearer::hasBonus (this=0x3e9e168, selector=..., cachingStr=...)
    at HeroBonus.cpp:268
0000009 0x00007f993b58bf15 in IBonusBearer::hasBonusOfType (this=0x3e9e168, type=Bonus::DRAGON_NATURE, subtype=-1)
    at HeroBonus.cpp:280
0000010 0x00007f993b592aa5 in HasAnotherBonusLimiter::limit (this=0x7f992c438210, b=0x7f992c438230, node=...)
    at HeroBonus.cpp:1159
0000011 0x00007f993b58efc9 in CBonusSystemNode::isLimitedOnUs (this=0x3e9e168, b=0x7f992c438230) at HeroBonus.cpp:627
0000012 0x00007f993b59baba in boost::_mfi::cmf1<bool, CBonusSystemNode, Bonus*>::operator() (this=0x7f992a92f350,
    t=..., a1=0x7f992c438230) at /usr/include/boost/bind/mem_fn_template.hpp:237
0000013 0x00007f993b5996cf in boost::_bi::list2<boost::reference_wrapper<CBonusSystemNode const>, boost::arg<1> >::opera---Type <return> to continue, or q <return> to quit---
tor()<bool, boost::_mfi::cmf1<bool, CBonusSystemNode, Bonus*>, boost::_bi::list1<Bonus*&> > (this=0x7f992a92f360,
    f=..., a=...) at /usr/include/boost/bind/bind.hpp:303
0000014 0x00007f993b597222 in boost::_bi::bind_t<bool, boost::_mfi::cmf1<bool, CBonusSystemNode, Bonus*>, boost::_bi::list2<boost::reference_wrapper<CBonusSystemNode const>, boost::arg<1> > >::operator()<Bonus*> (this=0x7f992a92f350,
    a1=@0x7f992a92f320) at /usr/include/boost/bind/bind_template.hpp:32
0000015 0x00007f993b595646 in BonusList::remove_if<boost::_bi::bind_t<bool, boost::_mfi::cmf1<bool, CBonusSystemNode, Bonus*>, boost::_bi::list2<boost::reference_wrapper<CBonusSystemNode const>, boost::arg<1> > > > (this=0x3dbf2e0,
    pred=...) at HeroBonus.h:387
0000016 0x00007f993b58b610 in BonusList::limit (this=0x3dbf2e0, node=...) at HeroBonus.cpp:182
0000017 0x00007f993b58db54 in CBonusSystemNode::getAllBonuses (this=0x3e9e168, selector=..., limit=..., root=0x0,
    cachingStr=...) at HeroBonus.cpp:526
0000018 0x00007f993b58bc6e in IBonusBearer::valOfBonuses (this=0x3e9e168, selector=..., cachingStr=...)
    at HeroBonus.cpp:263
0000019 0x00007f993b58bb87 in IBonusBearer::valOfBonuses (this=0x3e9e168, type=Bonus::PRIMARY_SKILL, subtype=0)
    at HeroBonus.cpp:257
0000020 0x00007f993b58c7ec in IBonusBearer::Attack (this=0x3e9e168) at HeroBonus.cpp:352
0000021 0x00007f993b58cd52 in IBonusBearer::getPrimSkillLevel (this=0x3e9e168, id=0) at HeroBonus.cpp:403
0000022 0x00007f993b3a89a6 in InfoAboutHero::initFromHero (this=0x7f992a92f880, h=0x3e9e130, detailed=true)
    at CGameState.cpp:2621
0000023 0x00007f993b5a32e5 in CGameInfoCallback::getHeroInfo (this=0x4c6dc90, hero=0x3e9e130, dest=...)
    at IGameCallback.cpp:725
0000024 0x000000000071bdcd in CPlayerInterface::infoWin (this=0x4c6dce0, specific=0x3e9e130)
    at CPlayerInterface.cpp:397
.....
(0002287)
Tow   
2012-03-06 17:02   
Fixed in r2581.