SFTtech / openage

Free (as in freedom) open source clone of the Age of Empires II engine 🚀
http://openage.dev
Other
12.73k stars 1.12k forks source link

Freeze when gathering #274

Closed dbrgn closed 9 years ago

dbrgn commented 9 years ago

Steps to reproduce:

  1. Start openage
  2. Create some berry bushes
  3. Create some villagers
  4. Enter actions mode
  5. Select villagers
  6. Right click berries

The entire openage game freezes.

Last log output:

DBG [Unit 5] invoke gather action
rnestler commented 9 years ago

Could reproduce it freezes immediately. Here's the stacktrace:

0   std::__detail::_Hash_code_base<openage::coord::phys3, std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>, std::__detail::_Select1st, std::hash<openage::coord::phys3>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, true>::_M_bucket_index(std::__detail::_Hash_node<std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>, true> const*, unsigned long) const          0x72d163    
1   std::_Hashtable<openage::coord::phys3, std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>, std::allocator<std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>>, std::__detail::_Select1st, std::equal_to<openage::coord::phys3>, std::hash<openage::coord::phys3>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>>::_M_bucket_index(std::__detail::_Hash_node<std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>, true>*) const          0x72c4d3    
2   std::_Hashtable<openage::coord::phys3, std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>, std::allocator<std::pair<openage::coord::phys3 const, std::shared_ptr<openage::path::Node>>>, std::__detail::_Select1st, std::equal_to<openage::coord::phys3>, std::hash<openage::coord::phys3>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>>::count(openage::coord::phys3 const&) const          0x72b894    
3   std::unordered_map<openage::coord::phys3, std::shared_ptr<openage::path::Node>>::count(openage::coord::phys3 const&) const          0x72acd3    
4   openage::path::Node::get_neighbors(std::unordered_map<openage::coord::phys3, std::shared_ptr<openage::path::Node>> const&, float)           0x730595    
5   openage::path::a_star(openage::coord::phys3, std::function<bool (openage::coord::phys3 const&)>, std::function<float (openage::coord::phys3 const&)>, std::function<bool (openage::coord::phys3 const&)>)           0x7281fb    
6   openage::path::find_nearest(openage::TerrainObject*, std::function<bool (openage::TerrainObject const*)>)           0x727d63    
7   openage::GatherAction::GatherAction(openage::Unit*, openage::UnitReference)         0x74fc31    
8   std::_MakeUniq<openage::GatherAction>::__single_object std::make_unique<openage::GatherAction, openage::Unit*, openage::UnitReference>(openage::Unit*&&, openage::UnitReference&&)          0x74b9dd    
9   openage::GatherAbility::invoke(openage::Unit&, openage::Command const&, bool)           0x749e36    
10  openage::Unit::invoke(openage::Command const&, bool)            0x774d21    
11  openage::UnitSelection::all_invoke(openage::Command&)           0x76fb46    
12  openage::GameMain::on_input(SDL_Event*)         0x6a0a20    
13  openage::Engine::loop()         0x6e287b    
14  openage::Engine::run()          0x6e279b    
15  openage::run_game(openage::Arguments*)          0x69ec5a    
16  main            0x69c6a7    
TheJJ commented 9 years ago

Fixed by #268