САПР на Lazarus

Планы, идеология, архитектура и т.п.

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

Re: САПР на Lazarus

Сообщение vitaly_l » 04.09.2017 11:40:18

zub писал(а):QueueAsyncCall - совсем из другой оперы,
Что они могут подсказать больше чем уже имеющийся стек?

Конфликт, при 100% работающем коде - может возникать например из-за нарушения порядка "чего-то с чем-то". Поэтому, поменяв местоположение, вызова записи в лог, программа может перестать падать. А tru exception - могут выдать, то, что "повисло" задолго: до - указанного в стеке.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 12:26:37

>>Конфликт, при 100% работающем коде
На 100% рабочем коде проблем быть не может. Если "конфликт" может возникнуть, значит то что программа работает - просто случайность
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 04.09.2017 12:43:46

zub писал(а):olegy123
течки конечно есть, сегодня их пофикшу, но баг наблюдаю очень давно, тогда кода который сегодня капает еще и в помине небыло. Классические рецепты - heaptrc, valgrind ничего не проясняют.

могут прямо не показать источник, но быстрее выявить проблему очень помогут.
heaptrc - должен быть дественно чистый, если есть ссылки на участки - 100% течка..
gdb при отладке в логи пишет свою критику, возмущается - мол переменная не чищеная и т.п.

проблема может возникнуть даже при неправильном размере переменной, компилятор не может выявить правильность работы с указателями.. Если с нормальными типизированными переменными есть "защита на дурака", но с указателями куда то - это личная проблема программиста.

Добавлено спустя 12 минут 52 секунды:
Лично у меня были большие проблемы только из за описания функции из си библиотеки
вместо PPointer записал Pointer..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 13:00:53

У gdb лог чистый. Если ошибку не воспроизводить - у heaptrc тоже чистый лог (мелочь пофиксил), если воспроизвести то соответственно всё что освобождается после вылета - в логе heaptrc.
Valgrind ругается в нескольких местах на чтото внутри системных библиотек и у меня на переход зависимый от неинициализированых данных, но это точно не та проблема
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 04.09.2017 13:13:55

как может gdb чистым если есть ексепшен..

системные библиотеки обрабатывают твои данные, а они могут быть не правильными.. Смотри что сверху по стэку.. кто вызывает, отключи ненужные функции - сузь поиск.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 13:25:18

стек я приводил выше, гдб о вылете ничего нового не сообщает
E:\zcad\cad>gdb zcad
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from E:\zcad\cad/zcad.exe...done.
(gdb) run
Starting program: E:\zcad\cad/zcad.exe
[New Thread 6452.0x133c]
[New Thread 6452.0xc8c]
[New Thread 6452.0x1094]
[New Thread 6452.0x7f8]
[New Thread 6452.0x95c]
[New Thread 6452.0x1a34]
[New Thread 6452.0x1ecc]
[New Thread 6452.0x10f0]
[New Thread 6452.0x1a04]
[New Thread 6452.0x14d8]
[New Thread 6452.0xd1c]

Program received signal SIGSEGV, Segmentation fault.
CACHE_DONE (CACHE=Cannot access memory at address 0xf0f0f324
) at ttcache.pas:361
361 element := parent^;
(gdb) bt
#0 CACHE_DONE (CACHE=Cannot access memory at address 0xf0f0f324
) at ttcache.pas:361
#1 0x007730ad in TT_DONE_GLYPH (_GLYPH=...) at lazfreetype.pas:952
#2 0x0076f357 in TFREETYPEGLYPH__DESTROY (vmt=<incomplete type>, this=<error reading variable>) at easylazfreetype.pas:840
#3 0x0040dd22 in SYSTEM$_$TOBJECT_$__$$_FREE ()
#4 0x004d1934 in FREENODEDATA (ANODE=0x1f3b8678, parentfp=0xe89fd8c) at laz_avl_tree.pp:1147
#5 0x004d1912 in FREENODEDATA (ANODE=0x1f3b8738, parentfp=0xe89fd8c) at laz_avl_tree.pp:1145
#6 0x004d1912 in FREENODEDATA (ANODE=0x1f3b87f8, parentfp=0xe89fd8c) at laz_avl_tree.pp:1145
#7 0x004d18e4 in TAVLTREE__FREEANDCLEAR (this=<error reading variable>) at laz_avl_tree.pp:1154
#8 0x0076fc06 in TFREETYPEFONT__DISCARDINSTANCE (this=<error reading variable>) at easylazfreetype.pas:1153
#9 0x007707e4 in TFREETYPEFONT__DESTROY (vmt=<incomplete type>, this=<error reading variable>) at easylazfreetype.pas:1449
#10 0x00772743 in TTFFONT__DONE (vmt=<incomplete type>, this=...) at ./zengine/fonts/uzefontttf.pas:479
#11 0x0064682d in GDBFONT__DONE (vmt=<incomplete type>, this=...) at ./zengine/fonts/uzefont.pas:383
#12 0x0044e9f5 in GZVECTORPDATA$2$CRCC65681AA__DONE (vmt=<incomplete type>, this=...) at gzctnrvectorpdata.pas:46
#13 0x0044ee17 in GDBFONTMANAGER__DONE (vmt=<incomplete type>, this=...) at ./zengine/fonts/uzefontmanager.pas:87
#14 0x0044f5d0 in UZEFONTMANAGER_$$_finalize$ () at ./zengine/fonts/uzefontmanager.pas:307
#15 0x00410309 in SYSTEM_$$_FINALIZEUNITS ()
#16 0x00410566 in SYSTEM_$$_SYSFLUSHSTDIO ()
#17 0x0040fb63 in fpc_copy ()
#18 0x1109b3cc in ?? ()
#19 0x00415256 in SYSTEM_$$_EXE_ENTRY$TENTRYINFORMATION ()
(gdb)

никакой ругани подкидывающей дровишек в думалку нет
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 04.09.2017 13:55:46

set verbose on
Enables GDB output of certain informational messages.

zub писал(а):#10 0x00772743 in TTFFONT__DONE (vmt=<incomplete type>, this=...) at ./zengine/fonts/uzefontttf.pas:479

Код: Выделить всё
destructor TTFFont.done;
begin
     inherited;
     //-ttf-//TriangleData.done;
     ftFont.Destroy; // [b]<--- здесь происходит ошибка..[/b]
     MapCharIterator.Destroy;
     MapChar

На ftFont: TFreeTypeFont;

нужно чисто загрузить и выгрузить.. тот самый шрифт..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 14:10:14

>><--- здесь происходит ошибка..
Здесь происходит вылет, а ошибка происходит гдето гораздо раньше
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from E:\zcad\cad/zcad.exe...done.
(gdb) set verbose on
(gdb) run
Starting program: E:\zcad\cad/zcad.exe
[New Thread 7344.0x1244]
Reading symbols from C:\Windows\system32\ntdll.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\system32\ntdll.dll
Reading symbols from C:\Windows\syswow64\kernel32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\kernel32.dll
Reading symbols from C:\Windows\syswow64\KernelBase.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\KernelBase.dll
Reading symbols from C:\Windows\syswow64\oleaut32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\oleaut32.dll
Reading symbols from C:\Windows\syswow64\ole32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\ole32.dll
Reading symbols from C:\Windows\syswow64\msvcrt.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\msvcrt.dll
Reading symbols from C:\Windows\syswow64\gdi32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\gdi32.dll
Reading symbols from C:\Windows\syswow64\user32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\user32.dll
Reading symbols from C:\Windows\syswow64\advapi32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\advapi32.dll
Reading symbols from C:\Windows\SysWOW64\sechost.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\sechost.dll
Reading symbols from C:\Windows\syswow64\rpcrt4.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\rpcrt4.dll
Reading symbols from C:\Windows\syswow64\sspicli.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\sspicli.dll
Reading symbols from C:\Windows\syswow64\cryptbase.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\cryptbase.dll
Reading symbols from C:\Windows\syswow64\lpk.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\lpk.dll
Reading symbols from C:\Windows\syswow64\usp10.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\usp10.dll
Reading symbols from C:\Windows\SysWOW64\version.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\version.dll
Reading symbols from C:\Windows\syswow64\shell32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\shell32.dll
Reading symbols from C:\Windows\syswow64\shlwapi.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\shlwapi.dll
Reading symbols from C:\Windows\SysWOW64\opengl32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\opengl32.dll
Reading symbols from E:\zcad\cad\glu32.dll...(no debugging symbols found)...done.
Loaded symbols for E:\zcad\cad\glu32.dll
Reading symbols from C:\Windows\SysWOW64\ddraw.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\ddraw.dll
Reading symbols from C:\Windows\SysWOW64\dciman32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\dciman32.dll
Reading symbols from C:\Windows\syswow64\setupapi.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\setupapi.dll
Reading symbols from C:\Windows\syswow64\cfgmgr32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\cfgmgr32.dll
Reading symbols from C:\Windows\syswow64\devobj.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\devobj.dll
Reading symbols from C:\Windows\SysWOW64\dwmapi.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\dwmapi.dll
Reading symbols from C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_41e855142bd5705d\comctl32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_41e855142bd5705d\comctl32.dll
Reading symbols from C:\Windows\syswow64\comdlg32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\comdlg32.dll
Reading symbols from C:\Windows\SysWOW64\winmm.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\winmm.dll
Reading symbols from C:\Windows\SysWOW64\winspool.drv...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\winspool.drv
Reading symbols from C:\Windows\SysWOW64\imm32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\imm32.dll
Reading symbols from C:\Windows\syswow64\msctf.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\msctf.dll
Reading symbols from C:\Windows\SysWOW64\uxtheme.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\uxtheme.dll
Reading symbols from C:\Windows\SysWOW64\msimg32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\msimg32.dll
Reading symbols from C:\Windows\SysWOW64\ole32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\ole32.dll
Reading symbols from C:\Windows\SysWOW64\nvoglv32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\nvoglv32.dll
Reading symbols from C:\Windows\SysWOW64\wtsapi32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\wtsapi32.dll
[New Thread 7344.0x19dc]
Reading symbols from C:\Windows\SysWOW64\gdi32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\gdi32.dll
Reading symbols from C:\Windows\syswow64\wintrust.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\wintrust.dll
Reading symbols from C:\Windows\syswow64\crypt32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\crypt32.dll
Reading symbols from C:\Windows\syswow64\msasn1.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\msasn1.dll
Reading symbols from C:\Windows\SysWOW64\ntmarta.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\ntmarta.dll
Reading symbols from C:\Windows\syswow64\Wldap32.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\syswow64\Wldap32.dll
[New Thread 7344.0x1240]
[New Thread 7344.0x904]
[Deleting Thread 7344.0x19dc]
[Deleting Thread 7344.0x904]
[New Thread 7344.0x1d30]
[New Thread 7344.0x1a40]
Reading symbols from C:\Windows\SysWOW64\powrprof.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\powrprof.dll
Reading symbols from C:\Windows\SysWOW64\winsta.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\winsta.dll
[New Thread 7344.0x1760]
[New Thread 7344.0x1bb0]
[Deleting Thread 7344.0x1d30]
[Deleting Thread 7344.0x1a40]
[New Thread 7344.0x1584]
Reading symbols from C:\Windows\SysWOW64\duser.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\duser.dll
[New Thread 7344.0x14b4]
Reading symbols from C:\Windows\SysWOW64\xmllite.dll...(no debugging symbols found)...done.
Loaded symbols for C:\Windows\SysWOW64\xmllite.dll
[Deleting Thread 7344.0x14b4]
[New Thread 7344.0x1174]
Reading in symbols for ttcache.pas...done.

Program received signal SIGSEGV, Segmentation fault.
CACHE_DONE (CACHE=) at ttcache.pas:361
361 element := parent^;
(gdb) bt
Reading in symbols for lazfreetype.pas...done.
Reading in symbols for easylazfreetype.pas...done.
Reading in symbols for laz_avl_tree.pp...done.
Reading in symbols for ./zengine/fonts/uzefontttf.pas...done.
Reading in symbols for ./zengine/fonts/uzefont.pas...done.
Reading in symbols for ./zengine/fonts/uzefontmanager.pas...done.
#0 CACHE_DONE (CACHE=) at ttcache.pas:361
#1 0x007730ad in TT_DONE_GLYPH (_GLYPH=...) at lazfreetype.pas:952
#2 0x0076f357 in TFREETYPEGLYPH__DESTROY (vmt=<incomplete type>,
this=<error reading variable>) at easylazfreetype.pas:840
#3 0x0040dd22 in SYSTEM$_$TOBJECT_$__$$_FREE ()
#4 0x004d1934 in FREENODEDATA (ANODE=0x1f2d9110, parentfp=0xe89fd8c)
at laz_avl_tree.pp:1147
#5 0x004d1912 in FREENODEDATA (ANODE=0x1f2d91d0, parentfp=0xe89fd8c)
at laz_avl_tree.pp:1145
#6 0x004d1912 in FREENODEDATA (ANODE=0x1f2d9290, parentfp=0xe89fd8c)
at laz_avl_tree.pp:1145
#7 0x004d18e4 in TAVLTREE__FREEANDCLEAR (this=<error reading variable>)
at laz_avl_tree.pp:1154
#8 0x0076fc06 in TFREETYPEFONT__DISCARDINSTANCE (
this=<error reading variable>) at easylazfreetype.pas:1153
#9 0x007707e4 in TFREETYPEFONT__DESTROY (vmt=<incomplete type>,
this=<error reading variable>) at easylazfreetype.pas:1449
#10 0x00772743 in TTFFONT__DONE (vmt=<incomplete type>, this=...)
at ./zengine/fonts/uzefontttf.pas:479
#11 0x0064682d in GDBFONT__DONE (vmt=<incomplete type>, this=...)
at ./zengine/fonts/uzefont.pas:383
#12 0x0044e9f5 in GZVECTORPDATA$2$CRCC65681AA__DONE (vmt=<incomplete type>,
this=...) at gzctnrvectorpdata.pas:46
#13 0x0044ee17 in GDBFONTMANAGER__DONE (vmt=<incomplete type>, this=...)
at ./zengine/fonts/uzefontmanager.pas:87
#14 0x0044f5d0 in UZEFONTMANAGER_$$_finalize$ ()
at ./zengine/fonts/uzefontmanager.pas:307
#15 0x00410309 in SYSTEM_$$_FINALIZEUNITS ()
#16 0x00410566 in SYSTEM_$$_SYSFLUSHSTDIO ()
#17 0x0040fb63 in fpc_copy ()
#18 0x1301b3cc in ?? ()
#19 0x00415256 in SYSTEM_$$_EXE_ENTRY$TENTRYINFORMATION ()
(gdb) quit
A debugging session is active.

Inferior 1 [process 7344] will be killed.

Quit anyway? (y or n) error return ../../gdb-7.2/gdb/windows-nat.c:1243 was 5

Грузится он чисто, потом его чтото поганит и выгрузиться чисто он уже неможет
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 04.09.2017 14:35:24

без шрифта работает?
если не задействовать
ftFont: TFreeTypeFont;
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 14:38:01

да работает, иногда даже с ним работает
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 04.09.2017 14:42:44

без него(ftFont: TFreeTypeFont;) нужно тесты проводить..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 15:09:50

Я уже всяко пробовал. единственную зависимость которую получил - описал в начале - fileopen
Очень интересно что например если воткнуь exit; на входе TT_Done_Glyph - получаю отсутствие вылета и чистый без утечек лог heaptrc
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение vitaly_l » 04.09.2017 15:26:08

zub писал(а):если воткнуь exit; на входе TT_Done_Glyph - получаю отсутствие вылета

По моему скромному опыту - описанные симптомы, вообще ничего не значат, т.к. ключевая фраза: "иногда работает без вылета" - это в основном указание на порчу памяти в следствии какой-то фигни, которая вызывается не всегда. Или наоборот чистится, но не всегда.

1) А если поменять шрифт на другой? Я не знаю как это в паскале, но помню что битые шрифты - вызывали даже BSODa, а не только AV.
2) И вообще зачем дополнительный шрифт, разве системных мало? Что в нём такого, чего нет в системных?
3) Может быть какая-то одна буква в шрифте - битая, и когда её вызывают, она рушит память?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 16:18:44

>>иногда работает без вылета
Есть 100% рецепт повторения, рецепт избежать-пофиксить появится после выявления причин. Такчто это совсем не "иногда"

1) шрифт абсолютно нормальный - C:\Windows\Fonts\arial.ttf
2) надо
3) см. п.1
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение vitaly_l » 04.09.2017 16:37:53

zub писал(а):100% рецепт повторения

Вот ещё, можно сделать странный тест, постольку поскольку со шрифтами работает ещё и математика, то...
можно попробовать запустить хорошо известную Вам команду: SetExceptionMask(GetExceptionMask+[exInvalidOp, exZeroDivide]); в самом начале программы и посмотреть будет ли 100% воспроизводиться AV при этой команде?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Разработки на нашем сайте

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

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

Рейтинг@Mail.ru