Forum: Platinen KiCad 5.0.2 - Absturz beim Footprint-Editor Aufruf
Hallo Forum und KiCad Experten.
Habe mir die KiCad Sourcen 5.0.2 von Github kompiliert.
cmake -DKICAD_SCRIPTING_WXPYTHON=OFF ../
make all
make test
make -n install
as root => make install
Nach dem Erstellen meiner Ersten lokalen Lib (IAM81008 und Si5338)
wollte ich den Symbolen Footprints zuordnen.
Beim Aufruf des Footprint-Editors chrasched mir KiCad mit der u.g.
Meldung in der Konsole:
>Fatal Error: Mismatch between the program and library build versions detected.
The library used 3.0 (wchar_t,compiler with C++ ABI 1011,wx
containers,compatible with 2.8),
and wxNet used 3.0 (wchar_t,compiler with C++ ABI 1002,STL
containers,compatible with 2.8).
Kann mir jemand den Unterschied "C++ ABI 1011" und " C++ ABI 1002"
erklären und wie ich das Problem beheben kann.
Die Libs werden ja aus dem Github-Repository heraus nur installiert.
Da wird nichts kompiliert.
Und alle KiCad Programme sind im gleichem Durchlauf kompiliert
worden.
Irgendwie ist mir nicht ganz klar, was die Meldung genau bedeutet.
Danke für Eure Hilfe.
Markus
Vorsicht: In der C++ Fehlermeldung ist irgendein .so (C++ dynamic link
library) gemeint - und nicht das was man in KiCAD unter Library
verstehen würde.
Eventuell sind da noch irgendwelche Reste von älteren Versionen /
Installationen auf dem System drauf.
Normalerweise heißt dass das deine Bibliotheken auf dem System und KiCad
mit unterschiedlichen Compiler gebaut wurden, welche eine andere ABI
Version nutzen. Aber normalerweise reicht das nicht für einen Crash (hab
eine sehr ähnliche fehlermeldung wenn ich KiCad starte, aber keine
probleme).
Versuch mal das folgende:
Wenn eine Applikation crasht sollte normalerweise ein coredump angelegt
werden. Wenn du diesen auswertest bekommst du einen Stacktrace mit
welchem der Fehler gefunden werden kann:
1 | coredumpctl debug kicad
| 2 | (gdb) bt
|
Hallo Thomas, Jim,
danke für den Hinweis.
Kämpfe gerade noch damit den core dump auch in eine Datei
vom Linux OS schreiben zu lassen.
habe
ulimit -a
core file size (blocks, -c) 0
mit
ulimit -c unlimited
nach
>ulimit -a
core file size (blocks, -c) unlimited
geändert
und
cat /etc/security/limits.conf
* hard core 32768
* soft core 16384
angepasst.
System sollte nach /var/crash was dumpen,
ist aber noch nicht der Fall.
Wenn ich es schaffe den coredump zu aktivieren,
dann werde ich den Output Deiner Kommandos
coredumpctl info kicad
und
coredumpctl debug kicad
(gdb) bt
hier posten.
Markus
Musste die systemd Konfiguration anpassen.
/etc/systemd/coredump.conf
modifiziert
[Coredump]
Storage=external
Compress=yes
ProcessSizeMax=2G
ExternalSizeMax=2G
JournalSizeMax=767M
MaxUse=4G
systemctl daemon-reload
nun werden coredumps nach
/var/lib/systemd/coredump
geschrieben.
Schaue mir nun den coredump an.
Der Hinweis mit coredump war bezogen auf crashes welche schwer/nicht
reproduzierbar sind. Wenn es reproduzierbar ist kannst du auch einfach
kicad mit gdb starten und nach dem crash einen backtrace ausgeben.
coredumpctl info kicad liefert:
PID: 7836 (kicad)
UID: 1000 .......
GID: 100 (users)
Signal: 6 (ABRT)
Timestamp: Wed 2019-02-20 16:37:07 CET (24min ago)
Command Line: kicad
Executable: /usr/local/bin/kicad
Control Group: /user.slice/user-1000.slice/session-2.scope
Unit: session-2.scope
Slice: user-1000.slice
Session: 2
Owner UID: 1000
Boot ID: 76cf........
Machine ID: 0d40........
Hostname: ............
Message: Process 7836 (kicad) of user 1000 dumped core.
debug kicad
>gdb core.kicad
GNU gdb (GDB; openSUSE Leap 42.3) 8.2
Copyright (C) 2018 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 "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
[New LWP 7836]
[New LWP 7841]
[New LWP 7839]
[New LWP 7837]
[New LWP 7838]
Missing separate debuginfo for the main executable file
Try: zypper install -C
"debuginfo(build-id)=4cf0ed5b1417830b454d644c5334c05b8fc5a9c8"
Core was generated by `kicad'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f07dc914f67 in ?? ()
[Current thread is 1 (LWP 7836)]
"/var/lib/systemd/coredump/core.kicad" is a core file.
Please specify an executable to debug.
Leider liefert mir
>zypper install -C "debuginfo(build-id)=4cf0ed5b1417830b454d644c5334c05b8fc5a9c8"
Loading repository data...
Reading installed packages...
No provider of
'debuginfo(build-id)=4cf0ed5b1417830b454d644c5334c05b8fc5a9c8' found.
['--plus-content debug'?]
Resolving package dependencies...
Nothing to do.
Was nun?
Markus
>gdb /usr/local/bin/kicad
(gdb) run
..
crash
..
(gdb) bt
liefert: siehe Anhang.
#0 0x00007ffff3862f67 in raise () at /lib64/libc.so.6 ??
Missing separate debuginfos, use: zypper install
Mesa-libEGL1-debuginfo-17.0.5-176.1.x86_64 ..........
So, was sagt mir das?
Ist KiCad gegen eine falsche Version der libc kompiliert worden ???
Doch wohl kaum, dann hätte doch der Linker gemotzt.
Was meint Ihr?
Markus
PS.: Der Crash kommt sofort nachdem ich nach dem gdb run Kommando
auf das Footprint-Editor Icon mit der Maus klicke.
Von deiner Antwort kann ich wohl schließen dass du den Fehler
reproduzieren kannst. gdb findet keine debuginfos weshalb du nur sehr
marginal das ganze auswerten kannst (bt funktioniert immer noch, aber
mit weniger infos). zwei Tipps:
1. Baue deinen code mit Debugflags, ansonsten ist der backtrace nicht
sehr aussagekräftig:
1 | cmake -DKICAD_SCRIPTING_WXPYTHON=OFF -Wdev -DCMAKE_BUILD_TYPE=Debug ../
|
Dann führe kicad mit gdb aus, und sorg dafür dass der fehler auslöst:
alternativ, lade den coredump und gib den backtrace aus. Sollte keine
unterschied machen.
2. Probier die aktuelle Git-Version aus. Es wurden viele bugs (auch
crashes) gefixt.
Markus W. schrieb:
> Was meint Ihr?
Da scheints wohl tief im Python Interpreter ein fehler zu sein:
#63 0x00007fffd13a3c2a in pcbnewInitPythonScripting(char const*) () at
/usr/local/bin/_pcbnew.kiface
Ich würde empfehlen den aktuellen Release Candidate auszuprobieren.
Aufgrund von Python 3 support wurde da ein bisschen was geändert, was
vielleicht auch den fehler gefixt hat. Falls der fehler noch immer
auftritt, bitte einen bug in launchpad machen, inklusive den stacktrace.
Als workaround kannst du python deaktivieren, aber ich würde natürlich
schon den grund gerne herausfinden:
-DKICAD_SCRIPTING=OFF
Das ist vermutlich die problematische zeile:
https://github.com/KiCad/kicad-source-mirror/blob/master/pcbnew/swig/python_scripting.cpp#L213
Führe mal das folgende im python2 interpreter aus:
womöglich ist das python modul nicht richtig installiert worden.
Hallo Thomas,
nur ganz kurz, weil ich gerade auf dem Sprung bin.
Code wurde bereits mit cmake -DKICAD_SCRIPTING=OFF
fürs Compilieren konfigurert, weil ich von den
Skripting Problemen via Python schon gehört habe.
Sourcen sind von vor zwei Tagen von Github herunter
geladen worden.
Die RC Sourcen sind ja bereits für Version #6, von der
habe ich noch die Finger gelassen.
Was mich wundert ist dass Kicad auf meinem Rechner daheim
läuft, siehe Anhang.
Dort tritt unter OpenSuse
NAME="openSUSE Tumbleweed"
VERSION="20190215"
aber Kernl 4.20.7-1-default
dieses Problem nicht auf.
Werde Morgen weiter sehen, ob ich dem Problem
auf den Grund gehen kann.
Danke bis dahin für die Hilfe.
Markus
Hallo Thomas,
>python2 -V
Python 2.7.13
python2 -c "import pcbnew"
wirft keinen Fehler aus!
>python2
Python 2.7.13 (default, Jan 03 2017, 17:41:54) [GCC] on linux2
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python2.7/site-packages/visvis-1.9.4-py2.7.egg',
'/usr/lib/python2.7/site-packages/pyserial-3.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/rtlsdr_scanner-1.3.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/pyrtlsdr-0.2.4-py2.7.egg',
'/usr/lib/python2.7/site-packages/PyOpenGL-3.1.1a1-py2.7.egg',
'/usr/lib/python2.7/site-packages/mock-2.0.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg',
'/usr/lib/python2.7/site-packages/pbr-3.0.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/funcsigs-1.0.2-py2.7.egg',
'/usr/lib/python27.zip', '/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/PIL',
'/usr/local/lib64/python2.7/site-packages',
'/usr/local/lib/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/gst-0.10',
'/usr/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/wx-3.0-gtk2']
Any hints?
Markus
Ich würde empfehlen mal mit Python skripting aktiv zu compilieren
(irgendwie scheint der code ja ausgeführt zu werden), und einen bug im
offiziellen bugtracker zu erstellen.
Hallo Jim, Thomas und Mitleser,
bin immer noch am kämpfen mit der Installation
von KiCad aus den Sourcen.
Anbei mein log für cmake, Compilieren und das
Debuggen via gdb.
Auch hänge ich mal des Bild der graphischen Fehlermeldung
beim Anklicken des Layout-Editors an.
Was mich irritiert ist die Meldung beim gdb, das
Skripting libs verwendet werden, obwohl bei cmake
der Schalter -DKICAD_SCRIPTING_WXPYTHON=OFF an-
gegeben wurde.
Kann jemand was hierzu sagen?
Vom Ablauf sieht es so aus.
Entpacken der gezipten Sourcen.
im Sourceverzeichnis habe ich ein Unterverzeichnis
build erzeugt und aus diesem cmake aufgerufen:
cmake -DKICAD_SCRIPTING_WXPYTHON=OFF -Wdev -DCMAKE_BUILD_TYPE=Debug ../
Log siehe erste Datei im Anhang.
danach make -l kicad um zu sehen ob kicad Mainapplication
richtig und fehlerfrei gebaut wird.
Siehe log zweite Datei im Anhang.
Dabei sieht man, dass in common/gal/hidpi_gl_canvas.cpp
ein Fehler auftritt und kicad nicht gelinkt werden kann.
Da mache ich folgende Modifikation im Sourecode in der o.g.
C-Datei.
modified cpp File ( uncomment all RETINA_OPENGL_PATCH occurence )
disable #ifdef RETINA_OPENGL_PATCH switch
/*
#ifdef RETINA_OPENGL_PATCH
SetViewWantsBestResolution( true );
#endif
*/
/*
#ifdef RETINA_OPENGL_PATCH
const float scaleFactor = GetBackingScaleFactor();
size.x *= scaleFactor;
size.y *= scaleFactor;
#endif
*/
Jetzt läuft make -i kicad durch und ein kicad bin wirg via
Linker ld erzeugt.
>find . -name kicad
./kicad
./kicad/kicad
Jetzt dn Rest mit >make -i -j8 all bauen und fertig ist die
Compilierorgie.
[100%] Linking CXX executable qa_pcbnew_tools
[100%] Building CXX object
qa/pcbnew/CMakeFiles/qa_pcbnew.dir/drc/test_drc_courtyard_overlap.cpp.o
[100%] Linking CXX executable qa_pcbnew
[100%] Built target pcbnew_python
[100%] Built target pcbnew_kiface
Scanning dependencies of target pcbnew_python_module
Scanning dependencies of target pcbnew
[100%] Creating python's pcbnew native module _pcbnew.so for command
line use.
[100%] Building CXX object
pcbnew/CMakeFiles/pcbnew.dir/__/common/single_top.cpp.o
[100%] Built target pcbnew_python_module
[100%] Linking CXX executable pcbnew
[100%] Built target pcbnew
[100%] Built target qa_pcbnew_tools
[100%] Built target qa_pcbnew
Nun wird die compilierte SW als root installiert
make -i install
Der erfolgte Aufruf von Kicad zeigt, dass der Fehler weiterhin
vorhanden ist.
Siehe jpg Bild im Anhang.
Nun wird kicad im gdb gestartet, log in der vierten Datei im Anhang.
gdb /usr/local/bin/kicad
(gdb) run
und der Fehler erneut wieder in der GUI beim Aufruf des
Layout-Editors ausgelöst.
Der zugehörige Back-Trace vom Stack ist in der selbigen Datei
enthalten.
Wieso taucht
#65 0x00007fffd117c32d in pcbnewInitPythonScripting(char const*)
(aUserScriptingPath=0x1dc6550 "/usr/local/share/kicad/scripting")
das Scripting immer noch auf und wo ist der Übeltäter?
Danke schon mal für weitere Hilfe.
Markus
PS.: Die Github Sourcen sind von heute, also aktuell.
* 1 | -DKICAD_SCRIPTING_WXPYTHON=OFF
|
deaktiviert nur wxPython, nicht Python im allgemeinen.
* warum -i? Diese option bedeutet dass fehler ignoriert werden!
* Führ diesen code mal im Python interpreter aus:
[code]
import pcbnew
pcbnew.LoadPlugins("/usr/local/share/kicad/scripting")
[Code]
* > Dabei sieht man, dass in common/gal/hidpi_gl_canvas.cpp
ein Fehler auftritt und kicad nicht gelinkt werden kann.
tritt bei mir nicht auf. Hast du auf die aktuelle git version
aktuallisiert?
* Hast du schon mal ein komplettes make clean gemacht?
* Dein Compiler ist komisch:
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 7.3.1
irgendwie sind die Versionen für C und C++ unterschiedlich. Ist auch
eine mögliche Fehlerquelle die das Problem erklären könnte.
Hallo Thomas,
* Dein Compiler ist komisch:
Das ist mir auch schon aufgefallen ??
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 7.3.1
lrwxrwxrwx 1 root root 7 6. Aug 2018 /usr/bin/gcc -> gcc-4.8
-rwxr-xr-x 1 root root 94568 17. Aug 2017 /usr/bin/gcc-3.3
-rwxr-xr-x 1 root root 759816 24. Jan 11:33 /usr/bin/gcc-4.8
-rwxr-xr-x 1 root root 1014264 7. Mai 2018 /usr/bin/gcc-7
lrwxrwxrwx 1 root root 5 25. Feb 2018 /usr/bin/g++ -> g++-7
-rwxr-xr-x 1 root root 759816 24. Jan 11:33 /usr/bin/g++-4.8
-rwxr-xr-x 1 root root 1018360 7. Mai 2018 /usr/bin/g++-7
>zypper se gcc | grep '^i'
i | gcc | The system GNU C
Compiler | package
i+ | gcc-c++ | The system GNU C++
Compiler | package
i | gcc-info | The system GNU Compiler
documentation | package
i+ | gcc33 | The GNU C Compiler and
Support Files | package
i+ | gcc48 | The GNU C Compiler and
Support Files | package
i+ | gcc48-c++ | The GNU C++ Compiler
| package
i | gcc48-info | Documentation for the
GNU compiler collection | package
i+ | gcc7 | The GNU C Compiler and
Support Files | package
i+ | gcc7-c++ | The GNU C++ Compiler
| package
i+ | gcc7-info | Documentation for the
GNU compiler collection | package
i+ | gcc73 | GNU C Compiler
| package
i | gccmakedep | Utility to list the
resource database of an X application | package
i+ | libstdc++6-devel-gcc7 | Include Files and
Libraries mandatory for Development | package
i | libstdc++6-gcc6-32bit | The standard C++ shared
library | package
Werde mal den gcc link auf gcc7 umbiegen.
Clean war ja bei der Neuinstallation der Sourcen
doch nicht notwendig, oder sind da obj-Files mit
enthalten - sicher doch nicht.
[code]
import pcbnew
pcbnew.LoadPlugins("/usr/local/share/kicad/scripting")
[Code]
>python2
Python 2.7.13 (default, Jan 03 2017, 17:41:54) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pcbnew
>>> pcbnew.LoadPlugins("/usr/local/share/kicad/scripting")
./src/common/stdpbase.cpp(62): assert "traits" failed in Get(): create
wxApp before calling this
Markus
PS.: Compiliere gerad neu mit gcc7.
Hallo Thomas,
der gcc kommt soweit ich es verstehe nicht zum Einsatz,
da nur der CXX beim compilieren zum Zuge kommt, es sei
denn der gcc spielt noch eine Rolle beim Linken.
Leider tritt der Fehler immer noch auf.
Ich habe den CC switch auf /usr/bin/gcc7 gesetzt:
CC=/usr/bin/gcc-7; cmake -DKICAD_SCRIPTING_WXPYTHON=OFF -Wdev
-DCMAKE_BUILD_TYPE=Debug ../
Im Makefile wird aber nirgends CC gesetzt, deshalb bin ich mir
nicht sicher ob der gcc7 verwendet wird, falls er doch
benötigt werden sollte.
Im Compiler-Output ist das aber nicht angezeigt worden.
Ich überlegen schon mir ein Docker Image mit KiCAD zu
bauen oder zu besorgen, in der Hoffnung dann dem Problem
so aus dem Weg zu gehen.
Danke für Deine Hilfe bis dahin.
Markus
Für Docker haben wir einen prototypen mit einer funktionierenden
build-umgebung. Das gitlab-ci ist konfiguriert um AppImages am ende
auszuspucken. Diese sachen sind jedoch noch nicht im offiziellen Projekt
übernommen worden (gitlab login erforderlich):
*
https://gitlab.com/kicad-mirror/kicad-source-mirror/blob/feature/gitlab-ci/.gitlab-ci.yml
* https://gitlab.com/kicad-mirror/kicad-docker
Hallo Thomas,
hallo Forum,
konnte mein Problem lösen durch Deinstallation
und Installation der u.g. Pakete.
Checking for file conflicts:
.......................................................[done]
(1/6) Removing python-wxWidgets-3_0-devel-3.0.2.0-5.2.x86_64
.......................[done]
(2/6) Removing python-wxWidgets-3_0-lang-3.0.2.0-5.2.x86_64
........................[done]
(3/6) Removing python-wxWidgets-3_0-3.0.2.0-5.2.x86_64
.............................[done]
(4/6) Installing: python-wxWidgets-devel-2.8.12.1-14.4.x86_64
......................[done]
(5/6) Installing: python-wxWidgets-2.8.12.1-14.4.x86_64
............................[done]
(6/6) Installing: python-wxWidgets-lang-2.8.12.1-14.4.x86_64
.......................[done]
Danke für die Hilfe und Anregungen.
Habe dabei wieder einiges gelernt.
Markus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|