imsdroid icon indicating copy to clipboard operation
imsdroid copied to clipboard

crashed on startup on Asus K010 Intel CPU

Open zaferaydn opened this issue 8 years ago • 1 comments

Hello; I downloaded the lastest repository as a zip file. I opened the project Imsdroid with Android Studio. I successfully build and install the apk on my tablet. But application fails on start up. Android reports a messagebox saying "IMSDroid has stopped".

My tablet is Asus K010 which has intel atom cpu(I guess). Doesn't Imsdroid run on intel CPU? Is there any known issue?

I attach the logcat output where I think the error happens:

03-12 20:29:24.940 10115-10115/? D/org.doubango.ngn.NgnApplication: Build.MODEL=k010 03-12 20:29:24.940 10115-10115/? D/org.doubango.ngn.NgnApplication: Build.VERSION.SDK=19 03-12 20:29:24.940 10115-10115/? D/dalvikvm: Trying to load lib /data/app-lib/org.doubango.imsdroid-1/libutils_armv5te.so 0x43c68e10 03-12 20:29:24.950 10115-10115/? D/houdini: [10115] Loading library(version: 4.0.8.45720 RELEASE)... successfully. 03-12 20:29:24.950 10115-10115/? D/dalvikvm: Added shared lib /data/app-lib/org.doubango.imsdroid-1/libutils_armv5te.so 0x43c68e10 03-12 20:29:24.950 10115-10115/? D/dalvikvm: No JNI_OnLoad found in /data/app-lib/org.doubango.imsdroid-1/libutils_armv5te.so 0x43c68e10, skipping init 03-12 20:29:24.950 10115-10115/? D/org.doubango.ngn.NgnEngine: CPU_Feature=15 03-12 20:29:24.950 10115-10115/? D/org.doubango.ngn.NgnEngine: isCpuNeon()=YES 03-12 20:29:24.950 10115-10115/? D/dalvikvm: Trying to load lib /data/app-lib/org.doubango.imsdroid-1/libtinyWRAP_neon.so 0x43c68e10 03-12 20:29:24.960 10115-10115/? D/houdini: [10115] Unsupported feature (ID:0x20e00149). 03-12 20:29:24.960 10115-10115/? A/libc: Fatal signal 11 (SIGSEGV) at 0xdead0000 (code=1), thread 10115 (ubango.imsdroid)

edit: When i disable neon library, it works! In NgnEngine.initialize2 function I commented NgnApplication.isCpuNeon() block. So it wont load neon library. At this case it work properly. But disabling neon library usage can have some sideffects? Any real solution?

zaferaydn avatar Feb 10 '17 08:02 zaferaydn

I realised that android os loads armv7 libraries insead of x86. I guess there is a feature in android os called houdini that similuates armv7 libraries as x86. But somehow houdini fails while trying to simulate neon library of libtinyWRAP_neon library.

I researched alittle bit, and i found why android os tries to simulate armv7 libraries with houdini insead of using x86 libraries directly. Because there are missing library files in x86 folder(libtinyWRAP_neon and libutils_armv5te are only in armeabi-v7a folder), android thinks that there is missing libraries in x86 so it tries to loads armv7 libraries insead.

I made a workaround by adding fake libraries named libtinyWRAP_neon and libutils_armv5 (with 15 bytes fakes content for example) into the x86 and armeabi folder where these libraries missed. So in the end, all folders(armeabi, armeabi-v7a and x86) have same number of libraries. Then android decided to load x86 libraries.

I also needed to add following line in initialize2 function:

File refFile = new File(String.format("%s/%s", NgnEngine.LIBS_FOLDER, "libutils_armv5te.so")); boolean haveLibUtils = refFile.exists() && refFile.length() > 0;

zaferaydn avatar Feb 20 '17 07:02 zaferaydn