вопрос по коллбекам, к разработчикам (ONLY)

Страницы: Пред. 1 2
RSS
вопрос по коллбекам, к разработчикам (ONLY)
 
Цитата
sam063rus пишет:
скрипт полностью закончит свою работу, а вместе с ним и его виртуальная машина полностью закончит работу/будет разрушена?
Недавно мы столкнулись с проблемой очистки памяти после остановки скрипта.
Если не считать ее, то да, так и должно быть.
 
Цитата
sam063rus пишет:
задам другой вопрос: значит ли, что:
когда основное тело скрипта выполнится
и при условии отсутствия каких-либо колбеков в скрипте (за исключением OnStop),
а также при отсутствии в скрипте функции main -
скрипт полностью закончит свою работу, а вместе с ним и его виртуальная машина полностью закончит работу/будет разрушена?
Цитата
Sergey Gorokhov пишет:
да, так и должно быть.
тогда, как работает этот код? :

Код
 package.cpath=getScriptPath().."\\?.dll"
package.path=getScriptPath().."\\?.lua"

require("vcl")
main_window = VCL.Form("mainForm")
main_window._ = {Caption = "simple bot", Height = 150, Width = 150, On Close = "asd"}
main_window:Show()
function asd()
main_window:Free()
end





Не трудно заметить, что окно вполне себе нормально живёт и реагирует на внешние события, несмотря на то, что кнопка "Остановить", нам "каГбэ" намекает, что останавливать-то по сути и нечего - всё уже как бы и так стоит.

Если Вы на это мне скажете, что вот мол, у меня тут есть свой OnClose - я могу привести другую картинку без него - просто окно закрываться перестанет, а все свои стандартные функции, такие как: обновление, обработка других оконных сообщений - оно продолжает исправно выполнять.

Код
 package.cpath=getScriptPath().."\\?.dll"
package.path=getScriptPath().."\\?.lua"

require("vcl")
main_window = VCL.Form("mainForm")
main_window._ = {Caption = "simple bot", Height = 150, Width = 150}
main_window:Show()

данный пример скрипта - закрывает окно только при закрытии квика, что немудренно - т.к. OnStop и OnClose (vcl-овский) - отсутствуют.
 
Перепишите вот так функцию asd() из первого кода, будет интересней   :)  
Код
function asd()
  message('Close', 2)
  main_window:Free()
end
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Серж пишет:
Перепишите вот так функцию asd() из первого кода, будет интересней
Код
 function asd()
  message('Close', 2)
  main_window:Free()
end 
ну и?

тут разговор о том, что заявленные "тезисы" разработчиков - не работают.
 
to разработчикам,

вместо того, чтоб выпускать "сырой" продукт на рынок и за столь долгое время так и не сумев не то, чтоб "допилить" его до товарного вида но, хотя бы даже самим изучить/быть в курсе, как это "чудо" работает, предлагаю отдать qlua в опенсорс. Один хрен, пользователи за вас делают Вашу работу. Так хоть не надо будет им более, что-то объяснять/оправдывать и постоянно допиливать/регистрировать не сбыточные пожелания.
 
Для всех заинтересованных лиц:
взято из "их" м-м, э... "документации":
Цитата
main

Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток. Скрипт считается работающим, пока работает функция main(). При завершении работы функции main() скрипт переходит в состояние «остановлен». Если скрипт находится в состоянии «остановлен», то не происходит вызовов функций обработки событий терминала QUIK, содержащихся в этом скрипте.
порвите её и выкиньте.
 
Добрый день.
Давайте немного успокоимся и сбавим тон. Есть ошибка - при завершении скрипта с ошибкой не освобождаются ресурсы Lua.
Ровно эту картину Вы и наблюдаете - main отсутствует, но ресурсы не освобождены, библиотека не выгружена. Именно она и обрабатывает все события на этой форме.
Эта ошибка будет исправлена.
 
а я уж думал, что Вы мне не ответите. Рад, что наконец удалось "достучаться".
 
осталось только спросить: от "main" в перспективе - нет планов отказываться?
 
Цитата
Michael Bulychev пишет:
при завершении скрипта с ошибкой не освобождаются ресурсы Lua.
дело в том, что ошибки в приведённом скрипте, как таковой и нет.
 
Цитата
sam063rus пишет:
осталось только спросить: от "main" в перспективе - нет планов отказываться?
Пока нет
 
Цитата
sam063rus пишет:
Цитата
Michael Bulychev пишет:
при завершении скрипта с ошибкой не освобождаются ресурсы Lua.
дело в том, что ошибки в приведённом скрипте, как таковой и нет.
В скрипте нет. В чем ошибка я уже рассказал выше.
 
Цитата
Sergey Gorokhov пишет:
из материалов с других форумов - мы знаем, что "main" запускается (а вместе с ней и создаётся отдельный поток) после колбека "OnInit" - значит ли это , что, если в скрипте не будет прописан колбек OnInit - то и для функции "main" не будет создан отдельный поток???

-------------------------
Нет не значит.
Правильный ответ: проверяем есть ли в скрипте OnInit - если есть и он завершился без ошибки то, можно смело запускать поток и вызывать в нём "де-факто"-колбек "main". Если же OnInit нет то, просто пытаемся создать поток и запустить в нём "main"
-----------------------
А вообще-то, с проверок и надо было начинать: если нет "майна", то и не должно быть создания потока. Это одна из Ваших ошибок.
 
Цитата
sam063rus пишет:
Цитата
Sergey Gorokhov пишет:
из материалов с других форумов - мы знаем, что "main" запускается (а вместе с ней и создаётся отдельный поток) после колбека "OnInit" - значит ли это , что, если в скрипте не будет прописан колбек OnInit - то и для функции "main" не будет создан отдельный поток???

-------------------------
Нет не значит.
Правильный ответ: проверяем есть ли в скрипте OnInit - если есть и он завершился без ошибки то, можно смело запускать поток и вызывать в нём "де-факто"-колбек "main". Если же OnInit нет то, просто пытаемся создать поток и запустить в нём "main"
-----------------------
А вообще-то, с проверок и надо было начинать: если нет "майна", то и не должно быть создания потока. Это одна из Ваших ошибок.
Вы не правы, ошибка была совсем в другом. Никакого потока в Вашем коде не создается.
 
Цитата
Michael Bulychev пишет:
Никакого потока в Вашем коде не создается.
он создаётся не у меня, а у Вас в Вашей qlua.
 
Скрытый текст
sam063rus, как по-вашему, как должен повести себя скрипт, что должно произойти с формой в вашем примере?
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
sam063rus пишет:
Цитата
Michael Bulychev пишет:
Никакого потока в Вашем коде не создается.
он создаётся не у меня, а у Вас в Вашей qlua.
Можете показать это?
 
Цитата
Серж пишет:


sam063rus , как по-вашему, как должен повести себя скрипт, что должно произойти с формой в вашем примере ?
Несовсем понял общую мысль да и нет особого желания вникать, т.к. уже всё выяснили с разработчиками.
 
Цитата
Michael Bulychev пишет:
Можете показать это?
нет, у меня же нет от неё исходников.
 
Цитата
sam063rus пишет:
Цитата
Michael Bulychev пишет:
Можете показать это?
нет, у меня же нет от неё исходников.
В Вашем примере дополнительных потоков нет. Все работает пока на закрыта Lua и не выгружена библиотека vcl.dll
 
Михаил, у меня к Вам нет больше никаких вопросов. всё, что я хотел - я уже узнал.
 
В новой версии quik (6.17.0.58 ) были наконец, устранены некоторые недочёты в qlua и "позорный" пример скрипта http://forum.quik.ru/messages/forum10/message1350/topic176/#message1350 теперь ведёт себя надлежащим образом. То есть окно практически сразу закрывается только появившись, с последующей остановкой скрипта. скрипт можно весело "передёргивать", не боясь "подвесить" quik.

ОДНАКО!!!
тестовый запуск широкоизвестного привода: http://mycreditcard.ru/programs/intraday-lua.html а точнее, его остановка привёл к закономерному краху системы и вдобавок, квик просит послать отчёт к такой-то матери. Попытаюсь расписать подробно:
1. при закрытии привода крестиком окна или через меню - скрипт закрывается.
2. если закрыть через меню скрипт при включенной кнопке "Run" (в скрипте) - quik примерно на минуту зависает с выдачей вот этого:

3. если после всего этого закрыть меню "доступные скрипты" - опять (теперь уже короткое) зависание, после чего аварийное закрытие квика и предложение отправить отчёт к такой-то матери.

резюме: в общем, в таком виде, доверять qlua-скриптам свой кошелёк однозначно не стоит. похоже её ещё нескоро допилят до товарного вида.
 
для особонепонятливых:
прошу обратить внимание на то, что скрипт в меню находится в остановленном состоянии (красный квадратик), а в комбобоксе - куча сыплющихся null. стало быть, заявленный тезис о том, что по завершении скрипта - его luastate и LUA VM тоже разрушаются и останавливаются считаю В КОРНЕ НЕ ВЕРНЫМ!
 
Добрый день.
Если есть дамп для изучения - присылайте, посмотрим.  
 
к сожалению, не могу. это не сочетается с моей политикой IT-безопасности. т.к.в нём содержится нетолько относящаяся к системе quik информация.
 
вы можете попытаться сами воспроизвести все шаги, которые я специально для этого указал. ссылки на тестовый привод - тоже есть.
 
Если бы я это воспроизвел, то не просил бы Вас прислать дампы. Только что скачал с сайта эту программу и не смог получить такой эффект.
А какую информацию из мини дампа Вы считаете критичной для своей безопасности?
 
очевидно разработчики у нас самые удачливые, что у них нет никаких проблем. только вот у людей вокруг от этого проблем - не меньше и если даже бегло заглянуть на сайт привода - то нетрудно заметить, что проблемы нетолько у меня одного.
 
Вот последнее сообщение на форуме (я так понимаю от разработчиков)
 
в этом сообщении - есть одно слово: "вроде работает корректно". так вот, не работает оно корректно, без всяких "вроде".

и ещё, процесс winros.exe при аварийном завершении квика не выгрузился, что можно также легко проверить заглянув в диспетчер программ в windows. а если его вручную не "убить" - то нельзя подключиться к серверу - пишет, что "вы уже работаете в системе"
 
Декомпилировать скрипты желания нет, без дампа разбираться не получится.
Процесс winros.exe никак не связан с коннектом к серверу. Если Вы не используете экспорт данных в метасток или омегу, то можете удалить из каталога с терминалом файлы iwr.dll и winros.exe
 
Цитата
Michael Bulychev пишет:
А какую информацию из мини дампа Вы считаете критичной для своей безопасности?
Также интересует этот вопрос. Какая информация содержится в дампе?
Надо делать так, как надо. А как не надо - делать не надо.
 
Код
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [..\dmp\info_20150326_124339.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available

Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path.        *
* Use .symfix to have the debugger choose a symbol path.          *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is: 
 x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Thu Mar 26 12:43:40.000 2015 (GMT+4)
System Uptime: not available
Process Uptime: 0 days 0:22:08.000
................................................................
..................................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(df4.fe8): Access violation - code c0000005 (first/second chance not available)
eax=00009ed0 ebx=0fdac8e4 ecx=c0000005 edx=00000000 esi=000004d4 edi=00000000
eip=7c90e514 esp=0022df6c ebp=0022dfd0 iopl=0      nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000       efl=00000246
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
ntdll!KiFastSystemCallRet:
7c90e514 c3        ret
так пойдёт?
 
выполните !analyze -v
 
почему-то не могу добавить сообщение на форум...
 
Скрытый текст

Скрытый текст
 
и тишина...
 
Пришлите нам дамп падения и подробное описание действий, которые приводят к падению. У меня не получается воспроизвести ошибку.
 
Цитата
Michael Bulychev пишет:
Пришлите нам дамп падения и подробное описание действий
отправил распечатку дампа. если вам этого недостаточно - быть может, вам стоит задуматься над сменой места работы (при всё относительном уважении к вам...)
to работодателям "арки" - вы, очевидно, меценаты, раз за 15 лет несмогли поставить на место своих программеров.
 
и ещё, советую вам (и многим другим "разработчикам") посмотреть мультик про страуса, зарывающего свою голову в песок....
полагаю, те кто, действительно, понял - уже давно всё понял...
 
Цитата
Серж пишет:
Также интересует этот вопрос. Какая информация содержится в дампе?
1. прочитайте ещё раз название темы....
И, если вы по-прежнему возомните себя разработчиком - тогда итолько тогда быть может поговорим...
2. если и опять не дойдёт... - посмотрите в "интернетах" инфу  (только не от microsoft), что действительно включается в файлы дампа...
 
Цитата
sam063rus пишет:
Цитата
Серж пишет:
Также интересует этот вопрос. Какая информация содержится в дампе?
1. прочитайте ещё раз название темы....
И, если вы по-прежнему возомните себя разработчиком - тогда итолько тогда быть может поговорим...
Чего вы так напряглись-то? Вопрос был задан без "подковырки". Я ведь тоже дампы отсылаю разработчикам. А то вдруг чего лишнего в дампе окажется...
Но, если вы не знаете, то, конечно, посмотрю "интернетах".
Не обижайтесь.
Надо делать так, как надо. А как не надо - делать не надо.
 
Добрый день.
Сергей, вот по этой ссылке http://www.debuginfo.com/articles/effminidumps.html#minidumpnormal можно прочитать об информации, которая сохраняется в минидампе.
Кирилл, если дамп прислать невозможно, то опишите подробно по шагам последовательность действий (можно с картинками), попытаемся воспроизвести у себя.
 
Цитата
Michael Bulychev пишет:
Кирилл
весьма интересно откуда у вас это имя? я его нигде не давал. и значит ли это, что и я вправе распоряжаться вашими личными данными по своему усмотрению, а также, общаться с вами по вашему личному email?.... (на этот вопрос требуется обязательный ответ)

Цитата
Michael Bulychev пишет:
опишите подробно по шагам последовательность действий (можно с картинками), попытаемся воспроизвести у себя.
Михаил, специально для этого я расписал выше, как я этого добился. Честно сказать, мне уже надоел этот троллинг со стороны разработчиков, советую ещё раз пересмотреть мультфильм про страуса, зарывающего голову в песок. (без обид)
 
Прямо сейчас я не вспомню точно где я видел Ваше имя. Да, если Вам удобнее, можете писать мне в почту, оставлять личные сообщения.
Пошли уже вторые сутки как я пытаюсь получить от Вас дополнительные сведения об ошибке. Что хранится в минидампе я привел по ссылке выше, там нет никаких секретных данных о Вас.
Мне удалось вызвать ошибку у себя, но я не уверен что это описанный Вами случай. Случается это в ситуации когда привод выбрасывает MessageBox с ошибкой или сообщением и в этот момент попытаться остановить скрипт. Либо нажать на кнопку Run и попытаться остановить скрипт из терминала. В этом случае привод так же не реагирует на действия пользователя и пишет какой-то лог в сотни мегабайт.
В обоих случаях стек падения не содержит qlua.dll и выглядит примерно так:
Код
00d0e87c 76ef6210 76f60230 00000000 00d0e8c8 user32!RealDefWindowProcW+0x4a
00d0e88c 76ef6b34 00000000 08048110 00000000 user32!_EndUserApiHook+0x11
00d0e890 00000000 08048110 00000000 00d0e8fc user32!DefWindowProcW+0x94 
 
Цитата
Michael Bulychev пишет:
Либо нажать на кнопку Run и попытаться остановить скрипт из терминала.
этот случай я тоже расписал:
кнопка RUN в скрипте включена
далее, останавливаю скрипт из меню квика - происходит описанное выше.
----------------

Ваша задача, как разработчиков, обеспечить 100%-ную стабильность квика и тем самым 100% исключить "зависания", аварийные остановы. Вы похоже совсем не пытаетесь нас понять - наши скрипты управляют нашими, РЕАЛЬНЫМИ деньгами и пусть лучше скрипт остановится, чем квик "зависнит" из-за этого. так хоть у пользователя будет меньше времени затрачено на ьто, чтоб его "передёрнуть". В идеале, мы хотим от вас получить фреймворк в котором не надо целый день приглядывать за скриптами, а можно оставить их хоть на целый день.

я, конечно, понимаю, что многое в этом вопросе зависит и от скриптописателей но, как не трудно заметить, есть и куча "косяков" с вашей стороны. и при том, вы (арка с её technologies) абсолютно никак финансово не компенсируете нам, конечным пользователям результаты своих "огрехов".

----------------------
p.s. я больше не буду продолжать развивать эту тему бо как мне моя нервная система дороже. так что, делайте уже, что хотите. пользователи со временем, сами во всём разберуться, поймут вас и накажут тем, что просто будут закрывать счета у тех наших российских  "недоброкеров", которые даже не в состоянии позволить иметь у себя СВОЙ торговый терминал. и даже привязка к аренде платформы ваших серверов ни их, ни вас не спасёт. 15 лет прошло с начала вашего проекта под названием quik. Спрашивается, где итоги? Почему платформа до сих пор не стабильна? (это риторический вопрос - ответ не обязателен и не отслеживается)
 
Цитата
Michael Bulychev пишет:
Либо нажать на кнопку Run и попытаться остановить скрипт из терминала. В этом случае привод так же не реагирует на действия пользователя и пишет какой-то лог в сотни мегабайт.
красный квадратик на картинке  и продолжающиеся сыпаться null в combobox красноречиво каГбе намекают нам, что скрипт УЖЕ остановлен и по идее уже не должно быть никаких сотен мегабайт логописательства и выбрасывания нулевых указателей.
Страницы: Пред. 1 2
Читают тему
Наверх