xamarin / urho

Code to integrate with the Urho3D engine
Other
462 stars 122 forks source link

Xamarin Forms multi pages application with large scene still crash when navigating back on Android device. #256

Closed chenxx08 closed 6 years ago

chenxx08 commented 7 years ago

The code is here. https://github.com/chenxx08/UrhoFormsSample

The app has 3 pages.

Operate like this: Main page -> Urho page -> Detail page -> Back to Urho page -> Back to Main page -> Crash!!!

If the scene is small (use Charts). The app will not crash. In "UrhoPage.xaml.cs" line 35.

If the scene is large (use HugeObjectCount) and call JsonConvert in DetailPage.cs line 24. The app will crash. If not call JsonConvert in DetailPage.cs line 24. The app will not crash.

I call JsonConvert in DetailPage.cs. Back to UrhoPage is all right. But crash when back to MainPage from UrhoPage. It's too strange!!!

UrhoSharp.Forms: 1.5.22 Xamarin: 4.5.0.486 Xamarin.Adnroid SDK: 7.3.1.2 Xamarin.Forms: 2.3.4.247 Visual studio professional 2017

Output log: InspectorDebugSession(5): StateChange: Start -> EntryPointBreakpointRegistered InspectorDebugSession(5): Constructed Android application is debugging. InspectorDebugSession(5): HandleTargetEvent: TargetReady Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/UrhoFormsSample.Android.dll Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/FormsViewGroup.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Urho.Droid.SdlBinding.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Urho.Forms.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.Animated.Vector.Drawable.dll [External] 10-26 16:18:19.613 I/ ( 2748): power log dlsym ok 10-26 16:18:19.615 I/art ( 2748): Late-enabling -Xcheck:jni 10-26 16:18:19.615 I/art ( 2748): Reinit property: dalvik.vm.checkjni= false 10-26 16:18:19.662 W/monodroid( 2748): Creating public update directory:/data/user/0/UrhoFormsSample.Android/files/.override 10-26 16:18:19.662 W/monodroid( 2748): Using override path: /data/user/0/UrhoFormsSample.Android/files/.__override__ 10-26 16:18:19.662 W/monodroid( 2748): Using override path: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__ 10-26 16:18:19.662 W/monodroid( 2748): Trying to load sgen from: /data/user/0/UrhoFormsSample.Android/files/.__override__/libmonosgen-2.0.so 10-26 16:18:19.662 W/monodroid( 2748): Trying to load sgen from: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/libmonosgen-2.0.so 10-26 16:18:19.662 W/monodroid( 2748): Trying to load sgen from: /data/app/UrhoFormsSample.Android-1/lib/arm/libmonosgen-2.0.so 10-26 16:18:19.662 W/monodroid( 2748): Trying to load sgen from: /data/user/0/UrhoFormsSample.Android/files/.__override__/links/libmonosgen-2.0.so 10-26 16:18:19.664 W/monodroid-debug( 2748): Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:29248,server=y,embedding=1 10-26 16:18:19.689 W/monodroid-debug( 2748): Accepted stdout connection: 53 10-26 16:18:20.552 W/monodroid-gc( 2748): GREF GC Threshold: 46080 10-26 16:18:20.560 W/monodroid( 2748): Calling into managed runtime init Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.Design.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.v4.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.v7.AppCompat.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.v7.CardView.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.v7.MediaRouter.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.v7.RecyclerView.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Android.Support.Vector.Drawable.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Forms.Core.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Forms.Platform.Android.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Forms.Platform.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Xamarin.Forms.Xaml.dll [External] Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/UrhoFormsSample.dll Loaded assembly: /storage/emulated/0/Android/data/UrhoFormsSample.Android/files/.__override__/Newtonsoft.Json.dll [External] Loaded assembly: Mono.Android.dll [External] Loaded assembly: Java.Interop.dll [External] Loaded assembly: System.Runtime.dll [External] Resolved pending breakpoint for 'Android.Runtime.JNIEnv.RegisterJniNatives(System.IntPtr, int, System.IntPtr, System.IntPtr, int)' to [0x0](no debug symbols). Loaded assembly: System.Collections.Concurrent.dll [External] Loaded assembly: System.Threading.dll [External] Loaded assembly: System.Runtime.InteropServices.dll [External] Loaded assembly: System.Reflection.dll [External] Loaded assembly: System.Collections.dll [External] Loaded assembly: System.Linq.dll [External] Loaded assembly: System.Core.dll [External] Loaded assembly: System.Runtime.Extensions.dll [External] Loaded assembly: System.Reflection.Extensions.dll [External] InspectorDebugSession(5): HandleTargetEvent: TargetHitBreakpoint InspectorDebugSession(5): StateChange: EntryPointBreakpointRegistered -> EntryPointBreakpointHit InspectorDebugSession(5): AgentBridge.InjectAssembly: /sdcard/Android/data//files/.__override__/inspector-temp/Xamarin.Interactive.dll InspectorDebugSession(5): AgentBridge.InjectAssembly: /sdcard/Android/data//files/.__override__/inspector-temp/Xamarin.Interactive.Android.dll InspectorDebugSession(5): StateChange: EntryPointBreakpointHit -> BreakdanceInvoking Loaded assembly: /storage/emulated/0/Android/data/files/.__override__/inspector-temp/Xamarin.Interactive.dll [External] Loaded assembly: /storage/emulated/0/Android/data/files/.__override__/inspector-temp/Xamarin.Interactive.Android.dll [External] Thread started: #3 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted InspectorDebugSession(5): StateChange: BreakdanceInvoking -> BreakdanceStarted 10-26 16:18:21.164 I/HwCust ( 2748): Constructor found for class android.app.HwCustActivityImpl Loaded assembly: System.ObjectModel.dll [External] Loaded assembly: System.dll [External] Loaded assembly: MonoDroidConstructors [External] 10-26 16:18:21.218 I/HwCust ( 2748): Constructor found for class android.app.HwCustHwWallpaperManagerImpl 10-26 16:18:21.225 W/Mono ( 2748): The request to load the assembly System.Xml.ReaderWriter v4.0.0.0 was remapped to v2.0.5.0 Loaded assembly: System.Threading.Tasks.dll [External] Loaded assembly: System.Xml.ReaderWriter.dll [External] Loaded assembly: System.Xml.dll [External] Loaded assembly: System.IO.dll [External] Loaded assembly: System.Linq.Expressions.dll [External] Loaded assembly: System.Resources.ResourceManager.dll [External] Loaded assembly: System.Globalization.dll [External] Loaded assembly: System.Dynamic.Runtime.dll [External] 10-26 16:18:21.421 W/Mono ( 2748): The request to load the assembly System.Xml.ReaderWriter v4.0.0.0 was remapped to v2.0.5.0 Loaded assembly: System.Text.RegularExpressions.dll [External] Loaded assembly: System.ComponentModel.dll [External] 10-26 16:18:21.888 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md5b60ffeb829f638581ab2bb9b1a7f4f3f.Platform_DefaultRenderer 10-26 16:18:21.962 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md5270abb39e60627f0f200893b490a1ade.ViewRenderer_2 10-26 16:18:22.050 I/OpenGLRenderer( 2748): Initialized EGL, version 1.4 WARNING: linker: /vendor/lib/libhwuibp.so 10-26 16:18:22.054 W/linker ( 2748): /vendor/lib/libhwuibp.so: unused DT entry: type 0xf arg 0xeb5 : unused DT entry: type 0xf arg 0xeb5 10-26 16:18:22.096 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md5b60ffeb829f638581ab2bb9b1a7f4f3f.LabelRenderer Thread started: <Thread Pool> #4 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted Thread started: <Thread Pool> #5 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted Thread started: <Thread Pool> #6 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted Thread started: <Thread Pool> #7 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted 10-26 16:18:22.175 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md5b60ffeb829f638581ab2bb9b1a7f4f3f.CellRenderer_RendererHolder Thread finished: <Thread Pool> #4 InspectorDebugSession(5): HandleTargetEvent: ThreadStopped The thread 'Unknown' (0x4) has exited with code 0 (0x0). Thread started: <Thread Pool> #8 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted Thread finished: <Thread Pool> #8 InspectorDebugSession(5): HandleTargetEvent: ThreadStopped Thread started: <Thread Pool> #9 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted The thread 'Unknown' (0x8) has exited with code 0 (0x0). 10-26 16:20:38.934 I/hwaps ( 2748): JNI_OnLoad 10-26 16:20:39.142 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md5383ace880c28a6f1d0f82a426452473e.AndroidSurfaceRenderer 10-26 16:20:39.187 W/art ( 2748): JNI RegisterNativeMethods: attempt to register 0 native methods for md568efe3fd0c0149b25f1f2889198ce88c.UrhoSurfacePlaceholder 10-26 16:20:39.275 I/SDL ( 2748): surfaceCreated() 10-26 16:20:39.275 I/SDL ( 2748): surfaceChanged() 10-26 16:20:39.275 I/SDL ( 2748): pixel format RGB_565 10-26 16:20:39.275 I/SDL ( 2748): Window size: 1440x1880 10-26 16:20:39.276 I/SDL ( 2748): surfaceChanged: SDLThread=null? true 10-26 16:20:39.316 I/SDL ( 2748): surfaceChanged: end. 10-26 16:20:39.316 I/SDL ( 2748): surfaceChanged: joining... 10-26 16:20:39.316 I/SDL ( 2748): SDL_Android_Init() 10-26 16:20:39.316 I/SDL ( 2748): SDL_Android_Init() finished! Thread started: #10 InspectorDebugSession(5): HandleTargetEvent: ThreadStarted 10-26 16:20:39.385 I/Urho3D ( 2748): Created 7 worker threads 10-26 16:20:39.388 I/Urho3D ( 2748): Added resource package /apk/CoreData.pak 10-26 16:20:39.395 I/Urho3D ( 2748): Set screen mode 1440x1880 windowed 10-26 16:20:39.395 I/Urho3D ( 2748): Initialized input 10-26 16:20:39.395 I/Urho3D ( 2748): Initialized user interface 10-26 16:20:39.450 I/Urho3D ( 2748): Initialized renderer 10-26 16:20:39.464 I/BD.Reporter( 2748): com.huawei.bd.IBDService$Stub$Proxy@9d1ea12 10-26 16:20:39.473 I/Urho3D ( 2748): Set audio mode 44100 Hz stereo interpolated 10-26 16:20:39.473 I/Urho3D ( 2748): Initialized engine 10-26 16:20:40.020 I/art ( 2748): Starting a blocking GC Explicit 10-26 16:20:40.032 I/art ( 2748): Explicit concurrent mark sweep GC freed 4759(351KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 2MB/4MB, paused 137us total 12.447ms 10-26 16:20:40.261 I/AudioTrack-JNI( 2748): audioTrack continuously zero data counter >= 10, send pause/stop state to pg, counter: 0 Loaded assembly: System.Runtime.Serialization.Primitives.dll [External] Loaded assembly: System.Runtime.Serialization.dll [External] Loaded assembly: Anonymously Hosted DynamicMethods Assembly [External] Loaded assembly: System.Diagnostics.Debug.dll [External] 10-26 16:20:50.120 W/Mono ( 2748): The request to load the assembly System.Xml.ReaderWriter v4.0.0.0 was remapped to v2.0.5.0 10-26 16:20:50.160 W/art ( 2748): Checksum mismatch for dex base.apk 10-26 16:20:50.160 W/art ( 2748): Could not merge previous profile data from file /data/misc/profiles/cur/0/UrhoFormsSample.Android/primary.prof 10-26 16:20:50.352 E/libEGL ( 2748): call to OpenGL ES API with no current context (logged once per thread) 10-26 16:20:50.364 E/Urho3D ( 2748): Failed to create vertex buffer [0:] [3] [Thu Oct 26 16:20:50 2017] ERROR: Failed to create vertex buffer [0:] [3] [Thu Oct 26 16:20:50 2017] ERROR: Failed to compile vertex shader Basic(DIFFMAP VERTEXCOLOR): Could not create shader object 10-26 16:20:50.398 E/Urho3D ( 2748): Failed to compile vertex shader Basic(DIFFMAP VERTEXCOLOR): 10-26 16:20:50.398 E/Urho3D ( 2748): Could not create shader object 10-26 16:20:50.400 E/Urho3D ( 2748): Failed to compile pixel shader Basic(ALPHAMAP VERTEXCOLOR): 10-26 16:20:50.400 E/Urho3D ( 2748): Could not create shader object [0:] [3] [Thu Oct 26 16:20:50 2017] ERROR: Failed to compile pixel shader Basic(ALPHAMAP VERTEXCOLOR): Could not create shader object 10-26 16:20:53.119 I/SDL ( 2748): handleResume() end 10-26 16:20:53.165 W/AudioTrack( 2748): releaseBuffer() track 0xc0378b00 disabled due to previous underrun, restarting 10-26 16:20:54.373 E/libEGL ( 2748): call to OpenGL ES API with no current context (logged once per thread) 10-26 16:20:54.378 E/Surface ( 2748): getSlotFromBufferLocked: unknown buffer: 0xb5c4df00 10-26 16:20:54.873 I/art ( 2748): Starting a blocking GC Explicit 10-26 16:20:54.886 I/art ( 2748): Explicit concurrent mark sweep GC freed 14249(794KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 2MB/4MB, paused 145us total 13.362ms 10-26 16:20:56.760 I/art ( 2748): Starting a blocking GC Explicit 10-26 16:20:56.772 I/art ( 2748): Explicit concurrent mark sweep GC freed 373(15KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 2MB/4MB, paused 148us total 12.172ms 10-26 16:20:58.776 W/UrhoSharp( 2748): RefCountedCache objects alive: 0 10-26 16:20:58.812 I/art ( 2748): Starting a blocking GC Explicit 10-26 16:20:58.841 I/art ( 2748): Explicit concurrent mark sweep GC freed 1921(160KB) AllocSpace objects, 1(20KB) LOS objects, 39% free, 2MB/4MB, paused 346us total 28.490ms 10-26 16:20:58.871 I/art ( 2748): Starting a blocking GC Explicit 10-26 16:20:58.892 I/art ( 2748): Explicit concurrent mark sweep GC freed 148(4KB) AllocSpace objects, 0(0B) LOS objects, 40% free, 2MB/4MB, paused 257us total 20.549ms 10-26 16:20:58.894 W/URHOSHARP( 2748): App exited: 0 InspectorDebugSession(5): HandleTargetEvent: UnhandledException InspectorDebugSession(5): Disposed 10-26 16:21:02.126 E/mono ( 2748): 10-26 16:21:02.126 E/mono ( 2748): Unhandled Exception: 10-26 16:21:02.126 E/mono ( 2748): System.InvalidCastException: Specified cast is not valid. 10-26 16:21:02.126 E/mono-rt ( 2748): [ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Specified cast is not valid.

EgorBo commented 6 years ago

Thanks for the repro project! I managed to reproduce it and now investigating

chenxx08 commented 6 years ago

@EgorBo How about the investigation. Any suggestion to solve the problem?

MichalPetryk commented 6 years ago

I have still problems with navigating back on Android (tested on 4.3 and 4.4.2). I've just updated Urhosharp to 1.7.3. Application crashes with message:

11-15 12:04:12.671 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x502
11-15 12:04:12.671 E/OpenGLRenderer(14326):   GL_INVALID_OPERATION
11-15 12:04:12.691 D/Mono    (14326): DllImport searching in: '__Internal' ('(null)').
11-15 12:04:12.691 D/Mono    (14326): Searching for 'java_interop_jnienv_call_static_long_method_a'.
11-15 12:04:12.691 D/Mono    (14326): Probing 'java_interop_jnienv_call_static_long_method_a'.
11-15 12:04:12.691 D/Mono    (14326): Found as 'java_interop_jnienv_call_static_long_method_a'.
11-15 12:04:12.731 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.731 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.741 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.741 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.751 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.751 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.771 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.771 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.786 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.786 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.801 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.801 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.821 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.821 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.836 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.836 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.856 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.856 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.871 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.871 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.891 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.891 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.906 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.906 E/OpenGLRenderer(14326):   GL_INVALID_VALUE
11-15 12:04:12.921 D/OpenGLRenderer(14326): GL error from OpenGLRenderer: 0x501
11-15 12:04:12.921 E/OpenGLRenderer(14326):   GL_INVALID_VALUE

Please note that if i set

android:hardwareAccelerated="false"
in AndroidManifest Urhosharp page exits with no error.

EgorBo commented 6 years ago

Should be already fixed in 1.8.x

nsmaster commented 6 years ago

Should be already fixed in 1.8.x

Hello, I have Urho 1.8.93 and Newtonsoft.Json 11.0.1 and app still crashes if comment all calls JsonConvert than it works without crash.