Lazarus access violation
Модератор: Модераторы
-
alex208210
- постоялец
- Сообщения: 207
- Зарегистрирован: 12.05.2010 13:16:51
Lazarus access violation
версия 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
В чем может быть причина?
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
В чем может быть причина?
Выяснить причину тут будет довольно трудоёмко. Нужно будет найти в svn ревизию, соответствующую релизу 0.9.28.2, пересобрать её с отладочной информацией и тогда напротив адресов в Stack trace появятся названия функций, где можно будет найти проблему.
Имхо, в данном случае проще установить версию из svn и потестить последнюю ревизию. Если с ней всё в порядке -- с ней и работать, если будут проблемы -- найти чуть более старую и более стабильную ревизию.
Имхо, в данном случае проще установить версию из svn и потестить последнюю ревизию. Если с ней всё в порядке -- с ней и работать, если будут проблемы -- найти чуть более старую и более стабильную ревизию.
Если я не ошибаюсь, то это ошибка связана с хитросплетениями и особенностями GTK версий.
нужно попробовать trunk версию (н.р. из snapshot-а), как посоветовал Odyssey
нужно попробовать trunk версию (н.р. из snapshot-а), как посоветовал Odyssey
могу предложить удалить libcurveqt или libcurvegtk, не помню точного названия. надо совершить поиск по ключевому слову curve и удалить соотв. пакеты. у меня когда лазарус похожим (отдалённо похожим, но всёже) образом глючил, такое действие помогло
-
alex208210
- постоялец
- Сообщения: 207
- Зарегистрирован: 12.05.2010 13:16:51
/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. Пробовал их удалять
не помогает
/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. Пробовал их удалять
ну вот, я вспомнил, qtcurve rpm-пакет назывался. его надо было удалить. могу лишь предположить, что если вы удалили не пакет, а сами файлы, то какие-нибудь ссылки, содержащиеся в пакете или в системе на эти файлы, могли остаться, что, конечно, не поспособствовало устранению глюка
-
alex208210
- постоялец
- Сообщения: 207
- Зарегистрирован: 12.05.2010 13:16:51
лазарус версии 0,9,28,2 не дружит с gtk+ 2.20.1-r1, для него надо ставить версию не больше 2,18,*
Для gtk+ 2.20.1-r1 надо ставить лазарус версии не ниже 2,29,*
Для gtk+ 2.20.1-r1 надо ставить лазарус версии не ниже 2,29,*
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] ? Или нужны другие методы, например, хранение такого большого объёма информации в бинарном файле?
Когда был объявлен глобальный массив 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 писал(а):Версия Лазарус 0.9.26.2 бета
Вы археолог? Судя по тому, что была поднята ветка более чем трёхлетней давности, да.
vfomin писал(а):Я решил объявить глобальный массив w: array[1..81, 0..1000000000, 1..5] of byte , увеличив диапазон изменения второго индекса от миллиона до миллиарда
Вы считали, сколько такой массив займёт оперативной памяти? Вы знаете, что один миллиард байт - это ГИГАбайт? Вы пишете софт для суперкомпьютера?
vfomin писал(а):количество решений мегасудоку оказалось больше миллиона
Обычно решение одно. Каких размеров ваш судоку, что столько решений, и сколько времени ушло на поиск всех этих решений?
Максим писал(а):Вы считали, сколько такой массив займёт оперативной памяти? Вы знаете, что один миллиард байт - это ГИГАбайт? Вы пишете софт для суперкомпьютера?
Всё понятно. Спасибо большое. Размер этого массива даже не гигабайт, а 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 рублей.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vfomin, ищите тогда менее лобовое решение... Например, можно разгадывать вначале угловые судоку, а потом центральный.
