Bei Aktivität auf meinem Zielsystem (printf...) auf /dev/ttyACM0 crasht
die Java Laufzeitumgebung und beendet Eclipse. Kacke.
Was kann man da machen? Anderen Kernel laden?
1
#
2
# A fatal error has been detected by the Java Runtime Environment:
3
#
4
# SIGSEGV (0xb) at pc=0x00007fbf9901c733, pid=2833, tid=140462208886528
5
#
6
# JRE version: Java(TM) SE Runtime Environment (7.0_76-b13) (build 1.7.0_76-b13)
7
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.76-b04 mixed mode linux-amd64 compressed oops)
8
# Problematic frame:
9
# C [librxtxSerialx86_64.so+0x7733] Java_gnu_io_RXTXPort_nativeDrain+0xc3
10
#
11
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
12
#
13
# If you would like to submit a bug report, please visit:
14
# http://bugreport.java.com/bugreport/crash.jsp
15
# The crash happened outside the Java Virtual Machine in native code.
16
# See problematic frame for where to report the bug.
Bist Du Mitglied der Gruppe "dialout"? Kannst Du mit anderen Anwendungen
(z.B. cutecom oder dergleichen) als normaler user /dev/ttyACM0 öffnen,
lesen und schreiben?
>Bist Du Mitglied der Gruppe "dialout"?
Ja. Es funktioniert alles, auch flashen über /dev/ttyACM0 geht. Nur
normale Kommunikation geht nicht, JRE beendet sich sofort, legt ein
Error-logfile an und schließt Eclipse.
Ich hab zum Spaß mal die javabasierte(?), schreckliche Arduino-IDE
installiert und gestartet, damit funktioniert die Kommunikation im
Terminal-Mode über /dev/ttyACM0.
Schnittstellen-Crasher schrieb:> crasht die Java Laufzeitumgebung und beendet Eclipse
Das ist aber native-code wo es "kracht" schon mal die Lib in einer
neueren oder älteren Version probiert?
Schnittstellen-Crasher schrieb:> Bei Aktivität auf meinem Zielsystem (printf...) auf /dev/ttyACM0
Sicher das gut geht wenn wzei Prozesse gleichzeitig das Device nutzen?
Oder verstehe ich das falsch? Beschreib doch mal wer wo wann was nutzt
das ist irgendwie etwas verwirrend.
Schnittstellen-Crasher schrieb:>>Und es interessiert dich nicht, wo es crasht?> Hier. Hier auf dem Schreibtisch ist's passiert. Direkt neben dem> Lötkolben, der ist noch warm.
Ah, ja, gut. Für den Fall, dass du es genauer hättest wissen wollen,
hätte man noch die nicht gezeigten Zeilen aus dem Log benötigt. ;-)
Mit der RXTX Library hatte ich über ttyACM0 auch viele Probleme. Jetzt
benutzte ich java-simple-serial-connector - jSSC. Damit bin ich sehr
zufrieden, alles läuft stabil seitdem. Nur das Abfragen welche seriellen
Ports zur Verfügung stehen braucht manchmal sehr lange. Aber diese
Funktion brauche ich nicht unbedingt, da es bei mir eh immer auf dem
gleichen Port laufen soll.
Gruß, Felix
Autor: Läubi .. (laeubi) (Moderator) schrieb:
>Das ist aber native-code wo es "kracht" schon mal die Lib in einer
neueren oder älteren Version probiert?
Hm. Was meinst du mit Lib in einer neueren oder älteren Version? Welche
Lib?
>Sicher das gut geht wenn wzei Prozesse gleichzeitig das Device nutzen?
Das ist ein interessanter Punkt.
In meinem Fall heißt das vermutlich, das USB-Device (AtMega 16u2 als
Programmer) ist immer vorhanden. Ich kenn mich mit USB nicht besonders
gut aus, aber könnte es sein, daß das Device ja irgendsonen Descriptor
ändert? Programmer einerseits, USB-Seriell-Umsetzer andererseits? Das
zusätzlich genutzte Plugin bietet keine Unterstützung zum Abwählen des
Programmers. Könnte ich den (läuft mit Bossa) von der Kommandozeile aus
abschalten?
>Oder verstehe ich das falsch? Beschreib doch mal wer wo wann was nutzt>das ist irgendwie etwas verwirrend.
Flashen geht. Wenn ich danach im Serial Monitor View "add a serial port
to the monitor" einen Port anlege (es geht nur /dev/ttyACM0) und ein
Byte schicke beendet sich Eclipse sofort.
Autor: FelixBRB (Gast) schrieb:
>Jetzt benutzte ich java-simple-serial-connector - jSSC.
Den hab ich wohl schon an Bord, zumindest existiert jssc-2.8.0.jar aber
wie gehe ich damit um? Und benutze ich ihn vielleicht bereits schon ohne
es zu merken?
Schnittstellen-Crasher schrieb:> Hm. Was meinst du mit Lib in einer neueren oder älteren Version? Welche> Lib?
Laut Stacktrace nutzt du (oder Eclipse, oder das Plugin für Eclipse
welches du nutzt) librxtxSerialx86_64.so das ist eine native Linux Lib
von diesem Projekt: http://rxtx.qbang.org bzw.
http://fizzed.com/oss/rxtx-for-java da ich aber nun nicht weiß welches
"Projekt" du genau nutzt ist es schwer etwas zu raten.
Schnittstellen-Crasher schrieb:> Ich kenn mich mit USB nicht besonders gut aus, aber könnte es sein, daß> das Device ja irgendsonen Descriptor ändert?
Kann alles sein, deshalb solltest du am besten mal schreiben welches
Board und welche Software und woher das ganze stammt.
Du könntest dich auch auf der Projektseite der beteiligten
Soft-/Hardware umsehen ob jemand schon das Problem hatte und ggf. eine
Lösung vorgestellt hat.
Moin,
Wie schon geschrieben wurde, sagt dein Stacktrace eindeutig aus, dass
deine Anwendung die RXTX-Lib benutzt und dabei ein Problem auftrat. Du
musst das halt umprogrammieren auf die jSSC. Wenn du die .jar schon
hast, ist der erste Schritt ja schon erledigt. Die API ist aber eine
andere, daher musst du nicht nur die andere .jar einbinden, sondern auch
deinen Code anpassen. Da musst du dich halt mit beschäftigen, das kann
dir keiner abnehmen.
Gruß, Felix
Achso, wenn eine andere Anwendung mit dem ttyACM0 problemlos arbeitet,
kannst du den Kernel etc. als Ursache ausschließen. Auch Eclipse selbst
wird damit nix zu tun haben. Ich tippe ganz stark auf die RXTX-Lib -
wegen dem Stacktrace und wegen eigener Erfahrungen.
Gruß, Felix