Skip to content

Android application crashing when bitmap is changed multiple times. #9510

@schaudhary-extron

Description

@schaudhary-extron

Android framework version

net8.0-android

Affected platform version

VS2022 ver 17.11.5 .Net 8

Description

On Android application we have two views A and B. both have bitmaps. We interchange these bitmaps between view A and B multiple times. Application get crash with error:

**[libc] Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x37 in tid 14029 (.NET TP Worker), pid 11449 ()**

Here is the full stack:

[monodroid-assembly] typemap: unable to find mapping to a Java type from managed type 'System.Byte, System.Private.CoreLib'
[monodroid-timing] [1/6] Typemap.managed_to_java: end, total time; elapsed: 0:0::22239
[monodroid] typemap: failed to map managed type to Java type: System.Byte, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (Module ID: 3b4eef8c-34a0-4038-827e-bd28353b0892; Type token: 33554596)
[monodroid-assembly] typemap: called from

[monodroid-assembly] typemap: called from
[monodroid-assembly] at Android.Runtime.JNIEnv.TypemapManagedToJava(Type type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 527
[monodroid-assembly]    at Android.Runtime.JNIEnv.GetJniName(Type type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 541
[monodroid-assembly]    at Android.Runtime.JNIEnv.FindClass(Type type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 308
[monodroid-assembly]    at Android.Runtime.JNIEnv.AssertCompatibleArrayTypes(IntPtr sourceArray, Type destType) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 617
[monodroid-assembly]    at Android.Runtime.JNIEnv._GetArray(IntPtr array_ptr, Type element_type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 1089
[monodroid-assembly]    at Android.Runtime.JNIEnv.GetArray(IntPtr array_ptr, JniHandleOwnership transfer, Type element_type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:line 982
[monodroid-assembly]    at Java.IO.InputStream.n_Read_arrayBII(IntPtr jnienv, IntPtr native__this, IntPtr native_b, Int32 off, Int32 len) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Java.IO.InputStream.cs:line 228
[monodroid-assembly]    at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLII_I(_JniMarshal_PPLII_I callback, IntPtr jnienv, IntPtr klazz, IntPtr p0, Int32 p1, Int32 p2) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 275
[monodroid-assembly]    at Java.Interop.JniNativeMethods.wrapper_native_indirect_intptr_intptr_intptr_intptr_intptr(IntPtr& , IntPtr , IntPtr , IntPtr , IntPtr )
[monodroid-assembly]    at Java.Interop.JniEnvironment.StaticMethods.CallStaticObjectMethod(JniObjectReference type, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:line 21447
[monodroid-assembly]    at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeObjectMethod(String encodedMember, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:line 165
[monodroid-assembly]    at Android.Graphics.BitmapFactory.DecodeStream(Stream is) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Graphics.BitmapFactory.cs:line 861
[monodroid-assembly]    at Android.Graphics.BitmapFactory.<>c__DisplayClass33_0.<DecodeStreamAsync>b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Graphics.BitmapFactory.cs:line 871
[monodroid-assembly]    at System.Threading.Tasks.Task`1[[Android.Graphics.Bitmap, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065]].InnerInvoke()
[monodroid-assembly]    at System.Threading.Tasks.Task.<>c.<.cctor>b__281_0(Object obj)
[monodroid-assembly]    at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
[monodroid-assembly]    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
[monodroid-assembly]    at System.Threading.Tasks.Task.ExecuteEntryUnsafe(Thread threadPoolThread)
[monodroid-assembly]    at System.Threading.Tasks.Task.ExecuteFromThreadPool(Thread threadPoolThread)
[monodroid-assembly]    at System.Threading.ThreadPoolWorkQueue.Dispatch()
[monodroid-assembly]    at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
[monodroid-assembly]    at System.Threading.Thread.StartCallback()
[monodroid-assembly] typemap: called from
[libc] Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x37 in tid 14029 (.NET TP Worker), pid 11449 ()

Steps to Reproduce

  1. Create new project on Android with 2 views and add bitmap to it.
  2. interchange bitmaps multiple times between thses 2 views.
  3. It will crash the application. We are using worker thread pool to get the bitmaps from server and changed them using UI thread.

Did you find any workaround?

I could not find any work around so far.

Relevant log output

Metadata

Metadata

Assignees

Labels

Area: Mono.AndroidIssues with the Android API binding (Mono.Android.dll).need-infoIssues that need more information from the author.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions