Lazarus access violation

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Lazarus access violation

Сообщение alex208210 » 26.06.2010 16:29:30

версия 0,9,28,2 на sabayon, при попытке выбрать в меню проекта "параметры проекта" или "параметры компилятора" выдает ошибку access violation (Ок Отмена).Запускается под рутом. Вывод консоли:

lazarus
[WARNING] Out of OEM specific VK codes, changing to unassigned
[WARNING] Out of unassigned VK codes, assigning $FF
TLazarusManager.Run starting /usr/share/lazarus/lazarus ...
[WARNING] Out of OEM specific VK codes, changing to unassigned
[WARNING] Out of unassigned VK codes, assigning $FF
TMainIDE.ParseCmdLineOptions:
PrimaryConfigPath="/root/.lazarus"
SecondaryConfigPath="/etc/lazarus"
NOTE: miscellaneous options file not found - using defaults
TMainIDE.DoNewProject A
TCustomFormEditor.CreateComponent Form1:TForm1 True
TMainIDE.DoNewEditorFile END unit1.pas

{Выбираем меню параметры компилятора:}

TApplication.HandleException Access violation
Stack trace:
$B74A796E
$082B9A0C
$081EA36B
$081E95DA
$081A8AAC
$081A86A5
$081A967A
$081A8B75
$081A86A5
$081A967A
$081A8B75
$081A86A5
$081A967A
$081A7781
$0827F805
$0824DA4E
$0824CEDC

В чем может быть причина?
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: Lazarus access violation

Сообщение Odyssey » 26.06.2010 18:43:33

Выяснить причину тут будет довольно трудоёмко. Нужно будет найти в svn ревизию, соответствующую релизу 0.9.28.2, пересобрать её с отладочной информацией и тогда напротив адресов в Stack trace появятся названия функций, где можно будет найти проблему.

Имхо, в данном случае проще установить версию из svn и потестить последнюю ревизию. Если с ней всё в порядке -- с ней и работать, если будут проблемы -- найти чуть более старую и более стабильную ревизию.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Lazarus access violation

Сообщение скалогрыз » 26.06.2010 18:54:45

Если я не ошибаюсь, то это ошибка связана с хитросплетениями и особенностями GTK версий.
нужно попробовать trunk версию (н.р. из snapshot-а), как посоветовал Odyssey
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Lazarus access violation

Сообщение hinst » 26.06.2010 21:00:59

могу предложить удалить libcurveqt или libcurvegtk, не помню точного названия. надо совершить поиск по ключевому слову curve и удалить соотв. пакеты. у меня когда лазарус похожим (отдалённо похожим, но всёже) образом глючил, такое действие помогло
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Lazarus access violation

Сообщение alex208210 » 26.06.2010 23:28:03

/etc/skel/.config/qtcurve.gtk-colors
/etc/skel/.config/qtcurve.gtk-icons
/root/.gimp-2.6/curves
/usr/include/gtkmm-2.4/gtkmm/curve.h
/usr/include/gtkmm-2.4/gtkmm/private/curve_p.h
/usr/include/gtk-2.0/gtk/gtkcurve.h
/usr/include/qt4/Qt/qeasingcurve.h
/usr/include/qt4/QtCore/qeasingcurve.h
/usr/include/gegl-0.1/gegl-curve.h
/usr/include/libgoffice-0.8/goffice/graph/gog-smoothed-curve.h
/usr/include/libgoffice-0.8/goffice/graph/gog-reg-curve.h
/home/alex/.config/qtcurve.gtk-colors
/home/alex/.config/qtcurve.gtk-icons
/usr/lib/misc/xscreensaver/ccurve
/usr/lib/fpc/2.4.0/source/packages/gtk2/src/gtk+/gtk/gtkcurve.inc
/usr/lib/fpc/2.4.0/source/packages/gtk1/src/gtk/gtkcurve.pp
/usr/lib/gegl-0.1/contrast-curve.so
/usr/lib/gimp/2.0/plug-ins/curve-bend

это все что найдено по запросу curve. Пробовал их удалять :-) не помогает
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: Lazarus access violation

Сообщение hinst » 27.06.2010 00:12:56

ну вот, я вспомнил, qtcurve rpm-пакет назывался. его надо было удалить. могу лишь предположить, что если вы удалили не пакет, а сами файлы, то какие-нибудь ссылки, содержащиеся в пакете или в системе на эти файлы, могли остаться, что, конечно, не поспособствовало устранению глюка
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Lazarus access violation

Сообщение alex208210 » 30.06.2010 23:16:49

лазарус версии 0,9,28,2 не дружит с gtk+ 2.20.1-r1, для него надо ставить версию не больше 2,18,*
Для gtk+ 2.20.1-r1 надо ставить лазарус версии не ниже 2,29,*
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: Lazarus access violation

Сообщение vfomin » 13.10.2013 19:39:12

Lazarus access violation возникает при попытке заполнить массив размера 1000000000

Когда был объявлен глобальный массив w: array[1..81, 0..1000000, 1..5] of byte, и второй индекс во время работы программы не выходил за пределы диапазона 0..1000000, всё было нормально. Но на других исходных данных второй индекс массива вышел за пределы диапазона (количество решений мегасудоку оказалось больше миллиона), и программа зависла.

Я решил объявить глобальный массив w: array[1..81, 0..1000000000, 1..5] of byte , увеличив диапазон изменения второго индекса от миллиона до миллиарда. По предварительным подсчётам, количество решений составляло около 16 миллионов, что укладывалось в диапазон изменения второго индекса 1..1000000000.

Однако во время выполнения программы появилось сообщение access violation (Ок Отмена).

Версия Лазарус 0.9.26.2 бета, операционная система Windows XP.

Можно ли создавать в Лазарусе трёхмерный массив с диапазонами изменения индексов [1..81, 0..1000000000, 1..5] ? Или нужны другие методы, например, хранение такого большого объёма информации в бинарном файле?
vfomin
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.10.2013 19:17:46

Re: Lazarus access violation

Сообщение Максим » 13.10.2013 20:17:36

vfomin писал(а):Версия Лазарус 0.9.26.2 бета

Вы археолог? Судя по тому, что была поднята ветка более чем трёхлетней давности, да.

vfomin писал(а):Я решил объявить глобальный массив w: array[1..81, 0..1000000000, 1..5] of byte , увеличив диапазон изменения второго индекса от миллиона до миллиарда

Вы считали, сколько такой массив займёт оперативной памяти? Вы знаете, что один миллиард байт - это ГИГАбайт? Вы пишете софт для суперкомпьютера?
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Lazarus access violation

Сообщение SeZuka » 14.10.2013 07:40:25

vfomin писал(а):количество решений мегасудоку оказалось больше миллиона

Обычно решение одно. Каких размеров ваш судоку, что столько решений, и сколько времени ушло на поиск всех этих решений?
SeZuka
постоялец
 
Сообщения: 209
Зарегистрирован: 05.09.2012 14:58:05

Re: Lazarus access violation

Сообщение vfomin » 14.10.2013 13:31:53

Максим писал(а):Вы считали, сколько такой массив займёт оперативной памяти? Вы знаете, что один миллиард байт - это ГИГАбайт? Вы пишете софт для суперкомпьютера?


Всё понятно. Спасибо большое. Размер этого массива даже не гигабайт, а 5*81*1000000000 байт, то есть 405 Гигабайт. Но тогда и такое же свободное дисковое пространство на винчестере потребуется для хранения этого количества байт в бинарном файле, если хранить её не в массиве, а в файле, и поэтому, наверное, придётся ограничиться хранением не более миллиона решений.

SeZuka писал(а):Обычно решение одно. Каких размеров ваш судоку, что столько решений, и сколько времени ушло на поиск всех этих решений?


Судоку гигант состоит из 21 блоков размером 9x9, а таких вот блоков в ней 8 штук.

Изображение

Данный блок, крайний левый, который на этой картинке, имеет 15 решений внутреннего квадрата, удовлетворяющего сопряжениям с внешними четырьмя квадратами, но только одно из этих 15 решений обладает тем свойством, что существуют для него все решения четырёх окружающих квадратов. Причём левый верхний квадрат имеет ровно одно решение, нижний левый квадрат имеет также одно решение, а вот у верхнего правого квадрата 2114 решений, а у нижнего правого квадрата - 507 решений, так как эти квадраты связаны ещё с другими блоками судоку-гиганта из 21 блока . То есть всего решений 1071798. На поиск этих решений уходит около 3 минут.
А судоку из 5 блоков, имеющую единственное решение, моя программа решает очень быстро, за 5 секунд.
Очень хочется выложить её в свободный доступ, как выложил я программу для решения классической судоку 9x9.
http://ateist.spb.ru/programs/sudoku.exe
Но это значительно уменьшит вероятность выигрыша призов. За решение судоку из 5 блоков, которую за несколько секунд решает моя программа, можно получить приз 700 рублей, а за решение судоку из 21 блока - 5000 рублей.
vfomin
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.10.2013 19:17:46

Re: Lazarus access violation

Сообщение Лекс Айрин » 14.10.2013 13:58:55

vfomin, ищите тогда менее лобовое решение... Например, можно разгадывать вначале угловые судоку, а потом центральный.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217

Рейтинг@Mail.ru