Beklager. It’s fixed now. Do an update.
den er god hehe ill try it again when i reboot into suse again, still testing vcmi in win7
still no luck im afraid
make[1]: *** No rule to make target ../CGameState.cpp', needed by
CGameState.lo’. Stop.
make[1]: Leaving directory `/home/ron-emir/vcmi/lib’
make: *** [all-recursive] Error 1
You’re out of luck Sources have been reorganized this morning.
It’s fixed now.
hehe well, so far i’ve gotten my h3 fix from wine ill test it out later then
btw ubuntux, you arent from norway by any chance?
Nei, men Google Translate er min venn.
I removed all boost packages and installed it from src.rpm and with that configure option pointing it to /usr/lib64 I managed to build it. Followed instructions in README.linux and I have it up and running, at first clicking here and there it segfaulted Polish font is broken, is there and easy way change language to english?
In folder Fonts, you can replace this files, rename etc. but new font must be TTF.
mediafire.com/?3r35lz216nk Here is a little multiplayermod I made long ago (based on WoG) … It should change all txt in polish version to english … Though this mod is not made to work with wog … and doesn’t have most of wog options… I don’t know if it will work with VCMI. BTW any chances to see some debs ? even precompiled with checkinstall ? or maybe a static linked 7zipped vcmi build ? (yeah I know it’s not *nix like but some other games like GLEST provide this kind of builds that install in /home folder)
I’ll try to stick with Polish fonts, whenever I try to move on any map I get a horse walking sound loop and in console:
sh: line 1: 20044 Naruszenie ochrony pamięci ./vcmiserver 3030 > server_log.txt
Connection reset by peer
Lost connection to server, ending listening thread!
Cannot get object with id -1
Broken pipe
The server crashed. Could you post VCMI_Server_log.txt and server_log.txt ?
You can put english language files into /data subfolder.
VCMI_Server_log:
Port 3030 will be used.
Loading .lod files: 40000
Reading OBJNAMES
Reading ADVEVENT
Reading XTRAINFO
Reading MINENAME
Reading MINEEVNT
Reading RESTYPES
Reading RANDSIGN
Reading ZCRGN1
General text handler: 30000
Hero handler: 0
Artifact handler: 10000
Reading ZCRTRAIT.TXT
Reading config/crerefnam.txt
Reading config/monsters.txt
Reading config/cr_factions.txt
Reading config/cr_upgrade_list.txt
Reading config/CREDEFS.TXT
We have 197 creatures
Reading CRANIM.TXT.txt
Reading config/cr_shots.txt
Creature handler: 20000
Town handler: 0
Reading cregens
Done loading objects!
Object handler: 0
Def information handler: 20000
Building handler: 10000
Spell handler: 10000
CVCMIServer created!
Listening for connections at port 3030
We've accepted someone...
Established connection with VCMI 0.71c (client)
Got connection!
Opening map file: Maps/Dwarven Gold.h3m done.
Our map checksum: 3865464600
Reading header: 0
Reading rumors: 0
Reading predefined heroes: 0
Reading terrain: 0
Reading defs info: 0
Reading objects: 0
Reading events: 0
Calculating blocked/visitable tiles: 10000
Map loaded!
Gamestate created!
Gamestate initialized!
Turn 1
Sending to all clients a package of type 18SetAvailableHeroes
Sending to all clients a package of type 18SetAvailableHeroes
Sending to all clients a package of type 18SetAvailableHeroes
Sending to all clients a package of type 7NewTurn
Info about turn 1has been sent!
Sending to all clients a package of type 10InfoWindow
Sending to all clients a package of type 10InfoWindow
Sending to all clients a package of type 10InfoWindow
Warning: Cannot find info for player 3
Warning: Cannot find info for player 4
Warning: Cannot find info for player 5
Warning: Cannot find info for player 6
Warning: Cannot find info for player 7
Sending to all clients a package of type 17SetObjectProperty
Sending to all clients a package of type 12SetHoverName
Sending to all clients a package of type 17SetObjectProperty
Sending to all clients a package of type 12SetHoverName
Received client message of type 8SaveGame
Ordering clients to serialize...
Serializing game info...
Server_log:
e[1;40;32mPort e[0me[1;40;32m3030e[0me[1;40;32m will be used.e[0m
e[1;40;32mLoading .lod files: e[0me[1;40;32m40000e[0m
e[1;40;32m General text handler: e[0me[1;40;32m30000e[0m
e[1;40;32m Hero handler: e[0me[1;40;32m0e[0m
e[1;40;32m Artifact handler: e[0me[1;40;32m10000e[0m
e[1;40;32m Creature handler: e[0me[1;40;32m20000e[0m
e[1;40;32m Town handler: e[0me[1;40;32m0e[0m
e[1;40;32m Object handler: e[0me[1;40;32m0e[0m
e[1;40;32m Def information handler: e[0me[1;40;32m20000e[0m
e[1;40;32m Building handler: e[0me[1;40;32m10000e[0m
e[1;40;32m Spell handler: e[0me[1;40;32m10000e[0m
e[1;40;39mCVCMIServer created!e[0m
e[1;40;32mListening for connections at port e[0me[1;40;32m3030e[0m
e[1;40;32mWe've accepted someone... e[0m
e[1;40;32mEstablished connection with e[0me[1;40;32mVCMI 0.71c (client)e[0m
e[1;40;32mGot connection!e[0m
e[1;40;32mOpening map file: e[0me[1;40;32mMaps/Dwarven Gold.h3me[0me[1;40;32m e[0me[1;40;32mdone.e[0m
e[1;40;32m Our map checksum: e[0me[1;40;32m3865464600e[0m
e[1;40;32m Reading header: e[0me[1;40;32m0e[0m
e[1;40;32m Reading rumors: e[0me[1;40;32m0e[0m
e[1;40;32m Reading predefined heroes: e[0me[1;40;32m0e[0m
e[1;40;32m Reading terrain: e[0me[1;40;32m0e[0m
e[1;40;32m Reading defs info: e[0me[1;40;32m0e[0m
e[1;40;32m Reading objects: e[0me[1;40;32m0e[0m
e[1;40;32m Reading events: e[0me[1;40;32m0e[0m
e[1;40;32m Calculating blocked/visitable tiles: e[0me[1;40;32m10000e[0m
e[1;40;32mMap loaded!e[0m
e[1;40;32mGamestate created!e[0m
e[1;40;32mGamestate initialized!e[0m
e[1;40;35mWarning: Cannot find info for player e[0me[1;40;35m3e[0m
e[1;40;35mWarning: Cannot find info for player e[0me[1;40;35m4e[0m
e[1;40;35mWarning: Cannot find info for player e[0me[1;40;35m5e[0m
e[1;40;35mWarning: Cannot find info for player e[0me[1;40;35m6e[0m
e[1;40;35mWarning: Cannot find info for player e[0me[1;40;35m7e[0m
e[1;40;32mOrdering clients to serialize...
e[0me[1;40;32mSerializing game info...
Could be related to the save game bug. The server is trying to save unexistant players.
In server/CGameHandler.cpp, find the function “void CGameHandler::save” and add a return at the begining:
void CGameHandler::save( const std::string &fname )
{
return;
{
tlog0 << "Ordering clients to serialize...\n";
SaveGame sg(fname);
Yes, adding a ‘return;’ in “void CGameHandler::save” fixes my issue. Now I get a message
System message: Saving...
System message: Game has been succesfully saved!
instead of “Naruszenie ochrony pamięci” (segmentation fault).
Thanks for all your help
Why do you think so? Warnings present in the log files (“Cannot find info for player”) are normal (I have them too) and not related to the saving itself (they appear before game is serialized).
Actually it not fixes the issue, it only disables saving and tells us that there is a bug.
Could you run VCMI (without that “return” workaround) in the debugger and retrieve backtrace for vcmi_server at the crash moment? It should tell us more about what is happening.
English files for H3 are available here:
download.antypika.aplus.pl/dataEN.7z
Well , I should have said it was just a workaround.
Here’s a back trace:
#0 0x4157aca9 in std::string::length () from /usr/lib/libstdc++.so.6
#1 0x08120048 in SaveSerializable<CSaveFile, std::string>::invoke (s=@0xa519815c, data=@0x8f1f500) at ../lib/Connection.h:118
#2 0x0812006c in COSer<CSaveFile>::save<std::string> (this=0xa519815c, data=@0x8f1f500) at ../lib/Connection.h:343
#3 0x08120090 in COSer<CSaveFile>::operator<< <std::string> (this=0xa519815c, t=@0x8f1f500) at ../lib/Connection.h:274
#4 0x081200c0 in COSer<CSaveFile>::operator&<std::string> (this=0xa519815c, t=@0x8f1f500) at ../lib/Connection.h:281
#5 0x0812265d in PlayerInfo::serialize<COSer<CSaveFile> > (this=0x8f1f4e0, h=@0xa519815c, version=704) at ../lib/map.h:127
#6 0x081226da in COSer<CSaveFile>::saveSerializable<PlayerInfo> (this=0xa519815c, data=@0x8f1f4e0) at ../lib/Connection.h:348
#7 0x081226f4 in SaveSerializable<CSaveFile, PlayerInfo>::invoke (s=@0xa519815c, data=@0x8f1f4e0) at ../lib/Connection.h:118
#8 0x08122718 in COSer<CSaveFile>::save<PlayerInfo> (this=0xa519815c, data=@0x8f1f4e0) at ../lib/Connection.h:343
#9 0x0812273c in COSer<CSaveFile>::operator<< <PlayerInfo> (this=0xa519815c, t=@0x8f1f4e0) at ../lib/Connection.h:274
#10 0x0812279a in COSer<CSaveFile>::saveSerializable<PlayerInfo> (this=0xa519815c, data=@0x8f1f1ac) at ../lib/Connection.h:356
#11 0x081227c0 in SaveSerializable<CSaveFile, std::vector<PlayerInfo, std::allocator<PlayerInfo> > >::invoke (s=@0xa519815c,
data=@0x8f1f1ac) at ../lib/Connection.h:118
#12 0x081227e4 in COSer<CSaveFile>::save<std::vector<PlayerInfo, std::allocator<PlayerInfo> > > (this=0xa519815c, data=@0x8f1f1ac)
at ../lib/Connection.h:343
#13 0x08122808 in COSer<CSaveFile>::operator<< <std::vector<PlayerInfo, std::allocator<PlayerInfo> > > (this=0xa519815c,
t=@0x8f1f1ac) at ../lib/Connection.h:274
#14 0x08122838 in COSer<CSaveFile>::operator&<std::vector<PlayerInfo, std::allocator<PlayerInfo> > > (this=0xa519815c, t=@0x8f1f1ac)
at ../lib/Connection.h:281
#15 0x08122a71 in CMapHeader::serialize<COSer<CSaveFile> > (this=0x8f1f150, h=@0xa519815c, Version=704) at ../lib/map.h:229
#16 0x08122acc in COSer<CSaveFile>::saveSerializable<CMapHeader> (this=0xa519815c, data=@0x8f1f150) at ../lib/Connection.h:348
#17 0x08122ae6 in SaveSerializable<CSaveFile, CMapHeader>::invoke (s=@0xa519815c, data=@0x8f1f150) at ../lib/Connection.h:118
#18 0x08122b0a in COSer<CSaveFile>::save<CMapHeader> (this=0xa519815c, data=@0x8f1f150) at ../lib/Connection.h:343
#19 0x08122b2e in COSer<CSaveFile>::operator<< <CMapHeader> (this=0xa519815c, t=@0x8f1f150) at ../lib/Connection.h:274
#20 0x080d8f75 in CGameHandler::save (this=0xbffa15ac, fname=@0xa48005cc) at CGameHandler.cpp:1475
#21 0x0816a1eb in SaveGame::applyGh (this=0xa48005b8, gh=0xbffa15ac) at NetPacksServer.cpp:29
#22 0x0812efdf in CApplyOnGH<SaveGame>::applyOnGH (this=0x8f1eec0, gh=0xbffa15ac, c=0x8f167f8, pack=0xa48005b8)
at CGameHandler.cpp:65
#23 0x080e25a5 in CGameHandler::handleConnection (this=0xbffa15ac, players=
{_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<int> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<int> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = 150038520, _M_parent = 0x8107bf7, _M_left = 0xa4800468, _M_right = 0x0}, _M_node_count = 2759853304}}},
c=@0x8f167f8) at CGameHandler.cpp:504
#24 0x08107fb8 in boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<int>, std::allocator<int> >, CConnection&>::operator() (this=0x9237ed4, p=0xbffa15ac, a1=
{_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<int> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<int> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = 150038520, _M_parent = 0x1, _M_left = 0xb7c0614c, _M_right = 0xa5198318}, _M_node_count = 1095618548}}},
a2=@0x8f167f8) at /usr/include/boost/bind/mem_fn_template.hpp:274
#25 0x08108071 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=0x9237edc, f=@0x9237ed4, a=@0xa5198357)
at /usr/include/boost/bind.hpp:371
#26 0x081080e3 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=0x9237ed4) at /usr/include/boost/bind/bind_template.hpp:20
#27 0x081080fc in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf2<void, CGameHandler, std::set<int, std::less<in---Type <return> to continue, or q <return> to quit---
t>, 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=0x9237e18)
at /usr/include/boost/thread/detail/thread.hpp:56
#28 0xb7bff848 in thread_proxy () from /usr/lib/libboost_thread-mt.so.1.37.0
#29 0x41ad64ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#30 0x4146249e in clone () from /lib/tls/i686/cmov/libc.so.6
This bug only happens in map with less than 8 players. When I tracked the bug I though that it was trying to save a player that’s not in the game (and thus is full of unitialized values).
maybe before loadgame/loadmap just initialize players ?
The save game crash is fixed now.