Петля времени

26 views
Skip to first unread message

Алексей Осадчий

unread,
Jul 9, 2019, 8:48:42 PM7/9/19
to gedkeeper-ru
Сергей, добрый день!
Подскажите пожалуйста!
При проверке базы наткнулся на такое понятие как "Петля времени". Что это? И как от этой петли избавиться? Ещё вчера всё было нормально. ( странно, но при следующей проверке "петли" исчезли).

И какая то беда произошла с браками... Они просто слетели (50% из них). Вместо родителей присоединились дети; дети остались без родителей; Осталась забита дата венчания, но нет брачующихся...). Посылаю файл на почту. Не знаю как с этим разобраться. И ошибки и gedcom отправил на почту.



Сергей Ждановских

unread,
Jul 10, 2019, 2:04:44 AM7/10/19
to gedkeeper-ru
Добрый день, Алексей!

Вот, из-за возможности таких проблем я и не стал делать полноценные релизы с публичной выкладкой, а только здесь, приватно на форуме для самых активных. "Петля" это стопроцентное следствие второй вашей проблемы. Буду разбираться. Скорее всего это следствие изменений во внутренней нумерации записей базы данных, которая делалась для чтения определенного формата gedcom из других программ. И ни один автоматизированный тест не сбойнул, не диагностировал проблему :(

Буду разбираться, ответ будет не раньше чем послезавтра. Сожалею

Сергей Ждановских

unread,
Jul 11, 2019, 5:52:02 AM7/11/19
to gedkeeper-ru
Проверил программу версии 2.16 RC2 на всех своих файлах с данными с точной построчной сверкой содержимого файлов до загрузки и после нового сохранения.
Пока проблема совершенно не воспроизводится. Обнаружена проблема с фактами людей типа "воинское звание" и "путешествие", будет исправлена (факты неправильно идентифицировались, поэтому в выходном файле перемещались в недоступную для редактирования область). Но изменений в структуре семей никаких.

Нужно искать дальше.

Вы можете попробовать открыть в этой версии один из своих старых файлов?
Для примера, я храню полную историю версий своих файлов с данными начиная с 2009-года, когда в моём первом файле было около 40 персон, и на текущий момент, когда у меня несколько рабочих баз с общей численностью свыше 10 тыс. человек - всего около 1.5 сотен файлов сгруппированных по периодам крупных правок или внесению больших порций данных. Т.е. на каждый этап работы с данными сохраняю базу в новый файл, а старый сохраняю в спец.архив. Это позволяет всегда быть уверенным, что если даже не программа где-то подведет по собственной вине как разработчика, но и собственные ошибки ввода за любой период времени можно проконтролировать.

В текущей ситуации, у меня такое ощущение, что есть какой-то другой фактор появления ошибки.

Алексей Осадчий

unread,
Jul 11, 2019, 11:10:49 AM7/11/19
to gedkeeper-ru
Проверил. Старый файл в данной версии тоже при проверке базы выдает "петли".

В файле скриншоты.

А это журнал ошибок за эту сессию.

[11.07.2019 1:58:54] -> GK.ExExceptionHandler(): Доступ к ликвидированному объекту невозможен.
Имя объекта: "CalcWidget".
[11.07.2019 1:58:55] -> GK.ExExceptionHandler():    в System.Windows.Forms.Control.CreateHandle()
   в System.Windows.Forms.Form.CreateHandle()
   в System.Windows.Forms.Control.get_Handle()
   в GKUI.Providers.WFAppHost.EnableWindow(IWidgetForm form, Boolean value)
   в GKCalculatorPlugin.Plugin.WidgetEnable() в d:\WORKS\shared\gkdev\GEDKeeper\projects\GKv2\GKCalculatorPlugin\GKCalculatorPlugin.cs:строка 107
   в GKCore.AppHost.WidgetsEnable()
   в GKUI.Forms.BaseWinSDI.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
[11.07.2019 2:01:16] -> GK.ExExceptionHandler(): Доступ к ликвидированному объекту невозможен.
Имя объекта: "CalcWidget".
[11.07.2019 2:01:16] -> GK.ExExceptionHandler():    в System.Windows.Forms.Control.CreateHandle()
   в System.Windows.Forms.Form.CreateHandle()
   в System.Windows.Forms.Control.get_Handle()
   в GKUI.Providers.WFAppHost.EnableWindow(IWidgetForm form, Boolean value)
   в GKCalculatorPlugin.Plugin.WidgetEnable() в d:\WORKS\shared\gkdev\GEDKeeper\projects\GKv2\GKCalculatorPlugin\GKCalculatorPlugin.cs:строка 107
   в GKCore.AppHost.WidgetsEnable()
   в GKUI.Forms.BaseWinSDI.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
[11.07.2019 2:01:51] -> GK.ExExceptionHandler(): Доступ к ликвидированному объекту невозможен.
Имя объекта: "CalcWidget".
[11.07.2019 2:01:51] -> GK.ExExceptionHandler():    в System.Windows.Forms.Control.CreateHandle()
   в System.Windows.Forms.Form.CreateHandle()
   в System.Windows.Forms.Control.get_Handle()
   в GKUI.Providers.WFAppHost.EnableWindow(IWidgetForm form, Boolean value)
   в GKCalculatorPlugin.Plugin.WidgetEnable() в d:\WORKS\shared\gkdev\GEDKeeper\projects\GKv2\GKCalculatorPlugin\GKCalculatorPlugin.cs:строка 107
   в GKCore.AppHost.WidgetsEnable()
   в GKUI.Forms.BaseWinSDI.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
[11.07.2019 17:53:26] -> CLR Version: v4.0.30319
[11.07.2019 17:53:26] -> GK Version: 2.16.0.0
[11.07.2019 17:53:26] -> Plugins load path: D:\база июль\plugins\
[11.07.2019 17:53:27] -> GK Version: 2.16.0.0
[11.07.2019 17:53:32] -> GK.UnhandledExceptionsHandler(): Failed to instantiate a new SingleInstanceTracker object. See InnerException for more details.
[11.07.2019 17:53:32] -> GK.ExExceptionHandler():    в GKCore.SingleInstance.SingleInstanceTracker..ctor(String name, SingleInstanceEnforcerRetriever enforcerRetriever)
   в GKUI.GKProgram.Main(String[] args)
[11.07.2019 17:54:08] -> UpdateMan.GetLastVersion.SP(): Указанный протокол безопасности не поддерживается.
[11.07.2019 17:54:08] -> UpdateMan.GetLastVersion(): Базовое соединение закрыто: Непредвиденная ошибка при передаче.

Петли на всей моей семье вылезли.doc
Message has been deleted

Алексей Осадчий

unread,
Jul 11, 2019, 11:29:40 AM7/11/19
to gedkeeper-ru
Извините ,что печатаю журнал в текст. К сожалению отправить автоматически не получается. Выдает ошибку.

Алексей Осадчий

unread,
Jul 11, 2019, 11:32:40 AM7/11/19
to gedkeeper-ru
Вот еще одна проверка на файле за январь этого года.
[11.07.2019 18:12:25] -> GKUtils.GetDaysForBirth(): Параметры Year, Month и Day описывают непредставимое значение DateTime.
[11.07.2019 18:12:25] -> GKUtils.GetDaysForBirth(): Параметры Year, Month и Day описывают непредставимое значение DateTime.

Проверка на другой старой базе.doc

Сергей Ждановских

unread,
Jul 11, 2019, 4:58:57 PM7/11/19
to gedkeeper-ru
Сначала отвечу на эти сообщения, потом по файлам, которые всё же пришли на почту. Возможно задержка была из-за размера 17мб, непонятно.

В общем, в этих фрагментах журнала ошибок, а также в приложенном файле с журналом, к ошибкам базы нет ни одного сообщения. Всё что есть - различные конфликты программы, возможно из-за старой XP, но без уверенности.

Далее, петли времени называть не совсем корректно. В программе это называется петли данных. Суть в том, что программа выполняет в блоке проверки базы данных специальный поиск и ищет кольца/циклы/петли - когда одна персона встречается в собственных предках или потомках - т.е. ветвь получается замкнута в кольцо. По идее, это показатель ошибок ввода и редактирования данных.

Далее конкретно по файлу отвечу в письме.

Алексей Осадчий

unread,
Jul 11, 2019, 6:02:37 PM7/11/19
to gedkeeper-ru
Благодарю за ответ!
Reply all
Reply to author
Forward
0 new messages