"Object not set to an instance of an object" error when trying to create a Stack

JamesLaveryJamesLavery GBBeta, University ✭✭✭✭✭
edited January 21 in General

Our app has been working fine, and now I'm suddenly getting the error below when executing the code

private Stack<int> busyStack = new Stack<int>();

It's as if System.Collections.Generic has not been loaded properly.

I'm getting the error here and also in various other places - where we are implicitly creating Lists.

The random nature of this indicates it's a timing issue - that System.Collections.Generic has not been loaded properly when our code is running.

This is on the iOS project in a Xamarin.Forms app, using MvvmCross.

Any thoughts?

Full version information at the bottom of this post.

Error and stack trace:

Object reference not set to an instance of an object (System.NullReferenceException)
at System.Collections.Generic.Stack`1[T]..ctor () <0x1a1d124 + 0x0002c> in <2b196ea8d6b243b28c86cc5485ebc43c#91556454b09bd4bc2e66e5853b526f15>:0
at MyProject.Mobile.Common.BusyManager.BusyManager..ctor () [0x00014] in /Users/jameslavery/Documents/GitHub/MyProject.Mobile/MyProject.Mobile.Common/BusyManager/BusyManager.cs:16
at MyProject.Mobile.iOS.Setup.CreateFormsApplication () [0x00043] in /Users/jameslavery/Documents/GitHub/MyProject.Mobile/MyProject.Mobile.iOS/Setup.cs:28
at MvvmCross.Forms.Platforms.Ios.Core.MvxFormsIosSetup.get_FormsApplication () [0x00014] in C:\projects\mvvmcross\MvvmCross.Forms\Platforms\Ios\Core\MvxFormsIosSetup.cs:59
at MvvmCross.Forms.Platforms.Ios.Core.MvxFormsIosSetup.CreateViewPresenter () [0x00000] in C:\projects\mvvmcross\MvvmCross.Forms\Platforms\Ios\Core\MvxFormsIosSetup.cs:80
at MvvmCross.Platforms.Ios.Core.MvxIosSetup.get_Presenter () [0x00000] in C:\projects\mvvmcross\MvvmCross\Platforms\Ios\Core\MvxIosSetup.cs:97
at MvvmCross.Platforms.Ios.Core.MvxIosSetup.RegisterPresenter () [0x00000] in C:\projects\mvvmcross\MvvmCross\Platforms\Ios\Core\MvxIosSetup.cs:109
at MvvmCross.Platforms.Ios.Core.MvxIosSetup.InitializePlatformServices () [0x00006] in C:\projects\mvvmcross\MvvmCross\Platforms\Ios\Core\MvxIosSetup.cs:73
at MvvmCross.Core.MvxSetup.InitializePrimary () [0x00052] in C:\projects\mvvmcross\MvvmCross\Core\MvxSetup.cs:74
at MvvmCross.Core.MvxSetupSingleton.StartSetupInitialization () [0x0000a] in C:\projects\mvvmcross\MvvmCross\Core\MvxSetupSingleton.cs:181
at MvvmCross.Core.MvxSetupSingleton.EnsureInitialized () [0x00017] in C:\projects\mvvmcross\MvvmCross\Core\MvxSetupSingleton.cs:102
at MvvmCross.Forms.Platforms.Ios.Core.MvxFormsApplicationDelegate.FinishedLaunching (UIKit.UIApplication uiApplication, Foundation.NSDictionary launchOptions) [0x00029] in C:\projects\mvvmcross\MvvmCross.Forms\Platforms\Ios\Core\MvxFormsApplicationDelegate.cs:29
at MyProject.Mobile.iOS.AppDelegate.FinishedLaunching (UIKit.UIApplication app, Foundation.NSDictionary options) [0x00030] in /Users/jameslavery/Documents/GitHub/MyProject.Mobile/MyProject.Mobile.iOS/AppDelegate.cs:44
at (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.12/src/Xamarin.iOS/UIKit/UIApplication.cs:79
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0002c] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.12/src/Xamarin.iOS/UIKit/UIApplication.cs:63
at MyProject.Mobile.iOS.Application.Main (System.String[] args) [0x00001] in /Users/jameslavery/Documents/GitHub/MyProject.Mobile/MyProject.Mobile.iOS/Main.cs:17

Version Information
=== Visual Studio Enterprise 2017 for Mac ===

Version 7.7.3 (build 43)
Installation UUID: 650b4c91-c7f5-4ee5-ad70-6f178f314906
GTK+ 2.24.23 (Raleigh theme)
Xamarin.Mac 4.4.1.178 (master / eeaeb7e6)

Package version: 516000221

=== Mono Framework MDK ===

Runtime:
Mono 5.16.0.221 (2018-06/b63e5378e38) (64-bit)
Package version: 516000221

=== NuGet ===

Version: 4.8.0.5385

=== .NET Core ===

Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
2.1.5
2.1.2
2.1.1
2.0.5
SDK: /usr/local/share/dotnet/sdk/2.1.403/Sdks
SDK Versions:
2.1.403
2.1.302
2.1.301
2.1.4
MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/5.16.0/lib/mono/msbuild/15.0/bin/Sdks

=== Xamarin.Profiler ===

Version: 1.6.4
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

=== Updater ===

Version: 11

=== Apple Developer Tools ===

Xcode 10.1 (14460.46)
Build 10B61

=== Xamarin.Mac ===

Version: 5.2.1.12 (Visual Studio Enterprise)
Hash: 65ec520f
Branch:
Build date: 2018-12-05 12:06:09-0500

=== Xamarin.iOS ===

Version: 12.2.1.12 (Visual Studio Enterprise)
Hash: 65ec520f
Branch: d15-9
Build date: 2018-12-05 12:06:09-0500

=== Xamarin.Android ===

Version: 9.1.4.2 (Visual Studio Enterprise)
Android SDK: /Users/jameslavery/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
2.3 (API level 10)
4.0.3 (API level 15)
4.1 (API level 16)
4.3 (API level 18)
4.4 (API level 19)
5.0 (API level 21)
5.1 (API level 22)
6.0 (API level 23)
7.0 (API level 24)
7.1 (API level 25)
8.0 (API level 26)
8.1 (API level 27)

SDK Tools Version: 26.1.1
SDK Platform Tools Version: 28.0.0
SDK Build Tools Version: 26.0.2

=== Microsoft Mobile OpenJDK ===

Java SDK: /Users/jameslavery/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.9
openjdk version "1.8.0-9"
OpenJDK Runtime Environment (build 1.8.0-9-microsoft-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)

Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

=== Android Device Manager ===

Version: 7.7.1.0
Hash: 06ceaea1

=== Xamarin Inspector ===

Version: 1.4.3
Hash: db27525
Branch: 1.4-release
Build date: Mon, 09 Jul 2018 21:20:18 GMT
Client compatibility: 1

=== Build Information ===

Release ID: 707030043
Git revision: 5896ab2acba037c62271742e9e56b900c96c1d8f
Build date: 2019-01-15 21:18:33+00
Build branch: release-7.7
Xamarin extensions: e5b43ba963b7b407aa5b9f2c59018c32a709e6ab

=== Operating System ===

Mac OS X 10.13.6
Darwin 17.7.0 Darwin Kernel Version 17.7.0
Fri Nov 2 20:43:16 PDT 2018
root:xnu-4570.71.17~1/RELEASE_X86_64 x86_64

=== Enabled user installed extensions ===

LiveXAML 1.3.31
MFractor 3.7.2
MvvmCross Template pack 2.0.1
NuGet Package Management Extensions 0.14
Template Creator 0.4
Redth's Addins 1.0.9
Internet of Things (IoT) development (Preview) 7.5

Answers

  • JohnHardmanJohnHardman GBUniversity mod

    @JamesLavery

    Nothing more than a guess, I'm afraid. If you fire up the NuGet package manager, is it saying that there are any packages to Consolidate?

    If nothing to consolidate, I'd be tempted to clear the NuGet cache and add the NuGet packages back in again (tedious as that is). Obviously, delete bin and obj folders too.

    If that doesn't sort it, then a close look at the output from the build, to see if there are any warnings about conflicts.

    Do any of the packages that you use require you to consistently use concurrent collections throughout your code? It seems unlikely, but working through the possibilities, no matter how unlikely...

  • JamesLaveryJamesLavery GBBeta, University ✭✭✭✭✭
    edited January 21
    Thanks John for the ideas.

    I've found that I only get the problem on a particular iOS device (in that it works on other devices). So need to compare iOS versions on them. Still odd that it DID work before on the problem device.

    Regarding NuGet packages. I'm not sure it's a rogue NuGet, but something to do with System.Collections.Generic. I know the exact line where the exception occurs. It's when trying to create a new Stack or List.

    But I'll check for NuGets to consolidate.
Sign In or Register to comment.