JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0

This use of the following a string “NOOBIE👉x” blows on Android 5.

08-10 00:52:43.247: D/JniHelper(4020): [UTF SAFE TEST] FINAL TEMP STRING: “NOOBIE👉x”
08-10 00:52:43.387: A/art(4020): sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
08-10 00:52:43.387: A/art(4020): sart/runtime/check_jni.cc:65] in call to NewStringUTF
08-10 00:52:43.387: A/art(4020): sart/runtime/check_jni.cc:65] native: #07 pc 000bf93d /system/lib/libart.so (art::CheckJNI::NewStringUTF(_JNIEnv*, char const*)+44)
08-10 00:52:43.387: A/art(4020): sart/runtime/check_jni.cc:65] native: #08 pc 0029b48c /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (_JNIEnv::NewStringUTF(char const*)+40)

Build fingerprint: ‘samsung/zerofltetmo/zerofltetmo:5.0.2/LRX22G/G920TUVU1AOCG:user/release-keys’
pid: 4020, tid: 5293, name: GLThread 101477 >>> com.appsomniacs.da2 <<<
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x2f6b699e
Stack frame #00 pc 001fa6d8 /system/lib/libart.so (art::Monitor::VisitLocks(art::StackVisitor*, void ()(art::mirror::Object, void*), void*, bool)+167)
Stack frame #01 pc 0023d47f /system/lib/libart.so (art::StackDumpVisitor::VisitFrame()+374)
Stack frame #02 pc 00237693 /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+702)
Stack frame #03 pc 0023fc41 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+224)
Stack frame #04 pc 00248d95 /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream<char, std::__1::char_traits >&)+120)
Stack frame #05 pc 0022f805 /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&)+272)
Stack frame #06 pc 0022fa4f /system/lib/libart.so (art::Runtime::Abort()+82)
Stack frame #07 pc 000a9275 /system/lib/libart.so (art::LogMessage::~LogMessage()+1360)
Stack frame #08 pc 000b3359 /system/lib/libart.so (art::JniAbort(char const*, char const*)+1112)
Stack frame #09 pc 000b389d /system/lib/libart.so (art::JniAbortF(char const*, char const*, …)+68)
Stack frame #10 pc 000b5e3b /system/lib/libart.so (_ZN3art11ScopedCheck5CheckEbPKcz.constprop.128+922)
Stack frame #11 pc 000bf93d /system/lib/libart.so (art::CheckJNI::NewStringUTF(_JNIEnv*, char const*)+44)
Stack frame #12 pc 0029b48c /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (_JNIEnv::NewStringUTF(char const*)+40)
Stack frame #13 pc 0075b604 /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (cocos2d::BitmapDC::getBitmapFromJavaShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, float, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+312)
Stack frame #14 pc 0075bbc8 /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (cocos2d::CCImage::initWithStringShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, int, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+216)
Stack frame #15 pc 0079aa88 /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (cocos2d::CCTexture2D::initWithString(char const*, cocos2d::_ccFontDefinition*)+1188)
Stack frame #16 pc 00719104 /data/app/com.appsomniacs.da2-2/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::updateTexture()+120)
Stack frame #17 pc 00718b9c /data/a

Its seems to be possibly related to a well known bug in Android JNI… On Android 4.x I just got some weird characters. but now on 5.0.2, it just blows up and crashes the app. https://code.google.com/p/android/issues/detail?id=25386

I am using Cocos2d-x 2.2.6, and NDK 9D.

Any thoughts?

1 Like

@slackmoehrle @pabitrapadhy please help regarding this issue, i am facing same issue on android cocos2dx 2.2.6

I’m not sure how UTF-8 strings are handled when it contains Emoji. @zhangxm might know.

@zhangxm please help me regarding this issue.

@zhangxm is in a different time zone, so he will respond during his normal work day.

@Orionnoir @shauket Could you please tell me how to reproduce it?

i made an sample using cocos2dx 2.2.6 and run on android, when it create label in helloworldscene it gets crash. crash logs are below for my game.

06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #12 pc 004efa65 /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (???)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #13 pc 004efacf /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::JniHelper::getStaticMethodInfo(cocos2d::JniMethodInfo_&, char const*, char const*, char const*)+30)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #14 pc 004eeb0d /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::BitmapDC::getBitmapFromJavaShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, float, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+36)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #15 pc 004eed6b /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCImage::initWithStringShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, int, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+104)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #16 pc 005016bb /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCTexture2D::initWithString(char const*, cocos2d::_ccFontDefinition*)+430)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #17 pc 004d93c7 /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::updateTexture()+42)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #18 pc 004d9811 /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::setString(char const*)+88)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #19 pc 004d905b /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment)+126)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #20 pc 004d90eb /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::create(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment)+48)
06-27 12:43:31.324: A/art(19218): art/runtime/runtime.cc:286] native: #21 pc 004d912b /data/app/com.ids.little.farm.time.fun-1/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::create(char const*, char const*, float)+14)

@shauket Could you paste the codes?

yes sure.

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

int fontSize = winSize.width * .05;
CCLOG("shauket:: disclaimerscene 1");
CCLabelTTF *statusLabel = CCLabelTTF::create("Disclaimer","Arial", fontSize);
CCLOG("shauket:: disclaimerscene 2");
statusLabel->setAnchorPoint(ccp(0.5, 0.5));
statusLabel->setDimensions(CCSize(winSize.width * .8, winSize.height * .1));
statusLabel->setHorizontalAlignment(kCCTextAlignmentCenter);
statusLabel->setVerticalAlignment(kCCVerticalTextAlignmentCenter);
statusLabel->enableStroke(ccWHITE, 1.0f);
statusLabel->setColor(ccc3(255,255,255));
statusLabel->setPosition(CCPoint(winSize.width * .5, winSize.height * .8));
this->addChild(statusLabel);

crash happend on first line when he create label.

@shauket I will have a test.

ok thanks please let me know when you done.

@shauket i use latest codes of cocos2d-x v2 branch, and use the codes you pasted, there is not problem. It ca n run correctly in my Nexus 4.

Thanks,

I have merged my custom changes in old cocos to new cocos2dx v2 2.2.6 can you check my cocos files if there is something wrong is merged in case of android? because same cocos run on ios and work perfect.

My lastest game crash logs are

06-29 14:37:37.339: E/JAVA(5947): Language path:
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception ‘java.lang.NullPointerException’ thrown in unknown throw location
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] in call to FindClass
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] from void org.cocos2dx.lib.Cocos2dxRenderer.nativeInit(int, int)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] “GLThread 10072” prio=5 tid=11 Runnable
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] | group=“main” sCount=0 dsCount=0 obj=0x12c064b0 self=0xb4f0c400
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] | sysTid=5968 nice=0 cgrp=apps sched=0/0 handle=0xaf45b580
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] | state=R schedstat=( 149871717 45146978 133 ) utm=7 stm=7 core=1 HZ=100
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] | stack=0xb39fe000-0xb3a00000 stackSize=1036KB
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] | held mutexes= “mutator lock”(shared held)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #00 pc 00004640 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #01 pc 00002e8d /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #02 pc 00247501 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits >&, int, char const*, art::mirror::ArtMethod*)+68)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #03 pc 0022c2fb /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+146)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #04 pc 000b11e3 /system/lib/libart.so (art::JniAbort(char const*, char const*)+582)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #05 pc 000b191d /system/lib/libart.so (art::JniAbortF(char const*, char const*, …)+60)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #06 pc 000b4a2d /system/lib/libart.so (art::ScopedCheck::ScopedCheck(_JNIEnv*, int, char const*)+1284)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #07 pc 000b570d /system/lib/libart.so (art::CheckJNI::FindClass(JNIEnv*, char const*)+20)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #08 pc 004f1321 /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (???)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #09 pc 004f137b /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::JniHelper::getStaticMethodInfo(cocos2d::JniMethodInfo
&, char const*, char const*, char const*)+30)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #10 pc 004f041d /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::BitmapDC::getBitmapFromJavaShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, float, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+36)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #11 pc 004f067b /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::CCImage::initWithStringShadowStroke(char const*, int, int, cocos2d::CCImage::ETextAlign, char const*, int, float, float, float, bool, float, float, float, float, bool, float, float, float, float)+104)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #12 pc 00502f9b /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::CCTexture2D::initWithString(char const*, cocos2d::_ccFontDefinition*)+430)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #13 pc 004dac8f /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::updateTexture()+42)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #14 pc 004db0d9 /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so (cocos2d::CCLabelTTF::setString(char const*)+88)
06-29 14:37:37.749: A/art(5947): art/runtime/check_jni.cc:65] native: #15 pc 004657d1 /data/app/com.ids.little.farm.time.fun-2/lib/arm/libcocos2dcpp.so

@shauket i think the issue is the as Android integration. I will trace that one instead of this.