MantisBT

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001100VCMIMechanics - Otherpublic2012-09-29 08:442014-05-30 17:41
Reporterdouggie_m 
Assigned ToIvan 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
PlatformPowerPCOSGNU/LinuxOS VersionDebian Sid
Product Version 
Target VersionFixed in Version0.9 
Summary0001100: SIGSEGV on attempt to start new map with rev2942
DescriptionInitialization of VCMI (together): 2920
[New Thread 0xf2b55450 (LWP 26836)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf2b55450 (LWP 26836)]
0x1054c41c in SelectionTab::parseMaps (this=0x10c156f8, files=..., start=1, threads=1) at CPreGame.cpp:1052
1052 int read = stream->read(mapBuffer, 1500);
(gdb) p stream
$1 = {
  _M_t = {<std::_Tuple_impl<0u, CInputStream*, std::default_delete<CInputStream> >> = {<std::_Tuple_impl<1u, std::default_delete<CInputStream> >> = {<std::_Tuple_impl<2u>> = {<No data fields>}, <std::_Head_base<1u, std::default_delete<CInputStream>, true>> = {<std::default_delete<CInputStream>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0u, CInputStream*, false>> = {
        _M_head_impl = 0x0}, <No data fields>}, <No data fields>}}
(gdb) p mapBuffer
$2 = "\025\000\000\000\001H\000\000\000\001\f\000\000\000Step by Step\214\000\000\000A harsh winter has separated what once was your kingdom. Now that the winter is over, it is time to take your kingdom back, step by step. \001\000\001\001\000\377\001\001\001\001\377\003\a\000\000\377\000\000\000\000\000\001\001\000\377\001\001\001\001\377\003\005\001\000\377\000\000\000\000\000"...
Steps To ReproduceLaunch vcmiclient, click New Game -> Single Scenario; or New Game -> Multiplayer.
Additional Information$ file '/usr/share/vcmi/Maps/Step by Step.h3m'
/usr/share/vcmi/Maps/Step by Step.h3m: gzip compressed data, from NTFS filesystem (NT)
TagsNo tags attached.
Attached Filesbz2 file icon usr-share-vcmi-Maps.tar.bz2 [^] (2,173,343 bytes) 2012-09-29 09:18

- Relationships

-  Notes
(0003082)
douggie_m (reporter)
2012-09-29 08:57

"on attempt to start new game", of course, I don't even get a list of maps (can't edit submitted issue).

When I did /usr/share/vcmi/Maps# mv Step\ by\ Step.h3m ../
I got the following:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf2b55450 (LWP 27098)]
0x1054c41c in SelectionTab::parseMaps (this=0x10d9c4a0, files=..., start=0, threads=1) at CPreGame.cpp:1052
1052 int read = stream->read(mapBuffer, 1500);
(gdb) p mapBuffer
$1 = "\016,\363\\\000\000\000\a\367\377\340\030\000\200\000\000\rǑ\304\362\265>\020\362\265T\260\r\307q,\362\265Vd\365\217\315h\365u\"@\r\340\237\364\365\200\000\020\362\265>\020\r\321J\334\r\336&\274\r\336&\214\r\336'\024\016\000\261`\000\000\000\000\000\000\000\000\362\065`\000\020\302\216\204\rಠ\016,\363\\\020\261\352\070\000\000\000\000\000\000\000\000\020\276\224p\000\000\000\000\000\000\004\000\000\000\004\000\r\340\262\\\000\000\004\b\r\340\262h\r\340\237\364\r\340\262h\362\265>\220\r\321)\360\000\000\000\201\000\000\000H\r\336+\274\000\000\004\030\000\000\004\000\r\336,\320\362\265>\260\r\336+\240\000\000\000\002\000\000\000\002\r\336+\274\000\000\000 \000\000\000\b\r\336,\320\r\340\240\254\r\336+\240\000\000\000)\000\000\000)\r\336+\274$\000D\"\000\000\000\000\000\000\000\000\362\065`\000\020\302\216\204\020\302\216p\016,\363\\\020\261\352\070", '\000' <repeats 15 times>, "\b\000\000\000\000\020\261\321h\020\273\324h\000\000\000"...
(0003083)
douggie_m (reporter)
2012-09-29 09:15

When I left only VCMI_Tests_2011b.h3m, and then just added all for one.h3m, there was no segfault.

I suppose I should upload my Maps directory contents.

Also, I forgot backtrace:

(gdb) s
std::_Tuple_impl<0u, CInputStream*, std::default_delete<CInputStream> >::_M_head (this=0xf2b53d78) at /usr/include/c++/4.7/tuple:152
152 const _Head& _M_head() const { return _Base::_M_head(); }
(gdb) s
std::_Head_base<0u, CInputStream*, false>::_M_head (this=0xf2b53d78) at /usr/include/c++/4.7/tuple:104
104 const _Head& _M_head() const { return _M_head_impl; }
(gdb) s
std::unique_ptr<CInputStream, std::default_delete<CInputStream> >::operator-> (this=0xf2b53d78) at /usr/include/c++/4.7/bits/unique_ptr.h:213
213 }
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x1054c41c in SelectionTab::parseMaps (this=0x1158ad58, files=..., start=0, threads=1) at CPreGame.cpp:1052
1052 int read = stream->read(mapBuffer, 1500);
(gdb) bt
#0 0x1054c41c in SelectionTab::parseMaps (this=0x1158ad58, files=..., start=0, threads=1) at CPreGame.cpp:1052
#1 0x1054d274 in SelectionTab::SelectionTab(CMenuScreen::EState, const boost::function<void(CMapInfo*)> &, CMenuScreen::EMultiMode) (this=0x1158ad58, Type=CMenuScreen::newGame, OnSelect=...,
    MultiPlayer=CMenuScreen::SINGLE_PLAYER) at CPreGame.cpp:1143
0000002 0x1054889c in CSelectionScreen::CSelectionScreen (this=0x11547358, Type=CMenuScreen::newGame, MultiPlayer=CMenuScreen::SINGLE_PLAYER, Names=0x0) at CPreGame.cpp:599
0000003 0x105474a0 in CGPreGame::openSel (this=0xec100fb8, screenType=CMenuScreen::newGame, multi=CMenuScreen::SINGLE_PLAYER) at CPreGame.cpp:455
0000004 0x105abf24 in boost::_mfi::mf2<void, CGPreGame, CMenuScreen::EState, CMenuScreen::EMultiMode>::operator() (this=0x10b09360, p=0xec100fb8, a1=CMenuScreen::newGame, a2=CMenuScreen::SINGLE_PLAYER)
    at /usr/include/boost/bind/mem_fn_template.hpp:280
0000005 0x105a3da0 in boost::_bi::list3<boost::_bi::value<CGPreGame*>, boost::_bi::value<CMenuScreen::EState>, boost::_bi::value<CMenuScreen::EMultiMode> >::operator()<boost::_mfi::mf2<void, CGPreGame, CMenuScreen::EState, CMenuScreen::EMultiMode>, boost::_bi::list0> (this=0x10b09368, f=..., a=...) at /usr/include/boost/bind/bind.hpp:392
0000006 0x10599428 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, CGPreGame, CMenuScreen::EState, CMenuScreen::EMultiMode>, boost::_bi::list3<boost::_bi::value<CGPreGame*>, boost::_bi::value<CMenuScreen::EState>, boost::_bi::value<CMenuScreen::EMultiMode> > >::operator() (this=0x10b09360) at /usr/include/boost/bind/bind_template.hpp:20
0000007 0x1058bcfc in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, CGPreGame, CMenuScreen::EState, CMenuScreen::EMultiMode>, boost::_bi::list3<boost::_bi::value<CGPreGame*>, boost::_bi::value<CMenuScreen::EState>, boost::_bi::value<CMenuScreen::EMultiMode> > >, void>::invoke (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:153
0000008 0x10267d3c in boost::function0<void>::operator() (this=0x108fe9a8) at /usr/include/boost/function/function_template.hpp:760
0000009 0x10268190 in CFunctionList<void ()>::operator()() const (this=0x11519a4c) at ./UIFramework/../FunctionList.h:62
0000010 0x10255bbc in CAdventureMapButton::clickLeft (this=0x115199f0, down=..., previousState=true) at ./UIFramework/CIntObjectClasses.cpp:335
0000011 0x10244024 in CGuiHandler::handleEvent (this=0x108e0444, sEvent=0xf2b54b98) at ./UIFramework/CGuiHandler.cpp:247
0000012 0x10243264 in CGuiHandler::handleEvents (this=0x108e0444) at ./UIFramework/CGuiHandler.cpp:140
0000013 0x10547bd8 in CGPreGame::update (this=0xec100fb8) at CPreGame.cpp:496
0000014 0x10244ca4 in CGuiHandler::run (this=0x108e0444) at ./UIFramework/CGuiHandler.cpp:348
0000015 0x104d3d0c in boost::_mfi::mf0<void, CGuiHandler>::operator() (this=0xec149974, t=...) at /usr/include/boost/bind/mem_fn_template.hpp:70
0000016 0x104d3a64 in boost::_bi::list1<boost::reference_wrapper<CGuiHandler> >::operator()<boost::_mfi::mf0<void, CGuiHandler>, boost::_bi::list0> (this=0xec14997c, f=..., a=...) at /usr/include/boost/bind/bind.hpp:253
0000017 0x104d3934 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, CGuiHandler>, boost::_bi::list1<boost::reference_wrapper<CGuiHandler> > >::operator() (this=0xec149974) at /usr/include/boost/bind/bind_template.hpp:20
0000018 0x104d3060 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CGuiHandler>, boost::_bi::list1<boost::reference_wrapper<CGuiHandler> > > >::run (this=0xec149870)
    at /usr/include/boost/thread/detail/thread.hpp:62
0000019 0x0e2cf40c in ?? () from /usr/lib/libboost_thread.so.1.49.0
0000020 0x0dc557b0 in start_thread (arg=<optimized out>) at pthread_create.c:306
0000021 0x0dd7b930 in clone () at ../sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S:123
(gdb) quit
(0003085)
Ivan (developer)
2012-09-29 09:21

With your maps crash is reproducible. Will check what's wrong.
(0003087)
Ivan (developer)
2012-09-29 09:23

Myth and legends.h3m causes crash.

Removing this file should fix this. Now I need to figure out why VCMI can't load it...
(0003089)
douggie_m (reporter)
2012-09-29 09:28
edited on: 2012-09-29 09:36

Not on my side. I did

/usr/share/vcmi# mv Maps/myth\ and\ legend.h3m Maps\ \(Disabled\)/

And still got SIGSEGV (with all other maps kept), mapBuffer is still the same as in topic post:

(gdb) p mapBuffer
$1 = "\025\000\000\000\001H\000\000\000\001\f\000\000\000Step by Step\214\000\000\000A harsh winter has separated what once was your kingdom. Now that the winter is over, it is time to take your kingdom back, step by step. \001\000\001\001\000\377\001\001\001\001\377\003\a\000\000\377\000\000\000\000\000\001\001\000\377\001\001\001\001\377\003\005\001\000\377\000\000\000\000\000"...

UPD: By the way, myth\ and\ legend.h3m is from LOKI, but gzipped manually by myself some time ago.

(0003090)
Ivan (developer)
2012-09-29 09:33

You moved it into subdirectory? Right now VCMI will parse all subdirectories as well so this map still will be parsed and will crash again.
(0003091)
douggie_m (reporter)
2012-09-29 09:36

No, 'Maps (Disabled)' is in /usr/share/vcmi as well as 'Maps', and not in a subdir of Maps.
(0003092)
Ivan (developer)
2012-09-29 09:44

Ah. Too many slashes. FYI - typing " before file name won't broke autocomplete and will give more readable commands.

Check rev 2947 - it should fix loading of myth and legends and will print file name of broken map
(0003093)
douggie_m (reporter)
2012-09-29 09:48
edited on: 2012-09-29 09:55

Maybe 'all for one.h3m' is the cause (maybe because it is uncompressed).

When it is used with any other gzipped map.

/usr/share/vcmi# ls -l Maps
total 144
-rw-rw-r-- 1 root root 130076 Sep 20 14:04 all for one.h3m
-rw-rw-r-- 1 root root 16092 Aug 11 12:25 ascension.h3m

Segfaults too.

But the same 'all for one.h3m' left alone together with 'VCMI_Tests_2011b.h3m' loads perfectly.

UPD: no, moving out 'all for one.h3m' together with 'myth and legend.h3m' doesn't help.

It's magic.

(0003094)
douggie_m (reporter)
2012-09-29 09:49

Will check rev2947.
(0003096)
douggie_m (reporter)
2012-09-29 10:24

With rev2947, issue is resolved fixed.

- Issue History
Date Modified Username Field Change
2012-09-29 08:44 douggie_m New Issue
2012-09-29 08:57 douggie_m Note Added: 0003082
2012-09-29 09:15 douggie_m Note Added: 0003083
2012-09-29 09:18 douggie_m File Added: usr-share-vcmi-Maps.tar.bz2
2012-09-29 09:21 Ivan Note Added: 0003085
2012-09-29 09:21 Ivan Assigned To => Ivan
2012-09-29 09:21 Ivan Status new => assigned
2012-09-29 09:23 Ivan Note Added: 0003087
2012-09-29 09:28 douggie_m Note Added: 0003089
2012-09-29 09:29 douggie_m Note Edited: 0003089 View Revisions
2012-09-29 09:33 Ivan Note Added: 0003090
2012-09-29 09:36 douggie_m Note Added: 0003091
2012-09-29 09:36 douggie_m Note Edited: 0003089 View Revisions
2012-09-29 09:44 Ivan Note Added: 0003092
2012-09-29 09:48 douggie_m Note Added: 0003093
2012-09-29 09:49 douggie_m Note Added: 0003094
2012-09-29 09:55 douggie_m Note Edited: 0003093 View Revisions
2012-09-29 10:24 douggie_m Note Added: 0003096
2012-09-29 11:07 Ivan Status assigned => resolved
2012-09-29 11:07 Ivan Fixed in Version => 0.9
2012-09-29 11:07 Ivan Resolution open => fixed
2014-05-30 17:41 beegee Status resolved => closed

Site | Forums | Wiki | Slack | GitHub


Copyright © 2000 - 2024 MantisBT Team
Hosting provided by DigitalOcean