
Androidfan7
Stamm-User
- 132
Guten Abend,
ich bin heute auf ein kleines Problem gestoßen und weiß nicht wie ich mir behelfen kann.
Wenn ich zwischen zwei Geräten mit der FileChannel Methode "transferTo" Daten austausche und der Socket auf der anderen Seite die Verbindung abbricht, stürzt meine App ab. Ich habe auch keine Möglichkeit das aufzufangen, nicht mal catch Throwable hilft da. Das Problem ist wohl, dass es sich da um eine Exception handelt die im nativen Code geworfen wird.
Ich habe mal Auszüge aus dem Log:
Auch dieser Stackoverflow Beitrag beschreibt mein Problem. (Dort wurde leider keine Lösung gefunden) Ich habe leider keine Ahnung von C und kann mir daher selbst nicht weiterhelfen.
Kann mir jemand sagen wir ich verhindern kann das meine App abstürzt und ich die Ausnahme in Java behandeln kann?
Besten Dank für eure Hilfe!
Edit:
Ich reiche morgen meinen Code nach und erläuterte dann auch warum ich es so gemacht habe. Schaffe es nur jetzt zeitlich nicht mehr.
ich bin heute auf ein kleines Problem gestoßen und weiß nicht wie ich mir behelfen kann.
Wenn ich zwischen zwei Geräten mit der FileChannel Methode "transferTo" Daten austausche und der Socket auf der anderen Seite die Verbindung abbricht, stürzt meine App ab. Ich habe auch keine Möglichkeit das aufzufangen, nicht mal catch Throwable hilft da. Das Problem ist wohl, dass es sich da um eine Exception handelt die im nativen Code geworfen wird.
Ich habe mal Auszüge aus dem Log:
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI SetLongField called with pending exception 'android.system.ErrnoException' thrown in long libcore.io.Posix.sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.util.MutableLong, long):-2
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] in call to SetLongField
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] from long libcore.io.Posix.sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.util.MutableLong, long)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] "Thread-7455" prio=5 tid=30 Runnable
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x1363a7c0 self=0x9d0dcc00
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | sysTid=31601 nice=0 cgrp=default sched=0/0 handle=0x9a078480
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | state=R schedstat=( 390865008 306383116 876 ) utm=11 stm=28 core=3 HZ=100
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | stack=0x9a4c3000-0x9a4c5000 stackSize=1036KB
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #00 pc 00004758 /system/lib/libbacktrace_libc++.so (_ZN13UnwindCurrent6UnwindEjP8ucontext+23)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #01 pc 00002f8d /system/lib/libbacktrace_libc++.so (_ZN9Backtrace6UnwindEjP8ucontext+8)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #02 pc 00246fd5 /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_6mirror9ArtMethodE+68)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #03 pc 0022b999 /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+144)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #04 pc 000b1c6b /system/lib/libart.so (_ZN3artL8JniAbortEPKcS1_+602)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #05 pc 000b23d5 /system/lib/libart.so (_ZN3art9JniAbortFEPKcS1_z+60)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #06 pc 000b5273 /system/lib/libart.so (_ZN3art11ScopedCheckC2EP7_JNIEnviPKc+1142)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #07 pc 000b8e9b /system/lib/libart.so (_ZN3art8CheckJNI12SetLongFieldEP7_JNIEnvP8_jobjectP9_jfieldIDx+30)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #08 pc 0001d831 /system/lib/libjavacore.so (???)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #09 pc 0001e587 /system/lib/libjavacore.so (???)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #10 pc 0028ff55 /data/dalvik-cache/arm/system@framework@boot.oat (Java_libcore_io_Posix_sendfile__Ljava_io_FileDescriptor_2Ljava_io_FileDescriptor_2Landroid_util_MutableLong_2J+168)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at libcore.io.Posix.sendfile(Native method)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at libcore.io.BlockGuardOs.sendfile(BlockGuardOs.java:265)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at java.nio.FileChannelImpl.transferTo(FileChannelImpl.java:429)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at com.example.channels.MyService$1.run(MyService.java:343)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at java.lang.Thread.run(Thread.java:818)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] in call to SetLongField
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] from long libcore.io.Posix.sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.util.MutableLong, long)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] "Thread-7455" prio=5 tid=30 Runnable
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x1363a7c0 self=0x9d0dcc00
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | sysTid=31601 nice=0 cgrp=default sched=0/0 handle=0x9a078480
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | state=R schedstat=( 390865008 306383116 876 ) utm=11 stm=28 core=3 HZ=100
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | stack=0x9a4c3000-0x9a4c5000 stackSize=1036KB
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #00 pc 00004758 /system/lib/libbacktrace_libc++.so (_ZN13UnwindCurrent6UnwindEjP8ucontext+23)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #01 pc 00002f8d /system/lib/libbacktrace_libc++.so (_ZN9Backtrace6UnwindEjP8ucontext+8)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #02 pc 00246fd5 /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_6mirror9ArtMethodE+68)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #03 pc 0022b999 /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+144)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #04 pc 000b1c6b /system/lib/libart.so (_ZN3artL8JniAbortEPKcS1_+602)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #05 pc 000b23d5 /system/lib/libart.so (_ZN3art9JniAbortFEPKcS1_z+60)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #06 pc 000b5273 /system/lib/libart.so (_ZN3art11ScopedCheckC2EP7_JNIEnviPKc+1142)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #07 pc 000b8e9b /system/lib/libart.so (_ZN3art8CheckJNI12SetLongFieldEP7_JNIEnvP8_jobjectP9_jfieldIDx+30)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #08 pc 0001d831 /system/lib/libjavacore.so (???)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #09 pc 0001e587 /system/lib/libjavacore.so (???)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] native: #10 pc 0028ff55 /data/dalvik-cache/arm/system@framework@boot.oat (Java_libcore_io_Posix_sendfile__Ljava_io_FileDescriptor_2Ljava_io_FileDescriptor_2Landroid_util_MutableLong_2J+168)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at libcore.io.Posix.sendfile(Native method)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at libcore.io.BlockGuardOs.sendfile(BlockGuardOs.java:265)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at java.nio.FileChannelImpl.transferTo(FileChannelImpl.java:429)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at com.example.channels.MyService$1.run(MyService.java:343)
08-08 21:27:42.156 30938-31601/com.example.channels A/art: art/runtime/check_jni.cc:65] at java.lang.Thread.run(Thread.java:818)
Auch dieser Stackoverflow Beitrag beschreibt mein Problem. (Dort wurde leider keine Lösung gefunden) Ich habe leider keine Ahnung von C und kann mir daher selbst nicht weiterhelfen.
Kann mir jemand sagen wir ich verhindern kann das meine App abstürzt und ich die Ausnahme in Java behandeln kann?
Besten Dank für eure Hilfe!
Edit:
Ich reiche morgen meinen Code nach und erläuterte dann auch warum ich es so gemacht habe. Schaffe es nur jetzt zeitlich nicht mehr.
Zuletzt bearbeitet: