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
:
Verschoben durch User
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:
1 | coredumpctl info kicad |
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:
1 | gdb kicad |
2 | (gdb) bt |
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:
1 | import pcbnew |
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.
:
Bearbeitet durch User
*
1 | -DKICAD_SCRIPTING_WXPYTHON=OFF |
deaktiviert nur wxPython, nicht Python im allgemeinen. *
1 | make -i install |
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.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.