Forum: PC Hard- und Software JRE + Eclipse crashen bei aktiver /dev/ttyACM0


von Schnittstellen-Crasher (Gast)


Lesenswert?

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.
17
#
18
19
 .
20
 . Jede Menge Registerauszüge...
21
 .
22
23
---------------  S Y S T E M  ---------------
24
25
OS:jessie/sid
26
27
uname:Linux 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64
28
libc:glibc 2.19 NPTL 2.19 
29
rlimit: STACK 8192k, CORE 0k, NPROC 30603, NOFILE 4096, AS infinity
30
load average:0,37 0,24 0,29
31
32
/proc/meminfo:
33
MemTotal:        3948356 kB
34
MemFree:          626512 kB
35
Buffers:          210156 kB
36
Cached:           954812 kB
37
SwapCached:         9000 kB
38
Active:          1877648 kB
39
Inactive:        1097944 kB
40
Active(anon):    1327660 kB
41
Inactive(anon):   724520 kB
42
Active(file):     549988 kB
43
Inactive(file):   373424 kB
44
Unevictable:           0 kB
45
Mlocked:               0 kB
46
SwapTotal:       1996796 kB
47
SwapFree:        1944292 kB
48
Dirty:               448 kB
49
Writeback:             0 kB
50
AnonPages:       1802584 kB
51
Mapped:           193692 kB
52
Shmem:            241428 kB
53
Slab:             267664 kB
54
SReclaimable:     238048 kB
55
SUnreclaim:        29616 kB
56
KernelStack:        3440 kB
57
PageTables:        24068 kB
58
NFS_Unstable:          0 kB
59
Bounce:                0 kB
60
WritebackTmp:          0 kB
61
CommitLimit:     3970972 kB
62
Committed_AS:    3838792 kB
63
VmallocTotal:   34359738367 kB
64
VmallocUsed:      348672 kB
65
VmallocChunk:   34359374012 kB
66
HardwareCorrupted:     0 kB
67
AnonHugePages:    305152 kB
68
HugePages_Total:       0
69
HugePages_Free:        0
70
HugePages_Rsvd:        0
71
HugePages_Surp:        0
72
Hugepagesize:       2048 kB
73
DirectMap4k:       78348 kB
74
DirectMap2M:     4018176 kB
75
76
77
CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, tsc, tscinvbit
78
79
/proc/cpuinfo:
80
processor  : 0
81
vendor_id  : GenuineIntel
82
cpu family  : 6
83
model    : 42
84
model name  : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
85
stepping  : 7
86
microcode  : 0x1a
87
cpu MHz    : 2100.000
88
cache size  : 2048 KB
89
physical id  : 0
90
siblings  : 2
91
core id    : 0
92
cpu cores  : 2
93
apicid    : 0
94
initial apicid  : 0
95
fpu    : yes
96
fpu_exception  : yes
97
cpuid level  : 13
98
wp    : yes
99
flags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm
100
bogomips  : 4190.82
101
clflush size  : 64
102
cache_alignment  : 64
103
address sizes  : 36 bits physical, 48 bits virtual
104
power management:
105
106
processor  : 1
107
vendor_id  : GenuineIntel
108
cpu family  : 6
109
model    : 42
110
model name  : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
111
stepping  : 7
112
microcode  : 0x1a
113
cpu MHz    : 2100.000
114
cache size  : 2048 KB
115
physical id  : 0
116
siblings  : 2
117
core id    : 1
118
cpu cores  : 2
119
apicid    : 2
120
initial apicid  : 2
121
fpu    : yes
122
fpu_exception  : yes
123
cpuid level  : 13
124
wp    : yes
125
flags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm
126
bogomips  : 4190.82
127
clflush size  : 64
128
cache_alignment  : 64
129
address sizes  : 36 bits physical, 48 bits virtual
130
power management:
131
132
133
134
Memory: 4k page, physical 3948356k(626512k free), swap 1996796k(1944292k free)
135
136
vm_info: Java HotSpot(TM) 64-Bit Server VM (24.76-b04) for linux-amd64 JRE (1.7.0_76-b13), built on Dec 18 2014 16:58:39 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
137
138
time: Sun Apr 19 20:08:51 2015
139
elapsed time: 124277 seconds

von Bernd K. (prof7bit)


Lesenswert?

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?

von Schnittstellen-Crasher (Gast)


Lesenswert?

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

von Konrad S. (maybee)


Lesenswert?

Und es interessiert dich nicht, wo es crasht?

von Schnittstellen-Crasher (Gast)


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Konrad S. (maybee)


Lesenswert?

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. ;-)

von FelixBRB (Gast)


Lesenswert?

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

von Schnittstellen-Crasher (Gast)


Lesenswert?

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.

von Schnittstellen-Crasher (Gast)


Lesenswert?

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?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von FelixBRB (Gast)


Lesenswert?

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

von FelixBRB (Gast)


Lesenswert?

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

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.