• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Падает Сервер При Выполнении Агента На Сервере

dimat

Well-known member
31.07.2008
508
0
BIT
0
Всем привет!
Если в процессе выполнения агента случается какая то ошибка(опытным путем выяснено: падает при любой ошибке. Например если NotesDocument=Nothing и к нему идет обращение или при ошибке Type mismatch) сервер сразу же падает.
Ситуация имеет место быть на сервере 8.5.1 и на сервере 8.5.3 + все фикс паки и хот фиксы.
Грешит этим только один агент в одной бд. Все остальные ведут себя как положено - выполняют действия согласно обработчику ошибок, если таковые имеются.

Как исправить проблему?
 
K

Kee_Keekkenen

без кода трудно себе представить оное..
 
D

divankin

Скорей всего проблема в коде обработчика ошибки. Так что все равно нужен код.
Ну или отключите любую обработку ошибок, закоментите все On Error и посмотрите будет ли падать.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Например был агент вида:

Код:
dim view as notesview
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
print doc.getitemvalue("itemname")(0) 'На этой строке падает сервер (проверено)

при следущем варианте сервер не падает
Код:
dim view as notesview
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
if not doc is nothing then
print doc.getitemvalue("itemname")(0)
end if

в этом коде агент должен завершиться и написать в коносль текст ошибки и строку, однако сервер опять лежит

Код:
dim view as notesview
on error goto errh
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
print doc.getitemvalue("itemname")(0) 'На этой строке падает сервер (проверено)

exitsub:
exit sub

errh:
Print "Error: " & error & " line: " & erl
resume exitsub
 
K

Kee_Keekkenen

раз пошла такая пьянка, то создай нового агента и перенеси в него код, а старый удали..
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
nsd.exe на своём месте, не переносили/переименовывали?
 
D

divankin

Проблема для любых серверных агентов в этой БД?
Если вообще убрать весь код и добавить что-нибудь совсем безобидное типа деления на ноль, то проблема остается?
Или для проблемы нужно и GetView, и GetDocumentByKey?
Откуда берется объект db, это просто CurrentDatabase или что? Он получает значение в этой же процедуре?
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Проблема для любых серверных агентов в этой БД?
Только для этого агента
Если вообще убрать весь код и добавить что-нибудь совсем безобидное типа деления на ноль, то проблема остается?
Или для проблемы нужно и GetView, и GetDocumentByKey?
Остается, выше написал, что такая хрень происходит при любых ошибках
Откуда берется объект db, это просто CurrentDatabase или что? Он получает значение в этой же процедуре?
db - это текущая бд
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
67
А в этом агенте (или в используемых им библиотеках) не используются ли какие-нить ф-ции из API?
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
67
Чего-то я не понял. Создаем нового агента с новым именем, содержащего некий произвольный код - он падает? Изменяем произвольный код на требуемый - падает?

У мну такое ощущение, что база, в которой создается агент, битая... А если в другую базу его перенести (с соответствующим изменением кода, ессно)?
 

puks

Lotus Team
03.02.2007
1 919
55
BIT
3
nsd file должен создаваться в data\IBM_TECHNICAL_SUPPORT .
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!