JRE + Eclipse crashen bei aktiver /dev/ttyACM0

Gast #4097824
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
Gast #4098211
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.
Persönliche Seite #4098260
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.
Gast #4098324
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
Gast #4098895
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.
Gast #4098911
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?
Persönliche Seite #4099094
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.
Gast #4099585
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
Gast #4099591
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren