Forum: Platinen KiCad 5.0.2 - Absturz beim Footprint-Editor Aufruf


von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

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
von Jim M. (turboj)


Lesenswert?

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.

von Thomas P. (pointhi)


Lesenswert?

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

von Markus W. (dl8mby)


Lesenswert?

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

von Markus W. (dl8mby)


Lesenswert?

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.

von Thomas P. (pointhi)


Lesenswert?

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.

von Markus W. (dl8mby)


Lesenswert?

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

von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

>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 Thomas P. (pointhi)


Lesenswert?

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.

von Thomas P. (pointhi)


Lesenswert?

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

von Thomas P. (pointhi)


Lesenswert?

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.

von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

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

von Markus W. (dl8mby)


Lesenswert?

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

von Thomas P. (pointhi)


Lesenswert?

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.

von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

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
von Thomas P. (pointhi)


Lesenswert?

*
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.

von Markus W. (dl8mby)


Lesenswert?

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.

von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

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

von Thomas P. (pointhi)


Lesenswert?

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

von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.