52
votes

Im new to android development my app gets constantly killed when switching 11 times from activity and than it only says

Fatal signal 6 (SIGABRT), code -6 in tid 9485 (Thread-141585)

in my logcat.

What does this mean?

2
This will occur if there is a CPU intensive operation happening in UI thread. Can you share Activity code to check if there is anything like thatSreeraj
I'm not entirely sure, but I think it gives that error when your Android device thinks the UI (is about to) hang. So you most likely do a bit too much on the UI-thread, as correctly pointed out by @Sreeraj. Also, does this only occur while debugging? If so, try turning on the ANR (App Not Responding) dialog so it will Wait a bit for the debugger to start. The main problem is memory on the UI Thread, what causes it however is just guessing without some more information like some of your code-snippets and such.Kevin Cruijssen
Im using a BluetoothLeService (Service) class wich i bind and unbind on every activity when i switch for like 11 times it crashes my app with the Signal 6 error also turned ANR already on it just crash my appStefan van de Laarschot

2 Answers

31
votes

Without more details (like seeing some code).

1) Do not block the UI thread, this can cause a SIGABRT as the OS will kill a non-responsive app.

bind and unbind on every activity when i switch for like 11 times it crashes my app

2) Make sure that in your OnDestroy within your Activity you are cleaning up after yourself. i.e. Removing all your Listeners/Events and then calling the Base.OnDestory.

3) An external (i.e. BluetoothLeService) service calling back into your app with listeners that now null/nil will cause hangs and thus a SIGABRT, see #2

12
votes

According to Wikipedia:

The SIGABRT signal is sent to a process to tell it to abort, i.e. to terminate. The signal is usually initiated by the process itself when it calls abort function of the C Standard Library, but it can be sent to the process from outside like any other signal

It usually indicates some kind of error in your code or one of the libraries that you call.

See also: When does a process get SIGABRT (signal 6)?