Произвольное отключение 1 плагина.

Тема в разделе "Программирование / Скриптинг", создана пользователем Regedit, 24 апр 2015.

  1. Regedit

    Regedit

    Сообщения:
    105
    Симпатии:
    1
    Здравствуйте, мой плагин произвольно 1-3 раза в день выключается при этом другие плагины SM продолжают работать (приходится седлать sm plugins load my_plugin). Код не могу дать, потому что плагин просто огромный и разбит на библиотеки. В логах все идеально чисто! Может вы когда-то сталкивались с этой проблемой? Как исправить эти внезапные отключения?

    С огромной надеждой что передовые программисты на вашем форуме сталкивались с этой проблемой и попытаются мне помочь. Спасибо.
     
  2. gibs

    gibs Фитиль народного волненья

    Сообщения:
    540
    Симпатии:
    137
    Никогда с такой проблемой не сталкивался. Но первое, что пришло в голову - вачдог.
     
  3. EPacker2

    EPacker2 3D-моделист

    Сообщения:
    1.034
    Симпатии:
    627
    Возможно, в плагине где-то установлено авто-отключение через некоторое время после загрузки, и так далее.
     
  4. gibs

    gibs Фитиль народного волненья

    Сообщения:
    540
    Симпатии:
    137
    Если бы плагин ставил fail state или выгружался, то это было бы видно в логах.
    Не сбивайте человека с толку.
    Человек, читай - ссылка
     
  5. DarklSide

    DarklSide

    Сообщения:
    685
    Симпатии:
    173
    Regedit, в исходниках по регистру:
    PHP:
    GetTime
    GetGameTime
    GetEngineTime
    OnPluginEnd
    ServerCommand
    ServerCommandEx
    ServerExecute
    unload
     
  6. Regedit

    Regedit

    Сообщения:
    105
    Симпатии:
    1
    Ребята это мой плагин! Он огромный - по сути весть сервер панисан руками даже банальное rtv. Сервер работает стабильно нет ни единой ошибки в логах... опыт в программировании 4 года.

    Добавлено через 1 минуту
    что это???
     
    Последнее редактирование: 24 апр 2015
  7. gibs

    gibs Фитиль народного волненья

    Сообщения:
    540
    Симпатии:
    137
    ...
     
  8. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Твой плагин как-нибудь отображается в списке плагинов (sm plugins list) когда он выключается?

    Если по хорошему, то любое отключение плагина из-за какой бы то ни было неполадки сопровождается записью в лог ошибок. Всё остальное - выгрузка командами.
    В принципе, можно было бы проверить есть ли права на запись в папку с логами (не, ну а вдруг?).

    Есть ли файл sourcemod-fatal.txt (или .log) в папке csgo/cstrike/tf2?
     
  9. Regedit

    Regedit

    Сообщения:
    105
    Симпатии:
    1
    Когда он выключается его нет в sm plugins list! В логах тишина! Во всех логах!!!

    Добавлено через 3 минуты
    изучил вашу ссылку.. как я и говорил нет ошибок логах... хост на майарене..

    Добавлено через 11 минут
    Содержание sourcemod-fatal.log

    L 10/16/2014 - 21:22:55: [SM] Unexpected fatal logging error (file "/home/naykon/sourcegaming/server_1/cstrike/addons/sourcemod/logs/L20141016.log")
    L 10/16/2014 - 21:22:55: [SM] Platform returned error: "Permission denied"
    L 10/16/2014 - 21:22:55: [SM] Logging has been disabled.
     
    Последнее редактирование: 25 апр 2015
  10. Петр Решетов

    Петр Решетов Read Only

    Сообщения:
    153
    Симпатии:
    26
    Permission denied -разве это не отсутствие прав?
     
  11. BatyaMedic

    BatyaMedic Ньюсмейкер

    Сообщения:
    769
    Симпатии:
    123
    chmod -R 777 /папка/сервера
    Мне помогало.
     
  12. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Эта ошибка говорит о том, что у SM нет прав для создания файла логов, ОДНАКО файл имеет название L20141016.log, что значит, что лог от 16.10.2014. Если новых записей там нет, то проблема не в правах.

    Значит кто-то или что-то его выгружает.
    Если логи в папке СМ имеются, то меняй RCON пароль или ищи плагин, который хулиганит.
     
  13. Regedit

    Regedit

    Сообщения:
    105
    Симпатии:
    1
    Есть палюсенький прогрес... в момент выключение плагина (произвольного) срабатывает функция OnPluginEnd() - может есть нестандартные причины вызова такой функции??
     
  14. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.563
    Симпатии:
    1.988
    PHP:
    ServerCommand("sm plugins reload my_plugin.smx");
    Вот и не надо самому всё ручками делать (временное решение).
     
  15. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Насколько я помню OnPluginEnd не срабатывает при крэше плагина на СМ до 1.7.0 включительно... Если в логах ничего нет, то его точно кто-то или что-то выключает.
     
  16. Regedit

    Regedit

    Сообщения:
    105
    Симпатии:
    1
    На всет временного решения я то понимаю.. но не reload а load в таком случат... но в логах пусть все плагины написаны мною и не один не вырубает его)))))
     
  17. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.563
    Симпатии:
    1.988
    load не сработает, если плагин в этот момент времени ещё будет считаться загруженным (не до конца выгрузился).
    А reload - перезагрузит плагин, будь он включён или выключен.
     
    Danyas нравится это.
  18. neatek3

    neatek3

    Сообщения:
    124
    Симпатии:
    127
    Незнаю, поздно отвечу или нет, и правильный ответ или нет.

    Но автор топика говорит что выключается плагин, и весь сервер написан у него на 1 плагине.

    Вывод могу сделать такой:
    Пускай у него хоть 4 года программирования, но это не отменяет того факта что ВСЕ люди кривые, и время от времени пишут тотальный бред, и не рабочий совершенно код, все совершают ошибки. Из этого можно сделать следующее заключение, что где-то в плагине у него утечка памяти, или превышен timeout (ответа от плагина) и тем самым встроенная функция в SM отвечающая за выключения "bad plugins" (плохих плагинов) вырубает этот плагин - это очень полезная функция в SM.

    Подробнее из файла core.cfg
    Код:
    	/**
    	 * If a plugin takes too long to execute, hanging or freezing the game server in the process, 
    	 * SourceMod will attempt to terminate that plugin after the specified timeout length has
    	 * passed. You can disable this feature by setting the value to "0".
    	 */
    	"SlowScriptTimeout"	"6"
    
    Один фиг - проблема это сам плагин. :)
     
  19. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    на таких днище-больших плагинах постоянно идут краши. А у ♥♥♥♥♥кодеров вроде тс оптимизация сильно хромает.