|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
Сегодня приключилась вот такая ситуация: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вопрос разработчикам: можно ли расширить эти сообщения, чтобы в первом случае сообщалось, под каким пользователем выполнялся запрос с этой UDF и в какой базе, а во втором случае, какие именно базы были закрыты. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 03:35 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMaxпод каким пользователем выполнялся запрос с этой UDF и в какой базе, а во втором случае, какие именно базы были закрыты. Кривая udf завалит любой сервер. П.С. Ставлю рубль на то, что "formatdate" просто написана криво, потому что сервер вряд-ли дает ей кривые данные... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 08:43 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
wadman, Сервер в лице какого-то пользователя (разработчика) передал туда кривые данные. Я хочу знать, кто это был, чтобы выяснить, что там такое было, и на какой базе. P.S. С ошибкой в UDF, конечно же, разберемся. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 08:52 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMaxСервер в лице какого-то пользователя (разработчика) передал туда кривые данные. Давай рассмотрим с другой стороны: что туда можно передать кривого? Пустую строку? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Дак и на выходе будет пустая строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 08:56 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMax, к сожалению, чтобы udf могла автоматически (без явной передачи через аргументы) получать хоть какую-то информацию от сервера, надо расширять функционал ib_util.dll. Иначе - только через аргументы функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:03 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
wadman, Камрад, ты чего оффтопишь? Какая разница, что там в UDF? Это может быть абсолютно любая функция, в том числе состоящая из строки raise Exception.Create. Я спрашиваю про расширение диагностики от сервера, а не про то, как написать функцию, в которой не будет необработанных исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:06 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructorCyberMax, к сожалению, чтобы udf могла автоматически (без явной передачи через аргументы) получать хоть какую-то информацию от сервера, надо расширять функционал ib_util.dll. Иначе - только через аргументы функции. Сообщение в логе формирует сервер в момент падения. Вопрос: при чем тут передача информации от сервера в UDF? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:08 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructor, в UDR (FB 3) можно получить любую инфу от сервера без проблем. Но их надо научится готовить. Это немного сложнее чем написать UDF. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:13 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMax, не факт что в момент падения можно вытащить информацию о пользователе который его вызвал ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:15 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMax, если udf функция может поймать исключение через try/catch блок и обработать, то достаточно получить информацию о контексте транзакции и сохранить необходимую информацию в журнал событий. Вопрос только в том, как получить информацию о контексте транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:18 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисDBConstructor, в UDR (FB 3) можно получить любую инфу от сервера без проблем. Но их надо научится готовить. Это немного сложнее чем написать UDF. Обнадёживающе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:19 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructorCyberMax, если udf функция может поймать исключение через try/catch блок и обработать, то достаточно получить информацию о контексте транзакции и сохранить необходимую информацию в журнал событий. Вопрос только в том, как получить информацию о контексте транзакции. Какой еще журнал событий? Какой контекст транзакции? Ты тычешь пальцем в небо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:25 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
>fatal exception: Access violation. Гарантированно только дамп можно получить, и из него выколупывать. Кибермах 5й год сногается с gm_udf, судя по форуму. P.S. Весьма плохая идея совать внутрь сервера (любого процесса) код от другого компилятора. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:50 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMaxКакой еще журнал событий? Любой. В таком варианте хоть на syslogd отправляй - без разницы. Но было бы идеально, если бы ib_util предоставляла возможность записи в log файл сервера Firebird. CyberMaxКакой контекст транзакции? Идентификатор пользователя, идентификатор транзакции и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:56 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
ЗимарглP.S. Весьма плохая идея совать внутрь сервера (любого процесса) код от другого компилятора. Интересное мнение... Обоснуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 10:59 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructorЗимарглP.S. Весьма плохая идея совать внутрь сервера (любого процесса) код от другого компилятора. Интересное мнение... Обоснуй. "У меня не получилось". (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:07 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
ЗимарглГарантированно только дамп можно получить, и из него выколупывать. Не надо никакого дампа. ЗимарглКибермах 5й год сногается с gm_udf, судя по форуму. Дык. Сам пишу - сам сношаюсь же. ЗимарглP.S. Весьма плохая идея совать внутрь сервера (любого процесса) код от другого компилятора. Какого другого? dll состоит из машинного кода, который все равно, чем и как сформирован. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:10 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructor, Я тебя умоляю, не пиши в эту тему больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:13 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
фигней занимаетесь, господа ))) вот сделать obj client для компиляции в ехе было бы классно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:21 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
CyberMaxЗимарглP.S. Весьма плохая идея совать внутрь сервера (любого процесса) код от другого компилятора. Какого другого? dll состоит из машинного кода, который все равно, чем и как сформирован. Судя по статистике, многие не понимают промежуточные этапы, что именно "отсебя" добавляет компилятор в машинный код. Не учитывают ньюансы и в итоге подобные проблемы. А ньюансов много. Была статья на stackoveflow, Но сходу повторно не нашел. Вкратце, что по разному обрабатывается - классы, стек, потоки, исключения, динамическая память. Наверняка что то спросонья еще забыл. На этом же форуме много раз писали правильную вещь - избавляйтесь от UDF. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:29 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructorCyberMaxКакой контекст транзакции? Идентификатор пользователя, идентификатор транзакции и т.д. никто не будет это делать для UDF. UDF имеют множество ограничений и на данный момент это считается Legacy внешними функциями. В UDR это уже есть. На Delphi их тоже можно писать. Сейчас как раз с этим разбираюсь. Даже кое-что удалось сделать. Кстати я сомневаюсь что ты сможешь перехватить Access violation в коде UDF ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:31 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисКстати я сомневаюсь что ты сможешь перехватить Access violation в коде UDF Т.е. обращение по нулевому указателю я могу поймать в try блоке, а "Access violation" нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:36 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисКстати я сомневаюсь что ты сможешь перехватить Access violation в коде UDF Можно. Это обычное исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:47 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
DBConstructor, а где гарантия что Access violation произошёл внутри UDF, а не в момент освобождения выделенной в ней памяти движком FB? Хотя текст ошибки вроде указывает на это. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 11:53 |
|
Дополнительная информация при ошибке в UDF
|
|||
---|---|---|---|
#18+
Симонов Денис, Денис, чего ты за AV зацепился? FB падает при любом необработанном исключении в udf. С другой стороны, кто-нибудь может сказать, зачем FB вообще падает? При вызове UDF достаточно же сделать try/catch, не? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 12:01 |
|
|
start [/forum/topic.php?fid=40&msg=39134020&tid=1562433]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 276ms |
total: | 419ms |
0 / 0 |