Hi Jon
Thanks for your response.
>http://docs.xamarin.com/guides/android/troubleshooting#15-unexpected-nullreferenceexceptions
I can't see any sign of the things mentioned in the
unexpected-nullreferenceexceptions section, below are the log cat entries for
three crashes (set to adb shell setprop debug.mono.trace E:all). The first
happens on the main thread pretty close to launch and the second two occur on a
background thread (at which point it is the only background thread and the
foreground activity is pretty much an empty layout with no interaction going
on). Also typically I don't think the second one fits my previous tolist
foreach pattern but does happened between two log message where seemingly
nothing can go wrong and also on first access to sqlite-net for that class (
calling its public TableQuery<T> Table<T> () where T : new()). One other
occasional pattern that I have noticed which may help is that whilst is is
usually around 1 in 8 it is not that uncommon (to often to be chance but far
from every time) for it to fail at exactly the same point on the next run after
a crash.
>>>>>>>>>>>>
02-20 09:31:37.809: I/ActivityThread(8132): Pub
NVG.AroundMe.mono.MonoRuntimeProvider.__mono_init__: mono.MonoRuntimeProvider
02-20 09:31:37.809: I/ApplicationPackageManager(8132): cscCountry is not German
: CPW
02-20 09:31:38.029: E/mono(8132): WARNING: The runtime version supported by
this application is unavailable.
02-20 09:31:38.029: E/mono(8132): Using default runtime: v2.0.50727
02-20 09:31:38.169: W/monodroid-gc(8132): GREF GC Threshold: 46800
02-20 09:31:38.809: D/BatteryService(160): update start
02-20 09:31:38.809: D/BatteryService(160): update start
02-20 09:31:38.809: D/BatteryService(160): update start
02-20 09:31:40.429: D/Android Helpers(8132): Set Exceptions handler on: 1
1073881512 1073881512
02-20 09:31:40.569: D/Application onCreate(8132): Starting on thread: 1 - 1
02-20 09:31:41.689: D/sqlite-c(8132): getting mapping
02-20 09:31:41.849: I/mono(8132): Stacktrace:
02-20 09:31:41.849: E/mono(8132): [0xafd4d460:] EXCEPTION handling:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:31:41.849: I/mono(8132): "<unnamed thread>" tid=0x0xafd4d460
this=0x0x48d58010 thread handle 0x403 state : not waiting owns ()
02-20 09:31:41.859: E/mono(8132): Unhandled Exception:
02-20 09:31:41.859: E/mono(8132): System.NullReferenceException: Object
reference not set to an instance of an object
02-20 09:31:41.869: I/mono(8132): [ERROR] FATAL UNHANDLED EXCEPTION:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:31:41.959: I/OrientationDebug(160): [pwm] in
updateOrientationListenerLp()
02-20 09:31:41.959: V/OrientationDebug(160): in updateOrientationListenerLp(),
Screen status=true, current orientation=5, SensorEnabled=true
02-20 09:31:41.959: I/OrientationDebug(160): [pwm] needSensorRunningLp(),
return true #4
02-20 09:31:41.959: I/ActivityManager(160): Process NVG.AroundMe (pid 8132) has
died.
02-20 09:31:41.979: I/Launcher(256): onResume(). mIsNewIntent : false
>>>>>>>>>>>>>>>>
02-20 09:35:36.739: D/sqlite-c(8414): exe 4
02-20 09:35:36.739: D/sqlite-c(8414): exe 5
02-20 09:35:36.739: D/sqlite-c(8414): exe 6
02-20 09:35:36.739: D/sqlite-c(8414): exe 3a
02-20 09:35:36.739: D/sqlite-c(8414): exe 3b
02-20 09:35:36.739: D/sqlite-c(8414): exe 4
02-20 09:35:36.739: D/sqlite-c(8414): exe 5
02-20 09:35:36.739: D/sqlite-c(8414): exe 6
02-20 09:35:36.739: D/sqlite-c(8414): exe 3a
02-20 09:35:36.739: D/sqlite-c(8414): exe 3b
02-20 09:35:36.739: D/sqlite-c(8414): exe 4
02-20 09:35:36.739: D/sqlite-c(8414): exe 5
02-20 09:35:36.739: D/sqlite-c(8414): exe 6
02-20 09:35:36.739: D/sqlite-c(8414): exe 3a
02-20 09:35:36.739: D/sqlite-c(8414): exe 3b
02-20 09:35:36.749: D/sqlite-c(8414): exe 4
02-20 09:35:36.749: D/sqlite-c(8414): exe 5
02-20 09:35:36.749: D/sqlite-c(8414): exe 6
02-20 09:35:36.749: D/sqlite-c(8414): exe 7
02-20 09:35:36.749: D/sqlite-c(8414): exe 8
02-20 09:35:36.749: D/Repository(8414): Getting Ids
02-20 09:35:36.749: I/mono(8414): Stacktrace:
02-20 09:35:36.759: E/mono(8414): [0x39d628:] EXCEPTION handling:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:35:36.759: I/mono(8414): "<unnamed thread>" tid=0x0x39d628
this=0x0x48d5b5b0 thread handle 0x579 state : not waiting owns ()
02-20 09:35:36.759: E/mono(8414): Unhandled Exception:
02-20 09:35:36.759: E/mono(8414): System.NullReferenceException: Object
reference not set to an instance of an object
02-20 09:35:36.759: I/mono(8414): [ERROR] FATAL UNHANDLED EXCEPTION:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:35:36.789: I/ActivityManager(160): Process NVG.AroundMe (pid 8414) has
died.
02-20 09:35:36.799: E/InputDispatcher(160): channel '408544c8
NVG.AroundMe/aroundme.Home (server)' ~ Consumer closed input channel or an
error occurred. events=0x8
02-20 09:35:36.799: E/InputDispatcher(160): channel '408544c8
NVG.AroundMe/aroundme.Home (server)' ~ Channel is unrecoverably broken and will
be disposed!
02-20 09:35:36.799: I/WindowManager(160): WIN DEATH: Window{408544c8
NVG.AroundMe/aroundme.Home paused=false}
02-20 09:35:36.809: I/OrientationDebug(160): [pwm] in
updateOrientationListenerLp()
02-20 09:35:36.809: V/OrientationDebug(160): in updateOrientationListenerLp(),
Screen status=true, current orientation=5, SensorEnabled=true
02-20 09:35:36.809: I/OrientationDebug(160): [pwm] needSensorRunningLp(),
return true #4
02-20 09:35:36.819: I/Launcher(256): onResume(). mIsNewIntent : false
02-20 09:35:36.829: E/Launcher(256): setWindowOpaque()
02-20 09:35:36.839: D/ProgramMonitor(2073): onReceive -no
02-20 09:35:36.839: D/ProgramMonitor(2073): appWidgetIds.length : 0
02-20 09:35:36.839: D/ProgramMonitor(2073): onReceive -
action:com.sec.android.app.controlpanel.RUNNING_PROGRAM_REQ
>>>>>>>>>>>>>>>>>
02-20 09:35:36.739: D/sqlite-c(8414): exe 4
02-20 09:35:36.739: D/sqlite-c(8414): exe 5
02-20 09:35:36.739: D/sqlite-c(8414): exe 6
02-20 09:35:36.739: D/sqlite-c(8414): exe 3a
02-20 09:35:36.739: D/sqlite-c(8414): exe 3b
02-20 09:35:36.749: D/sqlite-c(8414): exe 4
02-20 09:35:36.749: D/sqlite-c(8414): exe 5
02-20 09:35:36.749: D/sqlite-c(8414): exe 6
02-20 09:35:36.749: D/sqlite-c(8414): exe 7
02-20 09:35:36.749: D/sqlite-c(8414): exe 8
02-20 09:35:36.749: D/Repository(8414): Getting Ids
02-20 09:35:36.749: I/mono(8414): Stacktrace:
02-20 09:35:36.759: E/mono(8414): [0x39d628:] EXCEPTION handling:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:35:36.759: I/mono(8414): "<unnamed thread>" tid=0x0x39d628
this=0x0x48d5b5b0 thread handle 0x579 state : not waiting owns ()
02-20 09:35:36.759: E/mono(8414): Unhandled Exception:
02-20 09:35:36.759: E/mono(8414): System.NullReferenceException: Object
reference not set to an instance of an object
02-20 09:35:36.759: I/mono(8414): [ERROR] FATAL UNHANDLED EXCEPTION:
System.NullReferenceException: Object reference not set to an instance of an
object
02-20 09:35:36.789: I/ActivityManager(160): Process NVG.AroundMe (pid 8414) has
died.
02-20 09:35:36.799: E/InputDispatcher(160): channel '408544c8
NVG.AroundMe/aroundme.Home (server)' ~ Consumer closed input channel or an
error occurred. events=0x8
02-20 09:35:36.799: E/InputDispatcher(160): channel '408544c8
NVG.AroundMe/aroundme.Home (server)' ~ Channel is unrecoverably broken and will
be disposed!
02-20 09:35:36.799: I/WindowManager(160): WIN DEATH: Window{408544c8
NVG.AroundMe/aroundme.Home paused=false}
02-20 09:35:36.809: I/OrientationDebug(160): [pwm] in
updateOrientationListenerLp()
02-20 09:35:36.809: V/OrientationDebug(160): in updateOrientationListenerLp(),
Screen status=true, current orientation=5, SensorEnabled=true
02-20 09:35:36.809: I/OrientationDebug(160): [pwm] needSensorRunningLp(),
return true #4
02-20 09:35:36.819: I/Launcher(256): onResume(). mIsNewIntent : false
02-20 09:35:36.829: E/Launcher(256): setWindowOpaque()
02-20 09:35:36.839: D/ProgramMonitor(2073): onReceive -no
02-20 09:35:36.839: D/ProgramMonitor(2073): appWidgetIds.length : 0
02-20 09:35:36.839: D/ProgramMonitor(2073): onReceive -
action:com.sec.android.app.controlpanel.RUNNING_PROGRAM_REQ
>>>>>>>>>>>>>>>
>If you're hitting a mono limitation, mono will normally write to stderr before
>aborting the process. Unfortunately, Android prior to 4.1 Jelly Bean ignores
>stderr, so you might not be able to see those messages, but if you're using
>4.1 Jelly Bean or later you should see messages written to log cat.
I'm afraid I am running on pre 4.1 and don't currently have access to a device
the does run > 4.1
Thanks
Keith
--
View this message in context:
http://mono-for-android.1047100.n5.nabble.com/Possible-JIT-issue-relating-to-generic-list-tp5712901p5712906.html
Sent from the Mono for Android mailing list archive at Nabble.com.
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid