Dangerous Date

Страницы: 1
RSS
Dangerous Date, Падение интерпретатора lua и зависание Quik'а вместе с ним при ошибке в os.date(format).
 
Возможно баян, но заметил, что интерпретатор Lua падает с ошибкой (скриншот), а Quik зависает намертво, если при форматировании даты с помощью os.date(format) допустить ошибку в format.
Будьте осторожны, pcall и xpcall бессильны с ней справиться!

Например:
Код
local r,err = pcall( function()
   print(os.date("%d.%.m.%Y")) -- error
   --print(os.date("%d.%m.%Y"))
   return 1
end )
print(r,err)


Возможно, эту беду починили в Lua 5.2
 
А не могли бы разработчики QUIK посмотреть, что происходит в этот момент в lua и терминале, и описать, что что конкретно там происходит? Интересно узнать.
 
_sk_,
Со слов автора, да и по коду видно, что ошибка происходит в самом Lua, а не в терминале QUIK.
В связи с чем, что именно Вы хотите чтобы мы посмотрели?
То что источник в Lua? так это и без того понятно.
 
То, что квик зависает намертво - это ошибка в квик.
так что не понятно.
следует копать дальше
 
Поскольку команда разработчиков занималась встраиванием lua в терминал, то ей легче, чем простым пользователям, поставить диагноз, что именно пошло не так в lua. А с тем, что если квик в этом случае зависает намертво, то это ошибка квик, -- я согласен. Можно сделать более качественную обработку исключений, даже если они не в языке lua, а в реализации lua. Так что хотелось бы технических подробностей и фикса проблемы зависания терминала.
 
А может всё-таки Lua в Quik на 5.2-5.3 переведём?
Там xpcall с параметрами можно вызывать!  :smile: :wink:
 
_sk_,
Не понятно что именно Вы предлагаете пофиксить?
Если терминал, то от чего? От ошибок в Lua? Или сам Lua?
Вы же понимаете что сам Lua никак не пофиксить т.к. это не наша разработка.
Еще есть iup или wx, да много чего еще. И там тоже есть свои ошибки.
И чинить их надо там, а не в QUIK.

И потом, прежде чем утверждать что проблема в QUIK, Вы сами то побывали воспроизвести зависание?
Вот у меня почему-то ничего не зависает, что я делаю не так?
В QUIK для защиты от чужих ошибок есть замечательная библиотека lua5.1.dll.
То что у автора зависает а у нас нет, наводит на мысли что автор эту библиотеку удалил или заменил чем-нибудь.
Или версия терминала просто старая (сейчас актуальная 7.10).
 
vgi,
Касаемо обновления Lua, в данный момент у нас таких планов нет и в обозримом будущем не планируется.
 
Цитата
Sergey Gorokhov написал:
vgi  ,
Касаемо обновления Lua, в данный момент у нас таких планов нет и в обозримом будущем не планируется.
 
vgi,
Цитата
Sergey Gorokhov написал:
В QUIK для защиты от чужих ошибок есть замечательная библиотека lua5.1.dll.
То что у автора зависает а у нас нет, наводит на мысли что автор эту библиотеку удалил или заменил чем-нибудь.
Или версия терминала просто старая (сейчас актуальная 7.10).
 
Терминал 7.9, ОС Win10.
Код
message(os.date("%d.%.m.%Y"), 1)

выдаёт
Цитата
Unknown error. Possible unhandled exception.

pcall работает, выдаёт ответ (в формате result, error) вида
Цитата
false, function 6F6131D8

Выходит, что у автора проблемы из-за ОС.
 
Провел ряд тестов.
WinXP SP3 :oops:, Quik 7.10

Код скрипта и Результаты тестов:
Скрытый текст


Выводы:
  1. В WinXP в Quik подобная ошибка вне main приводит к зависанию, а в pcall/xpcall не отлавливается и блокирует остальной скрипт
  2. Ужесточить требования, удалив WinXP из списка поддерживаемых  :lol:

PS Как удалить сообщение #9 ?
 
Цитата
vgi написал:
Ужесточить требования, удалив WinXP из списка поддерживаемых  

В списке требований чего? Lua? или QUIK?
QUIK то нормально работает в XP, как же мы его уберем из списка?
Страницы: 1
Читают тему (гостей: 1)
Наверх