Ошибки сервера |
|
Здравствуйте, гость ( Вход | Регистрация )
Ошибки сервера |
16.11.2012, 9:49
Сообщение
#1
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
16.11.2012, 9:56
Сообщение
#2
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Теж по русски там написано - превышен лимит подключений к серверу, 256 максимально возможное число.
|
|
|
16.11.2012, 15:24
Сообщение
#3
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
ну читать я умею. не нужно мне объяснять что там написано.
нужно решение проблемы. |
|
|
16.11.2012, 15:38
Сообщение
#4
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Ты это ботов столько напрудил?
|
|
|
16.11.2012, 15:54
Сообщение
#5
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата(Smysloff1979 @ Пятница, 16 Ноября 2012, 16:24:29) [snapback]1777063[/snapback] ну читать я умею. не нужно мне объяснять что там написано. нужно решение проблемы. Слишком просто выдать все на блюдичке, так жизнь не работает. Если эту ошибку вбить в гугл, то там все есть, нужно только приложить минимум усилий. Могу только послать в нужном направлении - XP Pro в отличии от любого Win Server'а может максимум принять 10 подключений. Для того что-бы это исправить, нужно либо ставить серврную ось, либо патчить TCPIP.SYS Дальше к гуглу. |
|
|
17.11.2012, 15:36
Сообщение
#6
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
спасибо за ответ
|
|
|
15.12.2014, 21:44
Сообщение
#7
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Блин! Может мне кто-нибудь на этом форуме объяснить, что делать, если одна какая-то вшивая карта выносит линуховый сервак с писулиной в консоли :
Ошибка сегментирования (core dumped)!!!!!!!! |
|
|
20.12.2014, 7:25
Сообщение
#8
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Для линукс:
Установите предварительно пакет gdb из репозитария вашего дистрибутива Затем, выполните: Код # cd /opt/bf2 # gdb core core (gdb) info sharedlibrary (gdb) info registers (gdb) info stack где /opt/bf2 - ваш каталог сервера. Результат в виде скриншота и текста выкладывайте сюда. Пример: Для виндовс: Курить мануал по OllyDbg например на wasm'е Открыть bf2w32ded.exe в OllyDBG нажать F9 (Run) и ждать когда сервер нарвётся на ошибку. Сделать скриншот сюда. Или читать эту статью Дамп открываем в WinDBG или выкладываем куда-нибудь. Особо подчеркну, для того чтобы установить причину, нам важен адрес, по которому происходит ошибка, данные в регистрах на момент ошибки и дамп стека. P.S. Прошу не захламлять мне личку с вашими дампами и ошибками, я не буду тратить на каждого своё время. Если вы что-то из сказанного не понимаете или не осознаёте, у вас есть поисковик Google (голова и прямые руки тоже, я на это надеюсь). |
|
|
22.12.2014, 1:31
Сообщение
#9
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Tema567 не знаю, правильно я сделал или нет, но то что ниже, было проделано при запущеном сервере на сбойной карте. Далее приконнектился и дождался пока сервер ляжет. Ну а далее все по списку:
# cd /opt/bf2 # gdb core core (gdb) info sharedlibrary (gdb) info registers (gdb) info stack Раскрывающийся текст bf2-server:/opt/bf2# gdb core core GNU gdb (GDB) 7.4.1-debian Copyright © 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... "/opt/bf2/core": not in executable format: Формат файла не распознан [New LWP 2154] [New LWP 2159] [New LWP 2160] [New LWP 2161] Core was generated by `/opt/bf2/bin/ia-32/bf2 +modPath mods/hardjustice +dedicated +lowPriority'. Program terminated with signal 11, Segmentation fault. #0 0xb3a09497 in ?? () (gdb) info sharedlibrary warning: Can't read pathname for load map: Ошибка ввода/вывода. From To Syms Read Shared Object Library 0xb77319f0 0xb773ede8 No /usr/lib/libz.so.1 0xb77006a0 0xb7722678 No /lib/libncurses.so.5 0xb75c1210 0xb764e760 No /opt/bf2/bin/ia-32/libdice_py.so 0xb7591470 0xb759ccc8 No /lib/i386-linux-gnu/libpthread.so.0 0xb74ec040 0xb755baf9 No /usr/lib/i386-linux-gnu/libstdc++.so.6 0xb747e460 0xb7499398 No /lib/i386-linux-gnu/libm.so.6 0xb74604b0 0xb7476ce4 No /lib/i386-linux-gnu/libgcc_s.so.1 0xb7323c60 0xb742343c No /lib/i386-linux-gnu/libc.so.6 0xb7309a60 0xb730a9a8 No /lib/i386-linux-gnu/libdl.so.2 0xb7305a20 0xb73062c8 No /lib/i386-linux-gnu/libutil.so.1 0xb774f820 0xb776605f No /lib/ld-linux.so.2 0xb7060bc0 0xb72724ff No /opt/bf2/pb/pbsv.so 0xb5e95a50 0xb5e9c8c8 No /lib/i386-linux-gnu/libnss_files.so.2 0xb5e8ec00 0xb5e91c38 No /lib/i386-linux-gnu/libnss_dns.so.2 0xb5e7b680 0xb5e877e8 No /lib/i386-linux-gnu/libresolv.so.2 0xb38a1e90 0xb3b55ba0 No /opt/bf2/bin/ia-32/libaidll.so (gdb) info registers eax 0x0 0 ecx 0xa72cf38 175296312 edx 0x54657475 1415935093 ebx 0xb3b6bc6c -1279869844 esp 0xbfcab700 0xbfcab700 ebp 0xbfcab738 0xbfcab738 esi 0xbfcac520 -1077230304 edi 0xffffffff -1 eip 0xb3a09497 0xb3a09497 eflags 0x10286 [ PF SF IF RF ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x33 51 (gdb) info stack #0 0xb3a09497 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #1 0xb3a9698d in ?? () from /opt/bf2/bin/ia-32/libaidll.so #2 0xb3a98163 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #3 0xb3a3ac59 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #4 0xb3979745 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #5 0xb3982453 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #6 0xb393bc99 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #7 0xb38a6fd8 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #8 0xb3acfcb7 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #9 0xb3ad4427 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #10 0xb3a94909 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #11 0xb3addfc2 in ?? () from /opt/bf2/bin/ia-32/libaidll.so #12 0x080a5995 in ?? () #13 0x0a528538 in ?? () #14 0x080afe73 in ?? () #15 0x0a12ad20 in ?? () #16 0x0812330f in ?? () #17 0x0a12ad20 in ?? () #18 0x08051043 in ?? () #19 0x09da0618 in ?? () #20 0x08051628 in ?? () #21 0x09da05c0 in ?? () #22 0xb7323e16 in ?? () from /lib/i386-linux-gnu/libc.so.6 #23 0x0804e181 in ?? () |
|
|
22.12.2014, 1:33
Сообщение
#10
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Вот бляха-муха!
Сообщение отредактировал Jack-Metallurg - 22.12.2014, 1:55 |
|
|
22.12.2014, 1:36
Сообщение
#11
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Блинн! Прошу прощения, но произошел какой-то сбой при отправлении поста и их вылезло аж 3 штуки
Сообщение отредактировал Jack-Metallurg - 22.12.2014, 1:49 |
|
|
26.12.2014, 16:20
Сообщение
#12
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Ошибка напрямую связана с библиотекой libAIDLL, в которой произошла ошибка, после управление библиотека вернула встроенному отладчику BF2 dice::hfe::Debug::~Debug().
Имя функции: внутреннее dice::hfe::ai::BBPChange::createPlan(dice::hfe::ai::Bot *) внешнее _ZN4dice3hfe2ai9BBPChange10createPlanEPNS1_3BotE Конкретно проблему вызывает следующий код: Раскрывающийся текст Код .text:0023C0FB loc_23C0FB: ; CODE XREF: dice::hfe::ai::BBPChange::createPlan(dice::hfe::ai::Bot *)+4BE6j .text:0023C0FB lea eax, [ebp+var_78] .text:0023C0FE lea esi, [ebp+var_88] .text:0023C104 mov [esp+8], eax .text:0023C108 lea eax, (aBytes_+9 - 4B30C4h)[ebx] .text:0023C10E mov [esp+4], eax .text:0023C112 mov [ebp+var_490], esi .text:0023C118 mov [esp], esi .text:0023C11B lea esi, [ebp+var_68] .text:0023C11E call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator<char> const&) .text:0023C123 mov [esp], esi .text:0023C126 lea eax, [ebp+var_58] .text:0023C129 mov [esp+8], eax .text:0023C12D lea eax, (aAiAidllAiAiuti - 4B30C4h)[ebx]; "AI/AIDLL/AI/AIUtils/checkPointer.h" .text:0023C133 mov [esp+4], eax .text:0023C137 call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator<char> const&) .text:0023C13C mov [esp+8], esi .text:0023C140 mov edi, [ebp+var_490] .text:0023C146 mov eax, 2Eh .text:0023C14B mov [esp+0Ch], eax .text:0023C14F lea esi, [ebp+var_178] .text:0023C155 mov eax, 6 .text:0023C15A mov [esp+10h], edi .text:0023C15E lea edi, [ebp+var_48] .text:0023C161 mov [esp+4], eax .text:0023C165 mov [esp], esi .text:0023C168 call __ZN4dice3hfe5DebugC1ENS0_9DebugTypeERKSsiS4_; dice::hfe::Debug::Debug(dice::hfe::DebugType,std::string const&,int,std::string const&) .text:0023C16D lea edx, [ebp+var_168] .text:0023C173 lea eax, (aAiAllocationFa - 4B30C4h)[ebx]; "AI::Allocation failed" .text:0023C179 mov [esp], edx .text:0023C17C mov [esp+4], eax .text:0023C180 call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char const*) .text:0023C185 mov [esp], esi .text:0023C188 mov esi, 0FFFFFFFFh .text:0023C18D call __ZN4dice3hfe5DebugD1Ev; dice::hfe::Debug::~Debug() .text:0023C192 mov eax, [ebp+var_68] .text:0023C195 mov edx, esi .text:0023C197 lea ecx, [eax-0Ch] .text:0023C19A lock xadd [eax-4], edx .text:0023C19F test edx, edx .text:0023C1A1 jle short loc_23C1CC .text:0023C1A3 В консоль выводится ошибка "Debug assertion failed.... Error text: AI::Allocation failed" Что может быть - неправильно создан или пофикшен AI NavMesh, неправильно созданы точки и/или вейпоинты для ботов (не завершены). В любом случае, крашится сервер по ошибке инициализации AI, что требует вмешательства в код карты и проверку его на Debug-версии BF2_r.exe или в BF2Editor. Сообщение отредактировал Tema567 - 26.12.2014, 16:21 |
|
|
27.12.2014, 2:24
Сообщение
#13
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Tema567 , если предыдущий ответ мне, то у меня возникает вопрос: почему данная карта НЕ валит сервер на Виндовозе , а почему заваливает сервер на Дебиане?
|
|
|
29.12.2014, 10:07
Сообщение
#14
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Вероятнее всего залил файлы с именами в неправильном регистре. На линуксах BF2 требует обязательно переводить все файлы в нижний регистр.
|
|
|
2.1.2015, 20:41
Сообщение
#15
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Файлы с не правильным регистром, а вернее с не правильным наклоном косых я уже исправил. Эти карты стали рабочими
Сообщение отредактировал Jack-Metallurg - 2.1.2015, 20:48 |
|
|
2.1.2015, 20:43
Сообщение
#16
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Ответ совершенно не в попад
"Debug assertion failed.... Error text: AI::Allocation failed" не выводится у меня такая ошибка. Вот что выводится: Раскрывающийся текст Ладно. Забьем на это дело. Все равно никто ничего не знает и никто ничем не поможет. Тогда такой вопрос: Для сервака под виндовозом есть такая приблуда BF2CC. На сколько я помню, в ней была такая фишка, автоматическое восстановление сервера после падения. Для линукса такой приблуды нет. Да и она собственно мне не интересна. Меня интересует сам скрипт востановления. Есть ли в природе для Линукса такой скрипт? Если есть, то подскажите, где взять. В гуглояндухе не нашел ниии чеее гооо. |
|
|
4.1.2015, 21:05
Сообщение
#17
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата(Jack-Metallurg @ Пятница, 2 Января 2015, 22:43:07) [snapback]1986423[/snapback] Для сервака под виндовозом есть такая приблуда BF2CC. На сколько я помню, в ней была такая фишка, автоматическое восстановление сервера после падения. Для линукса такой приблуды нет. Да и она собственно мне не интересна. Меня интересует сам скрипт востановления. Есть ли в природе для Линукса такой скрипт? Если есть, то подскажите, где взять. В гуглояндухе не нашел ниии чеее гооо. Всё существует, довольно доступный, удобный, бесплатный и коробочный метод в мире Unix. На голову выше и удобнее, чем хвалёный вшивый Firedaemon. Ставим пакеты monit, screen из репозитария: Код # apt-get update && apt-get install monit screen Настраиваем конфиг /etc/monit/monitrc: 1. Уменьшаем время задержки демона до 30 секунд: Код set daemon 30 # check services at 1/2-minute intervals 2. Для управления демоном нужно раскоментировать строчки: Код set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and Добавляем конфиг bf2_1.conf в директорию /etc/monit/conf.d/ Пример bf2_1.conf: Код check process BF2_1 with pidfile /opt/bf2_1/bf2d.pid start program = "/opt/bf2_1/bf2d.sh start" stop program = "/opt/bf2_1/bf2d.sh stop" if failed port 16567 use type udp then restart Где /opt/bf2_1/ - директория сервера, 16567 - игровой порт. По программе монит советую покурить мануалы. Программа умеет перезапускать многие службы, нотифицировать админа о событиях (при желании, нотификации по jabber, SMS, email), выполнять многие административно-автоматизированные задачи. Так что очень полезно знать что это такое и с чем едят, ман: Код $ man monit Теперь о скрипте запуска сервера bf2d.sh, его нужно положить в директорию сервера и отредактировать под нужные нам параметры. Писался и обновлялся естественно самостоятельно, так что прошу сильно не судить. Пример bf2d.sh: Код #!/bin/bash Все необходимо подправить на свой вкус и цвет.############################################## dmid="" servername="BF2_1" username="master" dmid=`ps awx | grep '/opt/bf2_1/bin/ia-32/bf2' | grep -v grep | awk '{ print $1 }'` sudo -u $username /bin/echo Checked $servername PID $dmid >> /opt/bf2_1/restart.log if [ "$1" = "stop" ] then # kill process if [[ -n $dmid ]] then /bin/kill $dmid sudo -u $username /bin/echo `date` stopped server $servername >> /opt/bf2_1/restart.log fi exit 0 fi if [ "$1" = "start" ] then # kill process if [[ -n $dmid ]] then /bin/kill $dmid fi # start bf2 cd /opt/bf2_1/ sudo -u $username /usr/bin/screen -dmS BF2_1 /opt/bf2_1/start.sh csid=`ps awx | grep -v awk | awk '/SCREEN -dmS BF2_1/ { print $1 } '` dmid=`ps awx | grep '/opt/bf2_1/bin/ia-32/bf2' | grep -v grep | awk '{ print $1 }'` sudo -u $username /bin/echo $dmid > /opt/bf2_1/bf2d.pid sudo -u $username /bin/echo `date` started server $servername DMID $dmid SCREENID $csid >> /opt/bf2_1/restart.log exit 0 fi Изменить юзера, под которым будет работать сервер bf2/bf2cc, изменить пути При необходимости отредактировать start.sh следующим образом: Код #! /bin/sh MACH="" # 64-bit FreeBSD is "amd64"; emulates 32-bit Linux. case `uname -m` in i[3456]86 | amd64) MACH="ia-32" ;; x86_64) MACH="amd-64" ;; esac # 32-bit mode MACH="ia-32" # 64-bit mode # MACH="amd-64" if ! [ -d pb ] then ln -s pb_$MACH pb fi BINARY_DIR="$(pwd)/bin" if [ -d "$BINARY_DIR/$MACH" ] then BINARY_DIR="$BINARY_DIR/$MACH" fi # Make the OS give us .core-dumps if the server crashes ulimit -c unlimited export LD_LIBRARY_PATH=$BINARY_DIR echo "--- Started: $(date) ---" >> error.log exec taskset -c 0 "$BINARY_DIR/bf2" "$@" 2>>error.log Этот скрипт форсирует выполнение в режиме 32 бит, использование первого ядра CPU в системе, можно указывать его id (для 4 ядерных 0-3) и выводит все ошибки с консоли в error.log Пример скрипта bf2ccd.sh, если все же нужен bf2cc daemon: Код #!/bin/bash ############################################## dmid="" servername="BF2_1" username="master" dmid=`ps awx | grep '/opt/bf2_1/bf2cc/bf2ccd.exe' | grep -v grep | awk '{ print $1 }'` sudo -u $username /bin/echo Checked $servername PID $dmid >> /opt/bf2_1/restart.log if [ "$1" = "stop" ] then # kill process if [[ -n $dmid ]] then /bin/kill $dmid sudo -u $username /bin/echo `date` stopped server $servername >> /opt/bf2_1/restart.log fi exit 0 fi if [ "$1" = "start" ] then # kill process if [[ -n $dmid ]] then /bin/kill $dmid fi # start bf2cc cd /opt/bf2_1/bf2cc/ sudo -u $username /usr/bin/screen -dmS BF2_1 /opt/bf2_1/mono/bin/mono /opt/bf2_1/bf2cc/bf2ccd.exe -ranked -autostart csid=`ps awx | grep -v awk | awk '/SCREEN -dmS BF2_1/ { print $1 } '` dmid=`ps awx | grep '/opt/bf2_1/bf2cc/bf2ccd.exe' | grep -v grep | awk '{ print $1 }'` sudo -u $username /bin/echo $dmid > /opt/bf2_1/bf2d.pid sudo -u $username /bin/echo `date` started server $servername DMID $dmid SCREENID $csid >> /opt/bf2_1/restart.log exit 0 fi Выполняем затем от рута: Код # /etc/init.d/monit restart # monit start BF2_1 Проверка состояния сервера: Код # monit status BF2_1 Как я уже сказал, monit сам мониторит жизнь процесса, периодически проверяя доступность процесса, отправляя пакеты на указанный порт и ожидая ответа от процесса. Сервер будет перезапущен автоматически, если он "не отвечает", "завис", "умер" и т.д. Винда же из коробки так нифига не умеет - если процесс bf2_w32ded повис, BF2CC будет висеть вместе с ним. Из дополнительных плюсов такого подхода на линуксе: - Демон monit стартует при загрузке системы сам, и запускает все службы, которые требуют запуска. - Автозапуск происходит всегда, автоперезапуск тоже. - Управление можно настроить в monit и с соседних машин, и что более удобно, через Web-морду (monit работает как HTTP сервер и принимает команды) - Через cron автоматически перезапускаем сервер, например ежедневно в 6:00 утра по Москве. Профилактика. Всё настраивается на конфигах и скриптах, и работает тупо, железно, как часики. Сообщение отредактировал Tema567 - 4.1.2015, 21:15 |
|
|
5.1.2015, 2:14
Сообщение
#18
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Чуйка мне подсказывает, что это то что мне надо и то что я долго искал и не мог найти. Наверно были не правильные постановки вопросов для поиска.
Tema567 ,респектуха тебе за исчерпывающий ответ. |
|
|
5.1.2015, 23:48
Сообщение
#19
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Tema567 , возник вопрос: что такое dmid="", что сюда писать? И откуда это взять? И еще у тебя servername="BF2_1", а у меня по IP-шнику, значит мне ip забивать или то что в serversetting.con вбито?
|
|
|
6.1.2015, 2:07
Сообщение
#20
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
dmid - это daemon id отслеживаемого процесса, он же искомый pid. В начале скрипта определён как пустая строка.
BF2_1 - это внутреннее имя программы/сервера, его можно поменять на любое другое. Оно используется в качестве имени терминала screen. Т.е. открыть консоль с сервером можно, выполнив screen -x BF2_1 в консоли. |
|
|
Текстовая версия | Сейчас: 26.9.2024, 20:07 |