Page 1 of 2

unhandled exception in parser (again)

Posted: 2004-07-09 19:37:03
by Lord Ruslan Nightmare
поднимаю такую тему (в очередной раз...) всвязи с тем, что обнаружил одну закономерность касательно сабжа
Скрипт приводить не буду. Скажу только, что это скрипт на майнинг и что он использует file i/o

В нем есть такое место :

Code: Select all

  if UO.count("TWF") then
    UO.Usetype("TWF")
  else
    uo.print("Can't find shovel")
    return -1;
  endif


Скрипт работает отлично какое-то время (иногда чар успевает несколько раз набрать свой вес, реколльнуться домой, разгрузиться и вернуться в шахту)
Но в один прекрасный момент (который может наступить скоро, или наоборот - нескоро) выдает сабж, причем последней обрабатываемой строкой перед появлением ошибки всегда является UO.Usetype("TWF"). Повторный запуск скрипта выявляет то, что скрипт не находит больше лопату в бакпаке. Если перелогиниться, то скрипт снова работает нормально - до поры. Если будет время - проверю, как он поведет себя, если положить в бакпак две лопаты.

Еще вопрос не совсем по теме - я пользовался ATOM'ом для передачи команд "exec scriptname" в инжекшн при двух параллельно работающих клиентах. Так вот - один из клиентов через какое-то время виснет. Причем виснуть он может по-разному, в зависимости от реализации функций. Например, у него может накопиться гора вызванных функций, которые не закрываются. Тогда в какой-то момент вылезает сабж, а за ним - куча непонятных эрроров типа SetScript - и все указывают на разные строки скрипта.
Если поставить uo.terminate("имя функции") в конце этой самой функции, то еще страньше - клиент перестаёт отвечать на мои действия (машь, клава) и вообще глючит - но функции исправно вызываются, работают и завершаются.

Re: unhandled exception in parser (again)

Posted: 2004-07-10 01:02:07
by Yoko
Lord Ruslan Nightmare wrote:поднимаю такую тему (в очередной раз...) всвязи с тем, что обнаружил одну закономерность касательно сабжа
Скрипт приводить не буду. Скажу только, что это ....

Те глюки за которые ответственен инжект в 2/3 случаев заключаются в том, что при определённых (но не знаю каких) ситуациях, определённых параметрах компа (не знаю точно каких но количество памяти и операционка точно влияют) создаётся ситуация при которой инжекту отказывают в выделении памяти под очередную вещь. Инжект при этом не мгновенно слетает а через некоторое небольшое время, иногда успев пыхнуть феерверком глюков. Ненахождение вещей при этом один из симптомов.
Это всё лирика, а на практике ничего посоветовать тебе не могу.

Lord Ruslan Nightmare wrote:Еще вопрос не совсем по теме - я пользовался ATOM'ом для передачи команд...

тут я скажу ещё проще - я НИ РАЗУ не проверял как работает передача команд атомом и работает ли она вообще :) круто, да? :)
Писался тот кусок на сессии, и сделать я его сделал а проверить не проверил... может если не забуду на днях гляну, но вряд ли

Posted: 2004-07-10 15:14:41
by Lord Ruslan Nightmare
Да, похоже на правду...Я заметил - у меня когда запустишь клиент, он занимает 33 мега памяти...через пару часов - уже 80 мег...Факт - от работающих скриптов память постепенно пожирается...Не могу точно сказать, из-за чего именно.

Posted: 2004-07-10 16:14:21
by Yoko
проверь на голом клиенте, запусти макрос под изиуо
память тоже будет расти

Posted: 2004-07-10 18:05:15
by Lord Ruslan Nightmare
Это что, мина замедленного действия? Почему занимаемый объем памяти растёт?

Posted: 2004-07-10 18:45:56
by Ex-Brodyaga
Мож в инже используются динамические переменные, но в каком-нибудь случае просто не прописано dispose() и память остаётся занятой, ну то есть не освобождается для "кучи"

Posted: 2004-07-10 19:24:00
by Lord Ruslan Nightmare
Я не думаю, что они бы попались на такой простой вещи как освобождение памяти динамических переменных. Наверняка всё сложнее.

Posted: 2004-07-10 19:43:37
by Lord Ruslan Nightmare
Еще немного потыкал скрипт. Оказывается, что в какой-то момент он просто перестаёт находить лопату, после чего какое-то время стоит на месте - и, наконец, выкидывает эксепшн.

Posted: 2004-07-11 10:42:16
by Yoko
ты начинаешь повторяться :)
проверь заодно что ты лопату нигде не ,ignorишь

Posted: 2004-07-11 23:01:12
by Lord Ruslan Nightmare
у меня в скрипте ignorereset на каждом шагу

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

Posted: 2004-07-12 08:55:46
by ykka
руслан у тя инжект не крошится когда вокруг много народа?



Lord Ruslan Nightmare wrote:Да, похоже на правду...Я заметил - у меня когда запустишь клиент, он занимает 33 мега памяти...через пару часов - уже 80 мег...Факт - от работающих скриптов память постепенно пожирается...Не могу точно сказать, из-за чего именно.


кстате про память да деиствительно у меня тоже жрет, потом через какоето время парсенс егог, виснит и умерает _(

Posted: 2004-07-12 12:34:54
by Lord Ruslan Nightmare
краши - это зависит еще и от клиента. 2.0.3 крашит, а вот 3.0.0с - нет.

Posted: 2004-07-12 14:19:27
by ykka
мож дать или сылку кинуть на него без скриптования

Posted: 2004-07-12 16:56:59
by ykka
хотя ненадо уже сам все сделал !

а вот кстате у меня есть 3 0 1а с ним будет ультима крошится ?

Posted: 2004-07-12 17:43:19
by ykka
кстате че обозначает буквы в конце клиента?

Posted: 2004-07-13 09:00:05
by Lord Ruslan Nightmare
версии
А вообще, с такими вопросами надо идти в Origin, они же клиент пишут...

Posted: 2004-07-14 20:35:49
by ykka
ну поиграл я на 300с вреде глючить меньше стало !
кстате руслан ты с дрв?

Posted: 2004-07-15 14:24:46
by Lord Ruslan Nightmare
Нет, я с RUO

Posted: 2004-07-18 11:19:20
by Lord Ruslan Nightmare
Писец...я (по ндобности - продавал накопившееся оружие) много (раз 50) прыгал туда-обратно через гейт . Объем занимаемой памяти вырос до 150 мег....
Может, можно сделать какую-нибудь команду, чтобы инжекшн забывал ВСЕ айтемы, которые он запомнил? Или память тратится не на них (кстати, при логауте память не освобождается)?

Posted: 2004-07-18 20:35:24
by Yoko
попробуй без инжекта сперва, какой будет результат