SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003105SAS.Планета[All Projects] Багpublic12-07-2016 11:1817-03-2017 11:04
Reporterdkxce 
Assigned Tovdemidov 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionnot fixable 
PlatformWindowsOSXPOS VersionSP3
Product Version160707 
Target VersionFixed in Version 
Summary0003105: Ошибка при открытие базы marks.sml
DescriptionОшибка при открытии базы объектов marks.sml от версии 151111
Steps To ReproduceРаспаковал версию 160707 в пустую папку. Решил добавить объекты из предыдущей версии:
Управление метками -> Добавить базу, тип SML -> файл marks.sml от версии 1511
В результате данные не импортируются, а выводится ошибка:
EAccessViolation: Access Violation at address 4DB26281 in module 'midas.dll'.
Write of address 30343239

Скриншот, файлы marks.sml и Categorymarks.sml во вложении
Additional Information1. Если приложение после этой ошибки закрыть, то окно исчезает, но процесс остается висеть пока его не убьешь.
2. Если после ошибки импортированные метки (пустую базу) не удалить и оставить текущей выбранной, то ошибка будет возникать при запуске приложения.
TagsNo tags attached.
Attached Filesrar file icon error.rar [^] (357,214 bytes) 12-07-2016 11:18
zip file icon midas.D7.zip [^] (144,024 bytes) 13-07-2016 04:17
zip file icon midas.D2007.zip [^] (168,343 bytes) 13-07-2016 04:17
? file icon midas.dll [^] (293,376 bytes) 13-07-2016 09:18

- Relationships

-  Notes
(0017511)
zed (manager)
13-07-2016 04:16

Странно, у меня ваши метки импортировались без проблем (Win8). Возможно что-то не так с midas.dll и она не поддерживает WinXP. Попробуйте заменить её версией из аттача midas.D2007.zip (версия от Delphi 2007) или midas.D7.zip (версия от Delphi 7). В релизе лежит версия от Delphi XE2.
(0017512)
dkxce (reporter)
13-07-2016 04:45

Подменял библиотеку от версии 151111, из аттача midas.D2007.zip и midas.D7.zip -
та же проблема
(0017513)
zed (manager)
13-07-2016 04:48

Тогда скачайте ночную сборку и запустите дебажную версию. Она сгенерирует *.elf файл об ошибке. Приложите его сюда. Ночнушку распаковывайте в отдельную папку и тестируйте с оригинальной dll и с версией от D2007.

И приложите скриншот с настройками, когда вы добавляете sml базу.
(0017517)
dkxce (reporter)
13-07-2016 08:44

Запустил дебажную версию, открыл EurekaLog, подключил отладчик.
Оказалось библиотека загружена из System32 и зависла в памяти и именно она подтягивается при импорте
 меток. Файл не удаляется. Посмотрел - никто большее библиотеку не юзает. Тупо выгрузил. Заменил на
более новую версию - все заработало.
Запустил на другой машине где была старая версия программы - опять та же ошибка, поменял dll - зараб
отало. В чем причина ХЗ. Вечером попробую на еще одной машине.
(0017518)
zed (manager)
13-07-2016 08:48

А что за версия лежала в System32?
(0017519)
dkxce (reporter)
13-07-2016 08:48

от 2008г
(0017520)
zed (manager)
13-07-2016 08:49

От Delphi 7? Приаттачьте, хочу посмотреть на неё.
(0017521)
dkxce (reporter)
13-07-2016 09:18

Добавил
(0017522)
zed (manager)
13-07-2016 09:57

У вас версия от Delphi 6. И оказывается, что SAS не подхватывает либу из своей папки, а грузит её из System32, если та была зарегистрирована при помощи regsvr32. Вот и нашла коса на камень.
(0017523)
dkxce (reporter)
13-07-2016 11:55

Понял, сделаю unregister и буду ждать, может какое еще приложение отвалится.
P.S: А если динамически грузить через LoadLibrary/FreeLibrary?
(0017524)
zed (manager)
13-07-2016 13:41

Нет, не помогает. Хоть либа и загружается (видно в дебагере), внутрях Delphi оно всё равно пытается загрузить её из System32 и игнорирует то, что было загружено руками.

В качестве варианта, можно ещё попробовать как-то слинковать midaslib.dcu от D2007, если это возможно.
(0017525)
vdemidov (manager)
14-07-2016 13:42

А оно нам надо? Может закрываем как нерешаемый баг? Людей с установленной Delphi 6 вряд ли много, а те у кого она есть могут и сами разобраться, если сильно нужно. Тем более у нас уже рекомендуемая база меток SQLite.

ЗЫЖ А от midas.dll я давно предлагал избавляться. Простой парсер xml для импорта/экспорта будет работать немногим хуже.
(0017526)
zed (manager)
14-07-2016 14:10

Эту либу могут ставить приложения написанные на Delphi/C++, т.е. она ставится не только вместе с Delphi. Поэтому, надо подумать про вариант с dcu. Может и топикстартер поможет чем. Судя по комментариям, кое-что в программировании он понимает.

> А от midas.dll я давно предлагал избавляться.
Мало предложить, а вот взять и избавиться - совсем другое дело. Там вообще трудность не столько в парсере xml, сколько в том, что всю логику sml придётся переделывать, чтобы выпилить датасет.
(0017527)
vdemidov (manager)
14-07-2016 14:17

> всю логику sml придётся переделывать, чтобы выпилить датасет.
Да какая там логика? Там только генерация ID при помощи автоинкрементного поля. Вся остальная логика на структурах в памяти, а в датасет только сохранение выполняется.
(0017528)
zed (manager)
14-07-2016 14:24

Поиск и фильтрация датасетом производится. Переписывать придётся много.
(0017529)
vdemidov (manager)
14-07-2016 15:48

Так я же предлагаю только импорт и экспорт переписывать, а там все равно одноразовое чтение или запись. Тогда даже на системах с проблемами в midas.dll можно будет импортировать данные из старой версии.
(0017530)
koch (reporter)
14-07-2016 21:08

Похожая история в WinXP: в свежераспакованную 160707 кинул Categorymarks.sml, marks.sml и SASPlanet.ini. После запуска выскочила ошибка "Exception: Error loading MIDAS.DLL"
Решил так: в предыдущей версии конвертировал в базу меток в SQLite3 (marks.db3) и кинул в папку эту версию меток. Минус процедуры - все метки стали отображаться (ранее многие были отключены). Также на всякий случай создал новый ini.
(0017668)
T_Im (reporter)
20-10-2016 13:03
edited on: 20-10-2016 13:31

Соображения насчет бага. Новые версии прекрасно работают со старым форматом, просто потерялась портативность папки САС.
http://www.sasgis.org/forum/viewtopic.php?f=2&t=1546&p=43987#p43986


в версиях САС 160606 (без бага) 160707 (появился баг) 161017 (текущая) лежит один и тот же midas.dll => причина точно не в версии библиотеки.

Скорее всего между версиями поменялся механизм поиска и регистрации библиотеки.

На всякий случай уточню, что в реестре у меня не было никаких других путей к midas.dll кроме путей папок САС. На системном диске библиотека тоже отстуствует.

(0017669)
vdemidov (manager)
20-10-2016 14:16

Поменялось в недрах делфи. Так как сменилась версия, которой мы пользуемся. Если придумаете как вернуть старое поведение - скажите.
(0017670)
vdemidov (manager)
20-10-2016 14:26

С портативностью ничего не случилось. Если у вас не установлена делфи старой версии, то все нормально будет. Если установлена, то выполните дерегистрацию для midas.dll и все опять будет портативно.
(0017671)
T_Im (reporter)
20-10-2016 15:34
edited on: 20-10-2016 15:42

В корне неверное понимание причин проблемы.

Смотрите. Вчера почистил все упоминания о мидас из реестра. Запускались новые версии САС из 4-х папок (все они сейчас работают нормально со старым форматом меток), никаких Дельфей не ставил.
После их запуска имею в реесте:

появились следующие разделы со словом мидас:
Borland.Midas_DatapacketRead.1
Borland.Midas_DatapacketWrite.1
Borland.Midas_DSBase
Borland.Midas_DSBase.1
Borland.Midas_DSCursor
Borland.Midas_DSCursor.1

внутри этих разделов, в ключах прописаны следующие классы
{9E8D2FA1-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA3-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA7-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA5-591C-11D0-BF52-0020AF32BD64}

теперь ищу ключи со словом мидас
вуа ля! в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\
видим в путях ключей все эти 4 класса,
в ключах HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{номер класса}\InProcServer32\(default)
во всех 4-х классах в указанном выше ключе прописан один и тот же путь к MIDAS.DLL - откуда САС была запущена в первый раз.

Угадайте, что теперь произойдет, если переименовать эту самую папку, и запустить любой из 4-х клонов САС.

Возможно для решения этой проблемы помогут эти ссылки:
http://delphimaster.net/view/10-1066399363
http://www.sql.ru/forum/587522/midas-dll-otsutsvie-na-kliente

Старая версия, по видимому, нормально "перерегистрировала" библиотеку, если не находила ее по указанному в реестре пути, в новом дельфи, похоже, что то поломали.
Но, ИМХО, регистрировать в системе библиотеку - есть зло. Уж лучше всунуть ее статически внутрь программы.

(0017672)
vdemidov (manager)
20-10-2016 15:57

Значит у вас еще что-то осталось в реестре, что заставляет библиотеку или ее делфовскую обвязку добавлять это все в реестр. У меня на машине без делфи запускается свежая ночнушка и не оставляет никаких следов midas в реестре. И естественно прекрасно запускается после переименования папки.

В общем, если накопаете что-то интересное по ссылкам, то сообщите. Ну или можете заняться и сделать хотя бы парсер для импорта\экспорта sml без использования midas.dll. Тогда можно будет вообще отказаться от поддержки базы в таком формате ибо он весьма ущербный и небезопасный.
(0017673)
T_Im (reporter)
20-10-2016 16:21

>Значит у вас еще что-то осталось в реестре, что заставляет библиотеку или ее делфовскую обвязку добавлять это все в реестр.
>У меня на машине без делфи запускается свежая ночнушка и не оставляет никаких следов midas в реестре.
WindowsXPsp3. Возможно, новые версии дельфи перестали с ней полностью дружить.

>В общем, если накопаете что-то интересное по ссылкам, то сообщите.
Я в Дельфях не силен.
Но в последнем сообщении тут
http://www.sql.ru/forum/587522/midas-dll-otsutsvie-na-kliente
рекомендуют делать
uses MidasLib, CRTL;
Вы могли бы скомпилировать для тестов САС с таким вариантом подключения библиотеки?
(0017674)
vdemidov (manager)
20-10-2016 19:40

Давно был такой коммит, который как раз отключал MidasLib из uses под XE2

https://bitbucket.org/sas_team/sas.planet.src/commits/f24fb35d7bba7178188ff11fee4f40d64e6411a8
(0017675)
T_Im (reporter)
21-10-2016 14:57

Увы, одно фиксится, другое - ломается.
Значит, пока нормального способа пофиксить не найдено, просто вынести в ридми ссылку сюда на эту проблему и возможные решения.
Самый простой способ (если больше нет софта с этой библиотекой) - кинуть midas.dll в system32 и поменять все найденный пути к ней на системный, либо, после каждого переименования "первой" папки САС, менять в реестре пути к midas.dll.
Но также может быть нерешаемая ситуация, если запускать под WinXPsp3 SAS под ограниченным в правах юзером (у библиотеки просто не хватит прав зарегистрироваться).
(0017862)
zed (manager)
17-03-2017 11:04

Поскольку баг в midas.dcu присутствует только в XE2..XE5 (из-за которого и приходится использовать внешнюю dll), то проблема автоматом решится с переходом на более новый компилятор.

- Users who viewed this issue
User List Anonymous (3839x), dozhd (1x), hrucker (1x), RedRat (1x), vdemidov (39x), zed (34x), alexandr-dolgov (1x), AlexRus (1x), cycler (1x), Nikolai (2x), T_Im (18x), bk99 (3x), Garl (1x), VMatveev (3x), Parasite (1x), gma (1x), Tolik (3x), dkxce (37x), koch (2x), adien (1x)
Total Views 3990
Last View 19-04-2024 20:26

- Issue History
Date Modified Username Field Change
12-07-2016 11:18 dkxce New Issue
12-07-2016 11:18 dkxce File Added: error.rar
12-07-2016 11:56 dkxce Note Added: 0017507
13-07-2016 03:48 zed Project Домен, сайт, форум, багтрекер => SAS.Планета
13-07-2016 04:16 zed Note Added: 0017511
13-07-2016 04:17 zed File Added: midas.D7.zip
13-07-2016 04:17 zed File Added: midas.D2007.zip
13-07-2016 04:18 zed Product Version => 160707
13-07-2016 04:18 zed Note Deleted: 0017507
13-07-2016 04:19 zed Status new => feedback
13-07-2016 04:45 dkxce Note Added: 0017512
13-07-2016 04:45 dkxce Status feedback => new
13-07-2016 04:48 zed Note Added: 0017513
13-07-2016 06:46 vdemidov Status new => feedback
13-07-2016 08:44 dkxce Note Added: 0017517
13-07-2016 08:44 dkxce Status feedback => new
13-07-2016 08:48 zed Note Added: 0017518
13-07-2016 08:48 dkxce Note Added: 0017519
13-07-2016 08:49 zed Note Added: 0017520
13-07-2016 09:18 dkxce File Added: midas.dll
13-07-2016 09:18 dkxce Note Added: 0017521
13-07-2016 09:57 zed Note Added: 0017522
13-07-2016 11:55 dkxce Note Added: 0017523
13-07-2016 13:41 zed Note Added: 0017524
14-07-2016 13:42 vdemidov Note Added: 0017525
14-07-2016 14:10 zed Note Added: 0017526
14-07-2016 14:17 vdemidov Note Added: 0017527
14-07-2016 14:24 zed Note Added: 0017528
14-07-2016 15:48 vdemidov Note Added: 0017529
14-07-2016 21:08 koch Note Added: 0017530
20-10-2016 13:03 T_Im Note Added: 0017668
20-10-2016 13:31 T_Im Note Edited: 0017668 View Revisions
20-10-2016 14:16 vdemidov Note Added: 0017669
20-10-2016 14:26 vdemidov Note Added: 0017670
20-10-2016 15:34 T_Im Note Added: 0017671
20-10-2016 15:36 T_Im Note Edited: 0017671 View Revisions
20-10-2016 15:38 T_Im Note Edited: 0017671 View Revisions
20-10-2016 15:42 T_Im Note Edited: 0017671 View Revisions
20-10-2016 15:57 vdemidov Note Added: 0017672
20-10-2016 16:21 T_Im Note Added: 0017673
20-10-2016 19:40 vdemidov Note Added: 0017674
21-10-2016 14:57 T_Im Note Added: 0017675
17-03-2017 10:38 vdemidov Status new => resolved
17-03-2017 10:38 vdemidov Resolution open => not fixable
17-03-2017 10:38 vdemidov Assigned To => vdemidov
17-03-2017 10:38 vdemidov Status resolved => closed
17-03-2017 11:04 zed Note Added: 0017862



Copyright © 2007 - 2024 SAS.Planet Team