<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Падение QUIK с 0xC0000005: Access violation]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Падение QUIK с 0xC0000005: Access violation форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 24 Apr 2026 06:54:05 +0300</pubDate>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22570/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0RHBFxbg" href="/user/3314/" bx-tooltip-user-id="3314">philave</a> написал:<br /><br />====quote====<br />А можете в двух словах объяснить почему? Как-то это не очевидно и более того, мне кажется, архитектурно правильнее делать в отдельном потоке main свой UI.<br /><br />=============<br /><br />=============<br />Это очевидно, если вы хоть раз писали цикл обработки сообщений и собственно оконную функцию на WinAPI.<br />Кроме того, при использовании UI в отдельном потоке вы фактически обращаетесь к &quot;экранным&quot; объектам из разных потоков, т.к. QUIK, как и любое Windows-приложение имеет свой цикл обработки оконных сообщений, т.е. тоже самое, что написано в iup.MainLoop().<br />Кроме того, вызывать iup.MainLoop() вызывать в основном потоке Квика не следует, если вы запускаете все это хозяйство в QUIK.<br />Да, когда вы всё перенесете основной поток - то не следует обращаться к iup из кода, работающего в main() скрипта или вызываемого оттуда. Опять же потому, что в iup нет реализации корректной многопоточной работы, она банально для этого не предназначена. <br />
			<i>17.02.2017 20:41:28, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22570/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22570/topic2549/</guid>
			<pubDate>Fri, 17 Feb 2017 20:41:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22567/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qkSVCxkB" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br /> philave &nbsp;, <br />Попробуйте перенести работу с UI в основной поток терминала.<br /><br />=============<br /><br />Спасибо за совет!<br />Перенес обработку UI в главный поток QUIK и, очень похоже, это помогло. Проблема заявленная в теме ушла – по крайней мере сейчас 2 часа гонял и ее не удалось ее воспроизвести.<br /><br />Правда появилась другая проблема – сейчас скрипт не возможно остановить не обрушив QUIK. Но это уже другая история. Надеюсь это удастся поправить.<br /><br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_WpqqhznA" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br /><br />====quote====<br /> Библиотека подключается в процессе info.exe - это код и он один на все потоки. <br />А UI строится в том же main. <br />=============<br />никогда не истользуйте. UI в дополнительном потоке.<br />глюки гарантированы и это объяснимо.<br />=============<br /><br />А можете в двух словах объяснить почему? Как-то это не очевидно и более того, мне кажется, архитектурно правильнее делать в отдельном потоке main свой UI. <br />
			<i>17.02.2017 19:15:21, philave.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22567/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22567/topic2549/</guid>
			<pubDate>Fri, 17 Feb 2017 19:15:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22566/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><span class="bx-font" style="font-size:;">Библиотека подключается в процессе info.exe - это код и он один на все потоки.</span><br />А UI строится в том же main. <br />=============<br />никогда не истользуйте. UI в дополнительном потоке.<br />глюки гарантированы и это объяснимо. <br />
			<i>17.02.2017 18:03:14, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22566/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22566/topic2549/</guid>
			<pubDate>Fri, 17 Feb 2017 18:03:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22562/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_vh2RwJmI" href="/user/3314/" bx-tooltip-user-id="3314">philave</a>, <br />Попробуйте перенести работу с UI в основной поток терминала.<br />К тому же я вижу, что вы используете luawin. Возможно, это тоже как-то влияет. <br />
			<i>17.02.2017 13:12:36, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22562/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22562/topic2549/</guid>
			<pubDate>Fri, 17 Feb 2017 13:12:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22550/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_za98aHt4" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Знакомая песня. Поддержка всегда валит вину на кого-то другого, пока не &quot;припрёшь их к стенке&quot;.<br /><br />=============<br />Очень похоже поддержка права. Я сделал тестовый скрипт, который реализует тот же функционал, но без интерфейса и без IUP - QUIK перестал падать.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_7DqoHPyO" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Может быть дело в этом? А библиотека в каком потоке подключается? UI в каком потоке строится?<br /><br />=============<br />Библиотека подключается в процессе info.exe - это код и он один на все потоки.<br />А UI строится в том же main. Код main выглядит вот так:<br />
====code====
<pre>function main() -- Функция, реализующая основной поток 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("main:"..luawin.GetCurrentThreadId(), 2)
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if isConnected() == 0 then -- Скрипт не запускается если QUIK не подключен
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlg_main:showxy(iup.CENTER, iup.CENTER) -- Показываем главное окно со списком заявок
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main_timer.run = "YES" -- Запускаем поток обработки заявок
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iup.MainLoop() -- Здесь этот поток зависает пока не будет закрыто главное окно или остановлен скрипт из QUIK
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main_timer.run = "NO" -- Останавливаем поток обработки заявок
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cancelAllOrders() -- Посылаем сигнал на снятие всех заявок. Ждать результата уже не будем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iup.ExitLoop()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iup.Close()
end
</pre>
=============
Здесь iup.MainLoop() разгребает очередь сообщений UI. События на вызов таймера приходят в эту же очередь. Судя по логу callback таймера всегда вызывается в том же потоке, что и main. <br />
			<i>16.02.2017 19:25:08, philave.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22550/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22550/topic2549/</guid>
			<pubDate>Thu, 16 Feb 2017 19:25:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22549/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_H5io4Ns1" href="/user/3314/" bx-tooltip-user-id="3314">philave</a> написал:<br />В итоге после пересылки кода в поддержке QUIK воспроизвести падение не смогли, но предположили, что, скорее всего, проблема из-за того, что в скрипте для GUI используется IUP. <br />=============<br />Знакомая песня. Поддержка всегда валит вину на кого-то другого, пока не "припрёшь их к стенке".<br />Но из собственного опыта скажу, что у меня падения происходили чаще из-за ошибок в самом QLua.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_75gms0ie" href="/user/3314/" bx-tooltip-user-id="3314">philave</a> написал:<br />Скрипт запускает в main() таймер<br />=============<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_BEuHeDMn" href="/user/3314/" bx-tooltip-user-id="3314">philave</a> написал:<br />Коллбэк на таймер срабатывает в том же потоке, что и main().<br />=============<br />Может быть дело в этом? А библиотека в каком потоке подключается? UI в каком потоке строится? <br />
			<i>16.02.2017 18:39:34, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22549/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22549/topic2549/</guid>
			<pubDate>Thu, 16 Feb 2017 18:39:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22548/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			IUP уже написана на С++<br />так что не особо обольщайтесь таким вариантом. Ну т.е. волшебства не будет.<br />кстати, попробуйте QVcl<br />может в вашей задаче будет стабильнее<br /><br /><noindex><a href="https://quik2dde.ru/viewtopic.php?id=111" target="_blank" rel="nofollow">https://quik2dde.ru/viewtopic.php?id=111</a></noindex> <br />
			<i>16.02.2017 18:16:34, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22548/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22548/topic2549/</guid>
			<pubDate>Thu, 16 Feb 2017 18:16:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22538/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В итоге после пересылки кода в поддержке QUIK воспроизвести падение не смогли, но предположили, что, скорее всего, проблема из-за того, что в скрипте для GUI используется IUP. <br /> <br />Вроде как использование сторонних библиотек для интерфейса, таких как IUP или WX, в QUIK не рекомендуется. В связи с этим вопрос, а что тогда использовать, если нужен интерфейс чуть больше чем одна таблица?<br /> <br />Может тогда лучший вариант сразу весь код торгового робота писать на C++/C#, а код lua делать из единственной строчки:
====code====
<pre>require(“My_Dll_Which_Does_the_Job”)</pre>
=============
 &nbsp; <br />
			<i>16.02.2017 13:47:58, philave.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22538/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22538/topic2549/</guid>
			<pubDate>Thu, 16 Feb 2017 13:47:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22419/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Отправил код скрипта с библиотеками. Дамп QUIK не создает. <br />
			<i>13.02.2017 18:39:01, philave.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22419/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22419/topic2549/</guid>
			<pubDate>Mon, 13 Feb 2017 18:39:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22411/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день,<br /><br />Для диагностики проблемы просьба направить запрос на адрес: <noindex><a href="mailto:quiksupport@arqatech.com" target="_blank" rel="nofollow">quiksupport@arqatech.com</a></noindex> указав в письме ссылку на данную ветку форума.<br />В письме нужно приложить используемый скрипт, а также файлы дампа, которые расположены в папке QUIK, подпапке /dmp. <br />
			<i>13.02.2017 17:47:45, Stanislav Tvorogov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22411/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22411/topic2549/</guid>
			<pubDate>Mon, 13 Feb 2017 17:47:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с 0xC0000005: Access violation</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22406/topic2549/">Падение QUIK с 0xC0000005: Access violation</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Проблема происходит в lua скрипте, который реализует заявки по волатильности для опционов. Скрипт запускает в main() таймер, который срабатывает через 500ms и пересчитывает новые цены лимитных заявок опционов в соответствии с текущей ценой фьючерса. Если цена для опциона изменилась, то заявка передвигается - делается sendTransaction (&#91;&quot;ACTION&quot;&#93; = &quot;MOVE_ORDERS&quot;). Коллбэк на таймер срабатывает в том же потоке, что и main().<br /> <br />Также скрипт подписан на коллбэк OnTransReply для получения информации о передвижении заявки. <br /> <br />Для UI используется iup.<br />Версия QUIK: 7.5.0.72<br /> <br />Это скрипт корректно работает, но не долго. Где-то через 5 -20 минут QUIK падает с ошибкой:
====code====
<pre>First-chance exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC0000005: Access violation reading location 0x8B0C77A3.</pre>
=============
 <br />Я сделал трейсинг в скрипте, но проблема в том, что падение происходит в произвольном месте. Т.е. нет определенной точки в коде, которая приводит к ошибке. Падение происходит не в потоке обрабатывающим таймер, а в главном потоке QUIK, который вызывает коллбэки. &nbsp;Т.е. что-то просто отваливается в самом QLUA.<br /> <br />Могу выслать сам код для того чтобы воспроизвести ошибку.<br /> <br />Фрагмент лога одного из падений (скрипт перед этим минут 20 нормально работал):
====code====
<pre>main_timer:action_cb():1
main_timer:action_cb():2
recalcOrders():1
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
OnTransReply():begin
OnTransReply():end
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
First-chance exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC0000005: Access violation reading location 0x8B0C77A3.
recalcOrders():5
Unhandled exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC000041D: An unhandled exception was encountered during a user callback.
 
The program '&#91;852&#93; info.exe' has exited with code 0 (0x0).</pre>
=============
 <br /> <br /> <br /> &nbsp; <br />
			<i>13.02.2017 16:30:29, philave.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22406/topic2549/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22406/topic2549/</guid>
			<pubDate>Mon, 13 Feb 2017 16:30:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
