MantisBT - VCMI
View Issue Details
0001038VCMIMechanics - Adventure Mappublic2012-07-19 11:392014-05-30 17:41
Warmonger 
Ivan 
normalcrashalways
closedfixed 
 
0.90.9 
0001038: Crash on query when AI attacks Dragon Fly Hive
Load autosave, wait for brown player's turn.
It could also happen when AI was visiting it's own mines (for some reason?), so can be true for other garrison dialogs as well.
No tags attached.
rar CrashDragonFlyHive.rar (261,025) 2012-07-19 11:39
https://bugs.vcmi.eu/file_download.php?file_id=1018&type=bug
bz2 CrashDragonFlyHive.vcmi-savegame.tar.bz2 (224,863) 2012-07-19 19:18
https://bugs.vcmi.eu/file_download.php?file_id=1020&type=bug
Issue History
2012-07-19 11:39WarmongerNew Issue
2012-07-19 11:39WarmongerFile Added: CrashDragonFlyHive.rar
2012-07-19 16:33WarmongerSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=1772#r1772
2012-07-19 19:16douggie_mNote Added: 0002804
2012-07-19 19:18douggie_mFile Added: CrashDragonFlyHive.vcmi-savegame.tar.bz2
2012-07-19 19:30douggie_mNote Added: 0002806
2012-07-20 15:21douggie_mNote Added: 0002810
2012-07-20 15:26douggie_mNote Edited: 0002810bug_revision_view_page.php?bugnote_id=2810#r1778
2012-07-21 20:21IvanNote Added: 0002818
2012-07-22 11:38douggie_mNote Added: 0002823
2012-07-22 18:15IvanStatusnew => resolved
2012-07-22 18:15IvanResolutionopen => fixed
2012-07-22 18:15IvanAssigned To => Ivan
2012-07-22 19:42WarmongerFixed in Version => 0.9
2014-05-30 17:41beegeeStatusresolved => closed

Notes
(0002804)
douggie_m   
2012-07-19 19:16   
May I ask do not use RAR... It is very hard to extract it (at least on my side).
(0002806)
douggie_m   
2012-07-19 19:30   
I do confirm the crash:

...
CStupidAI [0x122f4c08]: actionFinished called
CStupidAI [0xe9695178]: actionFinished called
                Player 2: I won the Starting battle of Bron attacking Bron the Beastmaster at 27 79 0!
CStupidAI [0x122f4c08]: battleEnd called
CStupidAI [0x122f4c08]: destroyed
CStupidAI [0xe9695178]: battleEnd called
Warning: an orphaned child!
                Adding query 158 - Garrison dialog with Bonus system node of type 5CBank and Hero Bron. Total queries count: 1
System message: Server encountered a problem: Player 2 has to answer queries before attempting any further actions (count=1)!
System message: Server encountered a problem: Player 2 has to answer queries before attempting any further actions (count=1)!
System message: Server encountered a problem: Player 2 has to answer queries before attempting any further actions (count=1)!
System message: Server encountered a problem: Player 2 has to answer queries before attempting any further actions (count=1)!
System message: Server encountered a problem: Player 2 has to answer queries before attempting any further actions (count=1)!
                I'll answer the query 158 giving the choice 0
                Attempted answering query 158 - Garrison dialog with Bonus system node of type 5CBank and Hero Bron. Request id=322. Waiting for results...
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_function_call> >'
  what(): call to empty boost::function
Lost connection to server, ending listening thread!
read: End of file
Something wrong, lost connection while game is still ongoing...
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what(): read: End of file
Aborted
Aborted
(0002810)
douggie_m   
2012-07-20 15:21   
(edited on: 2012-07-20 15:26)
New researches:

1: the backtrace from client's side:
----------------------------------------
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xf36ff450 (LWP 1823)]
0x0de469ac in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x0de469ac in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x0de4c060 in *__GI_abort () at abort.c:92
0000002 0x0e1219b0 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000003 0x0e11e9c8 in ?? () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000004 0x0e11ea0c in std::terminate() () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000005 0x0e11eeb8 in __cxa_rethrow () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000006 0x10367180 in CClient::run (this=0x11d3aa38) at Client.cpp:163
0000007 0x10456398 in boost::_mfi::mf0<void, CClient>::operator() (this=0x11e044cc, p=0x11d3aa38) at /usr/include/boost/bind/mem_fn_template.hpp:49
0000008 0x104561a0 in boost::_bi::list1<boost::_bi::value<CClient*> >::operator()<boost::_mfi::mf0<void, CClient>, boost::_bi::list0> (this=0x11e044d4, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:253
0000009 0x10456070 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, CClient>, boost::_bi::list1<boost::_bi::value<CClient*> > >::operator() (this=0x11e044cc)
    at /usr/include/boost/bind/bind_template.hpp:20
0000010 0x104557d0 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CClient>, boost::_bi::list1<boost::_bi::value<CClient*> > > >::run (this=0x11e043c8)
    at /usr/include/boost/thread/detail/thread.hpp:62
0000011 0x0e45440c in ?? () from /usr/lib/libboost_thread.so.1.49.0
0000012 0x0ddda7b0 in start_thread (arg=<optimized out>) at pthread_create.c:306
0000013 0x0df00930 in clone () at ../sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S:123
----------------------------------------

2: the backtrace from server's side:
----------------------------------------
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xf7a1c450 (LWP 2012)]
0x0ec2e9ac in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x0ec2e9ac in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x0ec34060 in *__GI_abort () at abort.c:92
0000002 0x0ef099b0 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000003 0x0ef069c8 in ?? () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000004 0x0ef06a0c in std::terminate() () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000005 0x0ef06eb8 in __cxa_rethrow () from /usr/lib/powerpc-linux-gnu/libstdc++.so.6
0000006 0x10171438 in CGameHandler::handleConnection (this=0xffa12288, players=..., c=...) at CGameHandler.cpp:915
0000007 0x102a08c4 in boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<int>, std::allocator<int> >, CConnection&>::operator() (this=0x109092f4, p=0xffa12288, a1=..., a2=...)
    at /usr/include/boost/bind/mem_fn_template.hpp:280
0000008 0x102a03bc in boost::_bi::list3<boost::_bi::value<CGameHandler*>, boost::_bi::value<std::set<int, std::less<int>, std::allocator<int> > >, boost::reference_wrapper<CConnection> >::operator()<boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<int>, std::allocator<int> >, CConnection&>, boost::_bi::list0> (this=0x109092fc, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:392
0000009 0x102a00f8 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<int>, std::allocator<int> >, CConnection&>, boost::_bi::list3<boost::_bi::value<CGameHandler*>, boost::_bi::value<std::set<int, std::less<int>, std::allocator<int> > >, boost::reference_wrapper<CConnection> > >::operator() (this=0x109092f4)
    at /usr/include/boost/bind/bind_template.hpp:20
0000010 0x1029d6bc in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<int>, std::allocator<int> >, CConnection&>, boost::_bi::list3<boost::_bi::value<CGameHandler*>, boost::_bi::value<std::set<int, std::less<int>, std::allocator<int> > >, boost::reference_wrapper<CConnection> > > >::run (this=0x109091f0)
    at /usr/include/boost/thread/detail/thread.hpp:62
0000011 0x0f20740c in ?? () from /usr/lib/libboost_thread.so.1.49.0
0000012 0x0f1c67b0 in start_thread (arg=<optimized out>) at pthread_create.c:306
0000013 0x0ece8930 in clone () at ../sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S:123
----------------------------------------

3: I got that "Astrologers proclaim the week of..." dialog is shown before AI's turns. I.e. to get AI moving, you need to click on [✓]. Is this okay?

(0002818)
Ivan   
2012-07-21 20:21   
There is some chance that I've fixed it in rev 2799. Please recheck.

Function passed as callback to CGameHandler::showGarrisonDialog was empty -> crash on function call
(0002823)
douggie_m   
2012-07-22 11:38   
Now AI finishes its turn for all players. No sigabrt anymore.