Skip to content

JNI crash when reading russian / emoji character using simpleQueryForString  #199

Closed
@mdvacca

Description

@mdvacca

Hi, we are having a JNI crash when using the simpleQueryForString method to read russian / emoji characters.
This seems to be related with: https://code.google.com/p/android/issues/detail?id=81341
So far we reproduced it in Android 5.1 and 5.0.2
Example character that throws the exception: 😃

Exception:

F/art ( 2028): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
F/art ( 2028): art/runtime/check_jni.cc:65] string: '........' // JSON DATA REMOVED FOR SECURITY

F/art ( 2028): art/runtime/check_jni.cc:65] in call to NewStringUTF
F/art ( 2028): art/runtime/check_jni.cc:65] from java.lang.String net.sqlcipher.database.SQLiteStatement.native_1x1_string()
F/art ( 2028): art/runtime/check_jni.cc:65] "AsyncTask #5" prio=5 tid=20 Runnable
F/art ( 2028): art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x12f4d880 self=0xb755c590
F/art ( 2028): art/runtime/check_jni.cc:65] | sysTid=2064 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xb755cbd0
F/art ( 2028): art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=1 stm=0 core=2 HZ=100
F/art ( 2028): art/runtime/check_jni.cc:65] | stack=0xa3b36000-0xa3b38000 stackSize=1036KB
F/art ( 2028): art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #00 pc 00004f60 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext_)+23)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #1 pc 00003665 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext_)+8)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #2 pc 002569c1 /system/lib/libart.so (art::DumpNativeStack(std::1::basic_ostream<char, std::1::char_traits >&, int, char const, art::mirror::ArtMethod)+84)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #3 pc 00239577 /system/lib/libart.so (art::Thread::Dump(std::1::basic_ostream<char, std::1::char_traits >&) const+158)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #4 pc 000b19fb /system/lib/libart.so (art::JniAbort(char const
, char const
)+610)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #5 pc 000b2135 /system/lib/libart.so (art::JniAbortF(char const
, char const
, ...)+68)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #6 pc 000b46ef /system/lib/libart.so (art::ScopedCheck::Check(bool, char const_, ...) (.constprop.129)+922)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #7 pc 000be21d /system/lib/libart.so (art::CheckJNI::NewStringUTF(JNIEnv, char const
)+44)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #8 pc 00007bb3 /data/app/com.medallia.mobile-1/lib/arm/libdatabase_sqlcipher.so (???)
F/art ( 2028): art/runtime/check_jni.cc:65] native: #9 pc 00688e3f /data/dalvik-cache/arm/data@app@com.medallia.mobile-1@base.apk@classes.dex (Java_net_sqlcipher_database_SQLiteStatement_native_11x1_1string
*+82)
F/art ( 2028): art/runtime/check_jni.cc:65] at net.sqlcipher.database.SQLiteStatement.native_1x1_string(Native method)
F/art ( 2028): art/runtime/check_jni.cc:65] at net.sqlcipher.database.SQLiteStatement.simpleQueryForString(SQLiteStatement.java:154)
F/art ( 2028): art/runtime/check_jni.cc:65] at com.medallia.mobile.model.SqliteStore$3.doInBackground(SqliteStore.java:317)
F/art ( 2028): art/runtime/check_jni.cc:65] at com.medallia.mobile.model.SqliteStore$3.doInBackground(SqliteStore.java:305)
F/art ( 2028): art/runtime/check_jni.cc:65] at android.os.AsyncTask$2.call(AsyncTask.java:292)
F/art ( 2028): art/runtime/check_jni.cc:65] at java.util.concurrent.FutureTask.run(FutureTask.java:237)
F/art ( 2028): art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
F/art ( 2028): art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
F/art ( 2028): art/runtime/check_jni.cc:65] at java.lang.Thread.run(Thread.java:818)
F/art ( 2028): art/runtime/check_jni.cc:65]
D/BtGatt.GattService( 7094): stopScan() - queue size =1

Thanks!
David.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions