<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Падение QUIK с General Protection Fault]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Падение QUIK с General Protection Fault форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 22 Apr 2026 06:52:37 +0300</pubDate>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24273/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6woHZ315" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />А точно требуется вызывать DestroyTable для таблицы, связанной с окном, которое и так закрывается?<br />Я думал таблица при этом автоматически уничтожится.<br />=============<br /><br />Часть данных остаётся в памяти, что демонстрирует данный скрипт:<br />
====code====
<pre>function main()
&nbsp;&nbsp;t_id = AllocTable()
&nbsp;&nbsp;message(tostring(t_id))
&nbsp;&nbsp;AddColumn(t_id, 1, 'Колонка1', true, QTABLE_STRING_TYPE, 20)
&nbsp;&nbsp;AddColumn(t_id, 2, 'Колонка2', true, QTABLE_STRING_TYPE, 20)
&nbsp;&nbsp;CreateWindow(t_id)
&nbsp;&nbsp;while t_id do
&nbsp;&nbsp;&nbsp;&nbsp;if IsWindowClosed(t_id) then CreateWindow(t_id) end
&nbsp;&nbsp;&nbsp;&nbsp;sleep(100)
&nbsp;&nbsp;end
end</pre>
=============
Поэтому, если таблица более не нужна, я её Destroy <br />
			<i>03.05.2017 21:34:15, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24273/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24273/topic2567/</guid>
			<pubDate>Wed, 03 May 2017 21:34:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24257/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А точно требуется вызывать DestroyTable для таблицы, связанной с окном, которое и так закрывается?<br />Я думал таблица при этом автоматически уничтожится.<br />Или это не так? <br />
			<i>03.05.2017 19:57:48, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24257/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24257/topic2567/</guid>
			<pubDate>Wed, 03 May 2017 19:57:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24256/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_owysFtFz" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br /><br />====quote====<br /> Sergey Gorokhov &nbsp; написал:<br /><br />====quote====<br /> Антонио &nbsp; написал:<br />Наверное, если я прав, имеет смысл в документации указать, что не надо из коллбэка вызывать DestroyTable() &nbsp;и &nbsp;Clear()<br />=============<br />Надо не в документации писать, а разбираться с причинами падения.<br />=============<br />Гы.. Начиная с 7.10 в документацию-таки добавили:<br /><br />====quote====<br /> &nbsp;SetTableNotificationCallback &nbsp;<br /><br />Задание функции обратного вызова для обработки событий в таблице. <br /><br /> ВАЖНО! Недопустим вызов функций Clear и DestroyTable для t_id внутри функции обратного вызова f_cb, назначенной на таблицу с данным t_id. <br />=============<br />Всегда использовал шаблон:<br />
====code====
<pre>&nbsp;&nbsp; SetTableNotificationCallback (t_id,&nbsp;&nbsp;function (t_id, msg, par1, par2)
&nbsp;&nbsp; if&nbsp;&nbsp;msg&nbsp;&nbsp;=&nbsp;&nbsp;=&nbsp;&nbsp;QTABLE_CLOSE&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DestroyTable (t_id)
&nbsp;&nbsp; end 
 end&nbsp;&nbsp; </pre>
=============
и тут на тебе: чё-то поломали и &quot;недопустимо&quot;..<br />=============<br />а чему тут удивляться? Идёт вызов колбека и внутри него вы разрушаете его контекст. Конечно нельзя.<br /><br />использование команды format c: /y внутри командного файла windows тоже приведет к проблеме с дальнейшим выполнением команд из этого командного файла. Правда в последних версиях windows система откажется от суицида ) <br />
			<i>03.05.2017 19:45:41, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24256/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24256/topic2567/</guid>
			<pubDate>Wed, 03 May 2017 19:45:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24251/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ixxT81AR" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><br />====quote====<br /> Антонио &nbsp; написал:<br />Наверное, если я прав, имеет смысл в документации указать, что не надо из коллбэка вызывать DestroyTable() &nbsp;и &nbsp;Clear()<br />=============<br />Надо не в документации писать, а разбираться с причинами падения.<br />=============<br /><br />Гы.. Начиная с 7.10 в документацию-таки добавили:<br /><br />====quote====<br /><span class="bx-font" style="font-size:11pt; line-height: normal;"><B>SetTableNotificationCallback</B></span><br /><br />Задание функции обратного вызова для обработки событий в таблице. <br /><br /><B>ВАЖНО! Недопустим вызов функций Clear и DestroyTable для t_id внутри функции обратного вызова f_cb, назначенной на таблицу с данным t_id.</B><br />=============<br /><br />Всегда использовал шаблон:<br />
====code====
<pre>SetTableNotificationCallback(t_id, function(t_id, msg, par1, par2)
&nbsp;&nbsp;if msg == QTABLE_CLOSE then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DestroyTable(t_id)
&nbsp;&nbsp;end
end</pre>
=============
и тут на тебе: чё-то поломали и &quot;недопустимо&quot;.. <br />
			<i>03.05.2017 18:56:26, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24251/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24251/topic2567/</guid>
			<pubDate>Wed, 03 May 2017 18:56:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22631/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Разобрались в этом вопросе по почте. <br />Вот сегодня у меня случился как раз перезагруз квика по такой ошибке. <br />Отправил файл info_20170220_140947.dmp на почту <noindex><a href="mailto:quiksupport@arqatech.com" target="_blank" rel="nofollow">quiksupport@arqatech.com</a></noindex><br />Надеюсь поможет разобраться в проблеме. &nbsp; <br />
			<i>20.02.2017 14:16:09, Sergey Denegin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22631/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22631/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 14:16:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22621/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_lbYx0U7o" href="/user/1889/" bx-tooltip-user-id="1889">Sergey Denegin</a> написал:<br /><br />====quote====<br /> Антонио &nbsp; написал:<br />В сообщении, скриншот которого Вы приводите, сказано о необходимости отправить нам dmp файл. <br />=============<br />Помню один раз потратил время и по просьбе службы поддержки отправлял целую копию квика (уже не помню по какой проблеме), но ответа так и не получил. А прошло наверно больше года. <br />так что веры в то, что стоит тратить время на отправку дампа тоже нет.<br />=============<br />Добрый день.<br /><br />Проверьте свой почтовый ящик, при попытке отправки на него приходит ответ что превышена некая квота. <br />
			<i>20.02.2017 12:20:10, Alexey Ivannikov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22621/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22621/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 12:20:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22619/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LFdgkW2Y" href="/user/1377/" bx-tooltip-user-id="1377">Антонио</a> написал:<br />В сообщении, скриншот которого Вы приводите, сказано о необходимости отправить нам dmp файл. <br />=============<br />Помню один раз потратил время и по просьбе службы поддержки отправлял целую копию квика (уже не помню по какой проблеме), но ответа так и не получил. А прошло наверно больше года. <br />так что веры в то, что стоит тратить время на отправку дампа тоже нет. &nbsp; <br />
			<i>20.02.2017 11:55:51, Sergey Denegin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22619/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22619/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 11:55:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22615/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_E7o30PZd" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><br />====quote====<br />Надо не в документации писать, а разбираться с причинами падения. <br />В сообщении, скриншот которого Вы приводите, сказано о необходимости отправить нам dmp файл. <br />=============<br /><br /><br />=============<br />dmp-файл отправил.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_d6vqh1VG" href="/user/1889/" bx-tooltip-user-id="1889">Sergey Denegin</a> написал:<br />Но в версиях до 7.6 ничего подобного никогда не происходило, хотя макрос в части пересоздания таблиц никак не менялся.<br />=============<br />Почти согласен: для моего случая до версии 7.6 падение происходило крайне редко - нельзя сказать, что его не было вообще, а с версией 7.6 - это стало действительно проблемой, которую надо решать.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_aA2KBQMe" href="/user/1833/" bx-tooltip-user-id="1833">vgi</a> написал:<br /> как временное решение может попробовать не уничтожать/создавать таблицу, а скрывать/показывать, очищая/меняя содержимое?<br />=============<br />Я нашёл для себя решение - оно меня устраивает. Закрываемая таблица исчезает не мгновенно перед созданием новой, а с небольшой задержкой не более секунды (в основнов цикле стоит Sleep на 1 секунду).<br />Что касается &quot;очищая/меняя содержимое&quot; - то <br />1) &nbsp;вызов Clear() из колбэка также иногда ведёт к падению<br />2) новая таблица-2 у меня должна иметь другой состав колонок, и, может я не до конца разобрался, но в уже созданной таблице поменять состав колонок возможности нет и нужно только уничтожать и создавать новую <br />
			<i>20.02.2017 10:28:15, Антонио.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22615/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22615/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 10:28:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22606/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Причина интересна, но как временное решение может попробовать не уничтожать/создавать таблицу, а скрывать/показывать, очищая/меняя содержимое? <br />
			<i>20.02.2017 06:59:09, vgi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22606/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22606/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 06:59:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22599/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_U9uPcu30" href="/user/1377/" bx-tooltip-user-id="1377">Антонио</a> написал:<br />Наверное, если я прав, имеет смысл в документации указать, что не надо из коллбэка вызывать DestroyTable() &nbsp;и &nbsp;Clear()<br />=============<br /><br />Надо не в документации писать, а разбираться с причинами падения. <br />В сообщении, скриншот которого Вы приводите, сказано о необходимости отправить нам dmp файл. <br />По нему мы сможем провести анализ. <br />
			<i>20.02.2017 04:41:29, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22599/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22599/topic2567/</guid>
			<pubDate>Mon, 20 Feb 2017 04:41:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22593/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Но в версиях до 7.6 ничего подобного никогда не происходило, хотя макрос в части пересоздания таблиц никак не менялся. &nbsp; <br />
			<i>19.02.2017 19:30:03, Sergey Denegin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22593/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22593/topic2567/</guid>
			<pubDate>Sun, 19 Feb 2017 19:30:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22592/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			У меня кстати тоже иногда стали появляться такие ошибки! <br />Но я никак не мог понять , из-за чего, потому что у меня таблицы пересоздаются очень редко, и без моего нажатия на какие-либо кнопки. <br />Послежу, в каких случаях это происходит. Спасибо за мысль! &nbsp; <br />
			<i>19.02.2017 19:28:24, Sergey Denegin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22592/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22592/topic2567/</guid>
			<pubDate>Sun, 19 Feb 2017 19:28:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Падение QUIK с General Protection Fault</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22573/topic2567/">Падение QUIK с General Protection Fault</a></b> <i>DestroyTable()  и  Clear()  при вызове из функции обратного вызова для обработки событий в таблице</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Обнаружил ситуацию, которая изредка приводит к аварийному завершению Квика.<br /><br />Стояла задача: при клике по строке таблицы-1 требуется таблицу-1 закрыть, а вместо неё открыть новую таблицу-2 (например, провалиться глубже по дереву).<br />Хоть это мне сразу и показалось не очень красиво, но попробовал сделать эти действия прямо из коллбэка Таблицы-1.<br />В нём вызывается DestroyTable(1) и создаётся CreateWindow(2)<br />Написал, потестировал - работает.<br />Но работает не на 100% хорошо. Через пол-года обнаружилось, что изредка, примерно в 1-2% случаях Квик падает.<br /><br />(см. рис)<br /><br /><br />Долго искал, в чём причина. <br />Решил, что дело в том, что в каких-то редких случаях коллбэк после отработки пытается зачем-то вернуться к своей родительской таблице, которую он сам же только-что уничтожил.<br />Переписал скрипт так, что коллбэк только создаёт новую таблицу-2, а для старой таблицы-1 делается пометка, по которой уже после отработки коллбэка в основном цикле уничтожается происходит &nbsp;DestroyTable(1).<br />Теперь ошибка не проявляется.<br /><br />Также плохо иногда может заканчиваться вызов из коллбэка &nbsp;функции Clear(1) для родительской таблицы.<br /> <br />Наверное, если я прав, имеет смысл в документации указать, что не надо из коллбэка вызывать DestroyTable() &nbsp;и &nbsp;Clear() &nbsp; <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=1499&" width="764" height="261" /><br /><i>17.02.2017 22:59:15, Антонио.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22573/topic2567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22573/topic2567/</guid>
			<pubDate>Fri, 17 Feb 2017 22:59:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
