- Home /
Tracking down a SIGABRT on startup
I have a small puzzle app that I'm trying to deploy on the iPad. The app runs fine within the Unity IDE with zero errors and zero warnings. Once I deploy it it crashes on startup with a SIGABRT.
I've started going through an eliminating code that runs at startup just to see if I could start to narrow it down but so far I'm coming up empty.
Does anyone have a strategy for dealing with this type of problem?
GDB log:
[Session started at 2010-09-07 15:38:24 -0400.]
GNU gdb 6.3.50-20050815 (Apple version gdb-1470) (Thu May 27 05:54:06 UTC 2010)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys000
Loading program into debugger
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-21706-22
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running
[Switching to thread 12035]
[Switching to thread 12035]
sharedlibrary apply-load-rules all
continue
2010-09-07 15:39:26.011 hextian[2722:207] -> registered mono modules -> applicationDidFinishLaunching()
Mono path[0] = '/var/mobile/Applications/661248B3-75FA-46FC-84C8-8F5B58B738CE/hextian.app/Data/Managed'
Creating OpenGLES1.x graphics device
Non platform assembly: /private/var/mobile/Applications/661248B3-75FA-46FC-84C8-8F5B58B738CE/hextian.app/Data/Managed/UnityEngine.dll (this message is harmless)
Non platform assembly: /private/var/mobile/Applications/661248B3-75FA-46FC-84C8-8F5B58B738CE/hextian.app/Data/Managed/Assembly-CSharp-firstpass.dll (this message is harmless)
Non platform assembly: /private/var/mobile/Applications/661248B3-75FA-46FC-84C8-8F5B58B738CE/hextian.app/Data/Managed/Assembly-CSharp.dll (this message is harmless)
You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game
Program received signal: SIGABRT.
mi_cmd_stack_list_frames: Not enough frames in stack.
mi_cmd_stack_list_frames: Not enough frames in stack.
Answer by JDonavan 1 · Sep 08, 2010 at 02:31 AM
In the end I ended up recreating the initial scene one item at a time and testing. Oddly enough this one had no issues. The only difference is that I didn't move over an (unneeded) audio source attached to the main camera.
Edit: Leaving the question open for a bit to see if someone has a solution beyond what I ended up doing.
Answer by Peter G · Sep 07, 2010 at 10:44 PM
There are a lot of things that cause errors, here are a bunch to look for.
Are using any dynamic typing in any scripts on your project? Unity puts all of them in the build.
Did you make any null references or divisions by 0? Such as transform.LookAt(nullObject.position) and it isn't there.
Try changing the stripping level. You might have stripped out something that your app needs.
Run, slow but exceptions to receive a more detailed stack trace.
Here is the only real possibility visible from your stack trace:
"You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game"
If that is the case, then you need to know that it is against the EULA and you can be punished with revocation of you license and possible legal trouble.
I'm pretty sure that always shows up. Either that or something is currently broken in Unity 3. Anyone with the older Unity iPhone able to check this?
I'm not messing with the splash screen at all and Unity is giving me this bullshit
Answer by karn9872 · Oct 02, 2010 at 04:35 AM
After 3 days of upgrading a project from Unity 2.6 to 3.0 and running into every problem seemingly possible, I almost ran aground with this same issue. The project finally ran properly on an iPod Touch 3rd Gen device, but as soon as I changed the "Player Settings"->"Target Device" to "iPhone + iPad" it died with this same error.
The "iPhone Only" build would not write "You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game", but the "iPhone + iPad" build would display this message.
Your solution gave me a clue to try and create a test scene and place it before my previous splash scene. I moved it to the top and built again with no SIGABRT errors! The "remove the Unity splash" message also disappeared. From new test scene, I just loaded my normal starting splash scene and everything worked properly again.
I would say that this is a bug in Unity 3.0 when converting old scenes. The strange thing is it only happens with the iPad setting.
One last thing, even when run in "iPhone Only" mode, my program would not display my splash scene like it used to (in Unity 2.6). Now that I have a dummy test scene at the beginning, my splash scene now displays properly again.
Thanks for your post and solution.
Answer by Toxic Blob · Sep 07, 2010 at 06:16 PM
I tweaked my Player settings. I believe it was switching the Target Platform to arm6 (OpenGL ES1.1) rather than Universal arm6+arm7
Answer by Anthony 3 · Oct 16, 2010 at 08:25 PM
I get this bug, it's not from setting your own splash screen it's due to a bug in unity3 that still needs to be addressed