Forum index VCMI Project - Heroes 3: WoG recreated
Forum of the project aiming to recreate best turn-based strategy ever!

FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  StatisticsStatistics
RegisterRegister  Log inLog in  AlbumAlbum  DownloadDownload

Previous topic :: Next topic
Thread for discussing VCMI in Russian
Author Message
Illya
Guest
Posted: 2012-08-03, 17:47     

Привет!
Долго заставлял сие чудо компилиться под slackware... свершилось.
Запускается нормально, но при попытке запустить кампанию - виснит наглухо (после выбора бонуса и нажатия конопки \"begin\").
То есть не вываливается, ошибок нет, просто висит, пока не кильнешь).
Проявляется на одиночном сценарии. В кампании же вываливается с: \"vcmiclient: CLodHandler.cpp:26: std::string readString(const ui8*, int&): Assertion `len >= 0 && len <= 500000\' failed.\"
Использую исходники с trunk.
Так же (не помню когда) ругается на отсутствие NEUTRAL.H3C
Что может быть?

p.s. boost-1.49
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-08-03, 18:45     

Quote:
Долго заставлял сие чудо компилиться под slackware...

Чего так долго? Вроде как привели в порядок ридми или что-то все еще не так?

Кампании еще недоделаны, багов там больше некуда - лучше сценарии запускать пока что.
Но падать при старте ни одни ни вторые не должны.

Что не так - не уверен. Возможно в процессах остался зависший сервер - в этом случае нужно убить vcmiserver и только потом запускать клиент (vcmiclient который)
Если в сценариях все равно зависает:
- проверить есть ли в процессах vcmiserver (должен запуститься вместе со стартом сценария)
- если есть возможность, то подключиться с gdb и снять стек с клиента и сервера:
Code:

$ gdb --pid={process id}
(gdb) set logging on
(gdb) thread apply all bt full
(gdb) quit

Вывод (gdb.txt) выложить сюда вместе с логами (текстовики в папке ~/.vcmi)

NEUTRAL.H3C это кампания Spoils of War / Трофеи Войны - тут похоже опечатка у нас. Должно быть NEUTRAL1.H3C, исправлю
 
     
Illya
Guest
Posted: 2012-08-04, 19:10     

Долго, в основном из за того что моя система давно не видела апгрейда.
И либы старые, и компилятор и coreutils. Сначала конфигуратор никак не хотетл видеть libSDL и boost, потом вылетал при начале компиляции.. но это такое, старая система, работает на машине уже лет 6 или 7... последний апгрейд года 2 назад был, так что простительно ;)

Сейчас все компилится без проблем, за исключением ворнингов. И есть еще один момент.
Вроде как при сборке ERMParser.lo (точно не помню, но что-то из ERM) - машина начинала уходить в трэшинг. То есть активно юзать своп. И я просто через 10 минут этого убийственного процесса вырубал компилятор. Видать 1 гига памяти для компиляции маловато. Добавил еще гиг оперативы и все собралось без проблем, при этом памяти было занято 1,2-1,3 гига.

Ага, благодарю за совет!
Как раз сервер то и не стартует. В процессах ничего. Причем в логах даже нет VCMI_Server_log.txt
Лог сервера появляется только после запуска его вручную. Но он тут же благополучно падает:
Port 3030 will be used.
Loading .lod files: 90
General text handler: 40
.................skipped..............
Spell handler: 0
CVCMIServer created!
Function not implemented
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what(): Function not implemented

gdb мне был без надобности так что в системе его нет.
Если свет не прольется, буду ставить.
Может буст выделывается?
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-08-04, 20:36     

Свопинг при компиляции ERM - возможно. Уж слишком активно там используется всякая магия буста. Наверно стоит как-нибудь сделать его компиляцию опциональной - в игре это пока нигде не используется.

А падает похоже и вправду буст.
Ругается на boost::interprocess. Гуглением нашел такую же ошибку:
http://www.slackwiki.com/...ling_the_Driver
Стоит попробовать /etc/fstab поправить.
 
     
Illya
Guest
Posted: 2012-08-05, 10:51     

Ivan благодарю!
Включил tmpfs в fstab. Клиент и сервер стартуют, все работает..
Да.. еще на счет свопинга в ERM - если конфигурить через cmake а потом собирать - то в трэшинг машина не уходит.
 
     
Illya
Guest
Posted: 2012-08-05, 18:11     

Ivan, а оно должно тормозить?
Герои передвигаются мучительно медленно, а ждать пока походит комп можно почти минуту (если много противников).
При этом загрузка проца всего процентов на 15.
И вот это постоянно:
Warning: Cannot open /path_to_vcmi/Mp3/CstleTown.mp3: Module format not recognized
если подкинуть mp3 с порта от loki - тоже самое. Хотя в общем-то звуки и кое-какая музыка в игре есть.
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-08-05, 19:10     

Какой-либо сильной оптимизацией еще не занимались, так что ИИ тормозить и вправду может - его писать начали сравнительно недавно.
Ну и конечно зависит от системы и карты. Можно пересобрать vcmi включив оптимизацию - это должно несколько ускорить игру.

Скорость героя можно поменять в настройках. Или это не помогает?

mp3 - подозреваю что или sdl mixer был скомпилен без поддержки mp3 или же в системе нет нужной библиотеки (кажется smpeg)
Звуки есть ибо они все в wav, а не mp3.
 
     
Illya
Guest
Posted: 2012-08-14, 20:53     

Ivan, вечер/день добрый!
Раз уж Вы курируете эту ветку.. то подскажите по поводу новых версий (rev 2831).
Компилится без вопросов, но при старте:
Starting...
Creating console and logfile: 0 Initialization: 10
terminate called after throwing an instance of 'std::runtime_error'
what(): Resource with name ALL/CONFIG/FILESYSTEM and type TEXT wasn't found.
Похоже надо обновить конфиг-пак?
Но где его взять, если это так.
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-08-16, 21:00     

Скопировать из папки с исходниками. (папка trunk/config/)
 
     
andyc
Guest
Posted: 2012-10-08, 10:20     

Добрый день Иван!
Подскажите пожалуйста, какой переменной cmake, определить собственный rpath?
CMAKE_INSTALL_RPATH="%_libdir/%name/" почему-то не работает.
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-10-08, 14:49     

Хмм... Должно работать. В доках cmake пишут что rpath применяется только после установки (make install и тому подобные).
Проверю, если что не так - исправлю.

Ну а как вариант - поправить флаги:
cmake -DCMAKE_CXX_FLAGS="-rpath,/path/to/lib"
 
     
andyc
Guest
Posted: 2012-10-08, 15:44     

Ivan wrote:
Хмм... Должно работать. В доках cmake пишут что rpath применяется только после установки (make install и тому подобные).
Проверю, если что не так - исправлю.

Ну а как вариант - поправить флаги:
cmake -DCMAKE_CXX_FLAGS="-rpath,/path/to/lib"


Спасибо, однако не помогло добавить опцию в cmake. При elf проверке в
альте, выводит следующее
Code:

Verifying ELF objects in /usr/src/tmp/vcmi-buildroot (arch=normal,fhs=normal,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH ends with ":": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal absolute entry "/usr/src/RPM/BUILD/vcmi-0.9/lib": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal entry "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libvcmiERM.so: RPATH starts with ":": :::::::::::::::::::
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog1
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI10CGCreature
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZN7CLogger18FILE_LOGGING_LEVELE
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: console
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog4
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI14CGHeroInstance
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog0
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-10-08, 16:00     

А после установки? В самом rpm или уже установленные в систему?

CMake ссылки на папки правит в момент установки - бинарники, которые валяются в папке сборки будут указывать на эту самую папку - замена на пути вида /usr/lib/vcmi делается позже.

UPD:

Проверил. CMAKE_INSTALL_RPATH не используется, но выставлен правильно:
до установки: ~/src/vcmi/build/lib
после: /usr/lib/vcmi

Посмотрю что с первым сделать можно.
 
     
andyc
Guest
Posted: 2012-10-08, 16:55     

Ivan wrote:
А после установки? В самом rpm или уже установленные в систему?

CMake ссылки на папки правит в момент установки - бинарники, которые валяются в папке сборки будут указывать на эту самую папку - замена на пути вида /usr/lib/vcmi делается позже.

UPD:

Проверил. CMAKE_INSTALL_RPATH не используется, но выставлен правильно:
до установки: ~/src/vcmi/build/lib
после: /usr/lib/vcmi

Посмотрю что с первым сделать можно.

Большое спасибо. Сборка производится под Altlinux. Кстати, если собирать vcmi
с дополнительными переменными:
Code:

-D CMAKE_CXX_FLAGS="%optflags" -D CMAKE_C_FLAGS="%optflags"

Которые раскрываются в:
Code:

[andy@timelock ~]$ rpm --eval %optflags
-pipe -Wall -g -O2 -march=pentium4
[andy@timelock ~]$

При сборке получаю следующее:
Code:

[ 41%] Building CXX object lib/CMakeFiles/vcmi.dir/CArtHandler.cpp.o
cd /usr/src/RPM/BUILD/vcmi-0.9/lib && /usr/bin/c++   -Dvcmi_EXPORTS -DM_DATA_DIR=\"/usr/local//usr/share/games/vcmi/\" -DM_BIN_DIR=\"/usr/local//usr/bin\" -DM_LIB_DIR=\"/usr/local//usr/lib/vcmi/\" -pipe -Wall -g -O2 -march=i586 -mtune=i686 -std=c++0x -Wall -Wextra -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wno-overloaded-virtual -O3 -DNDEBUG -fPIC -I/usr/src/RPM/BUILD/vcmi-0.9 -I/usr/src/RPM/BUILD/vcmi-0.9/lib -I/usr/include/SDL    -o CMakeFiles/vcmi.dir/CArtHandler.cpp.o -c /usr/src/RPM/BUILD/vcmi-0.9/lib/CArtHandler.cpp
virtual memory exhausted: Cannot allocate memory
make[2]: *** [Scripting/ERM/CMakeFiles/vcmiERM.dir/ERMParser.cpp.o] Error 1
make[2]: Leaving directory `/usr/src/RPM/BUILD/vcmi-0.9'
make[1]: *** [Scripting/ERM/CMakeFiles/vcmiERM.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Ах да, совершенно забыл, собираю вчерашний svn - 2983
p.S: на -march=pentium4, не обращайте внимания, в сборочной
среде, подставляется правильный тип процессора.
 
     
Ivan 
VCMI programmer

Age: 21
Joined: 08 May 2009
Posts: 713
Location: Ukraine
Posted: 2012-10-08, 17:12     

Проблема с libERM - там куча шаблонной магии в итоге gcc может падает от нехватки памяти.
Как вариант - отключить компиляцию этой либы:
cmake -DDISABLE_ERM=true
Сейчас она не используется, так что проблем не будет.

Rpath вроде исправил, проверю и отправлю в svn.
 
     
Display posts from previous:   
Reply to topic
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
Add this topic to your bookmarks
Printable version

Jump to:  
Quick Reply
Username: 


Expire Days
 
 
 
 
 
 
 

Powered by phpBB modified by Przemo © 2003 phpBB Group
Template Chronicles modified by Nasedo modified by Tow.
© VCMI Team
Page generated in 0.1 second. SQL queries: 12