Bug 44 - Startup crash in simulator
Summary: Startup crash in simulator
Status: RESOLVED FIXED
Alias: None
Product: iOS
Classification: Xamarin
Component: XI runtime ()
Version: 4.x
Hardware: Macintosh Mac OS
: --- blocker
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2011-07-22 11:01 UTC by Andrew Rollings
Modified: 2011-08-10 14:51 UTC (History)
5 users (show)

Tags: lion
Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED FIXED

Description Andrew Rollings 2011-07-22 11:01:40 UTC
I'm getting this stacktrace trying to run Creatures & Castles in the debugger.
I've upgraded to Lion and downloaded the latest xcode from the app store (as of today).

This is using the test build of monotouch available here: http://xamarin.com/priority/monotouch/monotouch-4.0.4.1.dmg



Error connecting stdout and stderr (127.0.0.1:10001)
Stacktrace:

  at (wrapper managed-to-native) System.Reflection.Assembly.GetTypes (System.Reflection.Assembly,bool) <IL 0x0002e, 0xffffffff>
  at System.Reflection.Assembly.GetTypes () [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/Assembly.cs:348
  at MonoTouch.ObjCRuntime.Runtime.RegisterAssembly (System.Reflection.Assembly) [0x0004b] in /Developer/MonoTouch/Source/monotouch/monotouch/ObjCRuntime/Runtime.cs:83
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

Native stacktrace:

	0   CreaturesAndCastles                 0x000d0de8 mono_handle_native_sigsegv + 343
	1   CreaturesAndCastles                 0x0000f74c mono_sigsegv_signal_handler + 322
	2   libsystem_c.dylib                   0x9c03a59b _sigtramp + 43
	3   ???                                 0xffffffff 0x0 + 4294967295
	4   ???                                 0x0771cd86 0x0 + 124898694
	5   ???                                 0x0771cd49 0x0 + 124898633
	6   ???                                 0x07711f35 0x0 + 124854069
	7   ???                                 0x077120e5 0x0 + 124854501
	8   CreaturesAndCastles                 0x0000f507 mono_jit_runtime_invoke + 1332
	9   CreaturesAndCastles                 0x001ed259 mono_runtime_invoke + 137
	10  CreaturesAndCastles                 0x0029abc9 monotouch_register + 90
	11  CreaturesAndCastles                 0x002a1529 main + 3784
	12  CreaturesAndCastles                 0x00002819 _start + 208
	13  CreaturesAndCastles                 0x00002748 start + 40

Debug info from gdb:

dyld: could not load inserted library: /Users/andrewrollings/Library/Application Support/iPhone Simulator/4.3.2/Applications/3F4FD1E8-A17F-4D1F-B59D-856D3AB4E02D/CreaturesAndCastles.app/monotouch-fixes.dylib


=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================
Comment 1 Rolf Bjarne Kvinge [MSFT] 2011-07-26 14:22:43 UTC
I just tried the C&C code we have and I wasn't able to reproduce this crash (tried on both an iPad device and iPhone simulator) - on Lion.

OTOH I have seen this crash myself with other code, but I can't remember exactly what the issue was. Can you try changing the linking options for the app to see if that changes anything?
Comment 2 Andrew Rollings 2011-08-04 13:59:54 UTC
(In reply to comment #1)
> I just tried the C&C code we have and I wasn't able to reproduce this crash
> (tried on both an iPad device and iPhone simulator) - on Lion.
> 
> OTOH I have seen this crash myself with other code, but I can't remember
> exactly what the issue was. Can you try changing the linking options for the
> app to see if that changes anything?


I've tried tweaking linking settings to no avail. What concerns me is that it doesn't immediately crash out on your system when you try and run it in the simulator. That implies that there is something amiss in my installation of monotouch.
Comment 3 Rolf Bjarne Kvinge [MSFT] 2011-08-08 11:49:38 UTC
Which MT version are you using?

I can reproduce a crash in level 8 both on the simulator and device, but it's a different stack trace and it's definitively unrelated.
Comment 4 Sebastien Pouliot 2011-08-09 18:13:54 UTC
The Apple simulator (and that's not Lion-specific) has the weird feature to never delete any file. So new assemblies will get added, others will be updated while the rest will become stale.

I added a workaround in the Xamarin's builds of MonoTouch but it cannot cover every cases - i.e. a stale assembly can still cause a crash.

However if you reset your simulator (from the menu) then every files (and every apps) will be deleted from the simulator. The next time you build your application it will be deployed into a clean/empty directory and should work as expected.
Comment 5 Andrew Rollings 2011-08-09 19:47:50 UTC
I tried that to no avail. I noticed in the stack trace that the debugger is failing to load a library:


dyld: could not load inserted library:
/Users/andrewrollings/Library/Application Support/iPhone
Simulator/4.3.2/Applications/3F4FD1E8-A17F-4D1F-B59D-856D3AB4E02D/CreaturesAndCastles.app/monotouch-fixes.dylib


Any ideas?
Comment 6 Sebastien Pouliot 2011-08-09 20:53:33 UTC
The stack trace shows it's trying to load something it can't load properly. This is exactly what happens in the simulator issue - but it could happen in other cases too. But it's really strange if this only happens in the simulator...

Could you paste the directory content of /Users/andrewrollings/Library/Application Support/iPhone
Simulator/4.3.2/Applications/3F4FD1E8-A17F-4D1F-B59D-856D3AB4E02D/CreaturesAndCastles.app/ ? filename, sizes and timestamps

As for monotouch-fixes.dylib this warning is normal (and sadly confusing since people only notice it when their application crash) and unrelated to your issue.
Comment 7 Andrew Rollings 2011-08-09 21:16:23 UTC
-rwxr-xr-x   1 andrewrollings  staff  4364248 Aug  4 16:59 CreaturesAndCastles
lrwxr-xr-x   1 andrewrollings  staff      140 Aug  9 13:09 CreaturesAndCastles.exe -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/CreaturesAndCastles/bin/iPhoneSimulator/Debug/CreaturesAndCastles.exe
lrwxr-xr-x   1 andrewrollings  staff      144 Aug  9 13:09 CreaturesAndCastles.exe.mdb -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/CreaturesAndCastles/bin/iPhoneSimulator/Debug/CreaturesAndCastles.exe.mdb
-rw-r--r--   1 andrewrollings  staff     5089 Aug  3 15:32 Default-Landscape.png
-rw-r--r--   1 andrewrollings  staff    71380 Aug  3 15:32 Default.png
-rw-r--r--   1 andrewrollings  staff   170091 Aug  3 15:32 Default@2x.png
lrwxr-xr-x   1 andrewrollings  staff      127 Aug  9 13:09 HiiveGameLib.dll -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/Hiive.GameLib/bin/iPhoneSimulator/Debug/HiiveGameLib.dll
lrwxr-xr-x   1 andrewrollings  staff      131 Aug  9 13:09 HiiveGameLib.dll.mdb -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/Hiive.GameLib/bin/iPhoneSimulator/Debug/HiiveGameLib.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff      125 Aug  9 13:09 HiiveGameUI.dll -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/Hiive.GameUI/bin/iPhoneSimulator/Debug/HiiveGameUI.dll
lrwxr-xr-x   1 andrewrollings  staff      129 Aug  9 13:09 HiiveGameUI.dll.mdb -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/Hiive.GameUI/bin/iPhoneSimulator/Debug/HiiveGameUI.dll.mdb
-rw-r--r--   1 andrewrollings  staff    12450 Aug  4 16:59 Icon-72.png
-rw-r--r--   1 andrewrollings  staff     8098 Aug  4 16:59 Icon-Small-50.png
-rw-r--r--   1 andrewrollings  staff     4838 Aug  4 16:59 Icon-Small.png
-rw-r--r--   1 andrewrollings  staff     9713 Aug  4 16:59 Icon-Small@2x.png
-rw-r--r--   1 andrewrollings  staff     9440 Aug  4 16:59 Icon.png
-rw-r--r--   1 andrewrollings  staff    24037 Aug  4 16:59 Icon@2x.png
-rw-r--r--   1 andrewrollings  staff     2268 Aug  4 16:59 Info.plist
-rw-r--r--   1 andrewrollings  staff     1821 Aug  3 15:32 MainWindow.nib
drwxr-xr-x   6 andrewrollings  staff      204 May 26 10:31 Media
lrwxr-xr-x   1 andrewrollings  staff       55 Aug  9 13:09 Mono.Security.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/Mono.Security.dll
lrwxr-xr-x   1 andrewrollings  staff       59 Aug  9 13:09 Mono.Security.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/Mono.Security.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff      114 Aug  4 12:49 MyXNA.dll -> /Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/MyXNA/bin/iPhoneSimulator/Release/MyXNA.dll
lrwxr-xr-x   1 andrewrollings  staff       48 Aug  9 13:09 OpenTK.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/OpenTK.dll
lrwxr-xr-x   1 andrewrollings  staff       55 Aug  9 13:09 OpenTK.dll.config -> /Developer/MonoTouch/usr/lib/mono/2.1/OpenTK.dll.config
lrwxr-xr-x   1 andrewrollings  staff       52 Aug  9 13:09 OpenTK.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/OpenTK.dll.mdb
drwxr-xr-x   3 andrewrollings  staff      102 Aug  4 16:59 Settings.bundle
lrwxr-xr-x   1 andrewrollings  staff       53 Aug  9 13:09 System.Core.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll
lrwxr-xr-x   1 andrewrollings  staff       57 Aug  9 13:09 System.Core.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff       61 Aug  9 13:09 System.Web.Services.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Web.Services.dll
lrwxr-xr-x   1 andrewrollings  staff       65 Aug  9 13:09 System.Web.Services.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Web.Services.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff       52 Aug  9 13:09 System.Xml.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll
lrwxr-xr-x   1 andrewrollings  staff       56 Aug  9 13:09 System.Xml.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff       48 Aug  9 13:09 System.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/System.dll
lrwxr-xr-x   1 andrewrollings  staff       52 Aug  9 13:09 System.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/System.dll.mdb
-rw-r--r--   1 andrewrollings  staff    24037 Aug  3 15:32 icon_114.png
-rw-r--r--   1 andrewrollings  staff     4838 Aug  3 15:32 icon_29.png
-rw-r--r--   1 andrewrollings  staff     8098 Aug  3 15:32 icon_50.png
-rw-r--r--   1 andrewrollings  staff     9440 Aug  3 15:32 icon_57.png
-rw-r--r--   1 andrewrollings  staff     9713 Aug  3 15:32 icon_58.png
-rw-r--r--   1 andrewrollings  staff    12450 Aug  3 15:32 icon_72.png
-rwxr-xr-x   1 andrewrollings  staff     8692 Aug  4 16:59 monotouch-fixes.dylib
lrwxr-xr-x   1 andrewrollings  staff       51 Aug  9 13:09 monotouch.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll
lrwxr-xr-x   1 andrewrollings  staff       55 Aug  9 13:09 monotouch.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll.mdb
lrwxr-xr-x   1 andrewrollings  staff       50 Aug  9 13:09 mscorlib.dll -> /Developer/MonoTouch/usr/lib/mono/2.1/mscorlib.dll
lrwxr-xr-x   1 andrewrollings  staff       54 Aug  9 13:09 mscorlib.dll.mdb -> /Developer/MonoTouch/usr/lib/mono/2.1/mscorlib.dll.mdb
Comment 8 Sebastien Pouliot 2011-08-09 21:58:49 UTC
Are you sure you did the "Reset and Content and Settings..." on your iOS Simulator ? 

The 'guid'-based directory (from comment #6) should not exists anymore - it should have been destroyed*. Another one (with a new guid) should exists with all files should have identical timestamps.

* at least that's what happens on Snow Leopard (I'll ask someone to confirm the behavior on Lion).

In the above list you have one assembly, MyXNA.dll, which is older by 5 days than the rest of your assemblies.

lrwxr-xr-x   1 andrewrollings  staff      114 Aug  4 12:49 MyXNA.dll ->
/Users/andrewrollings/Documents/monotouch-projects/CreaturesAndCastles/MyXNA/bin/iPhoneSimulator/Release/MyXNA.dll

Sadly we do not (presently) log enough information so I can't be sure this it the 'bad' assembly. If reset-ing again your simulator does not work could you zip up that directory and attach it ?
Comment 9 Andrew Rollings 2011-08-09 22:45:35 UTC
I manually removed the simulator app directory entirely and rebuilt and it works.
Doing a complete clean/rebuild didn't seem to copy the built stuff into the simulator directory. 

Surely this should have been overwritten? No assemblies have been removed from the project.
Comment 10 Sebastien Pouliot 2011-08-10 08:32:54 UTC
From your last comment it looks like you did "Clean" and "Rebuild" inside MonoDevelop - which would explain why things did not get re-created like I expected.

Remember that this is a *simulator* bug, not a MonoTouch or MonoDevelop bug [1]. To workaround that issue you must do a "Reset and Content and Settings..." from inside the iOS Simulator application (located in its Apple menu).

What happens is that MD builds the .app (and it will be cleaned properly) and then tells the iOS simulator, please execute /mypath/bin/iPhoneSimulator/Release/myapp.app

Next the simulator *copies* from /mypath/bin/iPhoneSimulator/Debug/myapp.app into /Users/user/Library/Application Support/iPhone
Simulator/4.3.2/Applications/some-guid-decided-by-sim/myapp.app/ and then execute the application from this copied directory.

This is where the *simulator* is buggy since it does not remove files that does not exists anymore (inside the .app that MD generated). So old, stale assemblies could exists in the simulator directory (even if they did not exists inside MD original .app directory). A crash, like yours, occur when the application tries to load such a stale assembly.


[1] we have some (and will get more) workarounds in MonoTouch (and likely MonoDevelop) but the real issue is not there
Comment 11 Andrew Rollings 2011-08-10 09:49:13 UTC
Additional info: I didn't mention it in the previous comment, but I did actually perform a reset of the simulator too... Maybe the simulator didn't reset correctly. I did install the new version of xcode in between the reset and the testing, so it's possible something esoteric got screwed up.
Comment 12 Sebastien Pouliot 2011-08-10 10:13:40 UTC
It's possible that older/newer simulators behave differently (wrt reset). I was using xcode 3.x when I first found out about it and I know it still occurs with xcode 4. Also I presume it's more related to xcode than the OS since the former is providing the simulator - but there could be some OS specific stuff too.

I'm working on a better workaround for next release of MonoTouch (after 4.1). Hopefully this will _always_ hide the simulator bug from developers, without requiring a reset.
Comment 13 Sebastien Pouliot 2011-08-10 14:51:13 UTC
Fixed, only the known to be valid assemblies will be loaded in the simulator.
This will be part of the release after MonoTouch 4.1.