Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App dies with "Sending signal." but no exception or other info

Tags:

android

I'm working on an app that is recording data via Bluetooth, but it intermittently crashes after hours of collecting data (making it hard to track down the bug).

The logcat output isn't very helpful:

http://i.imgur.com/EalnX.png

There are no exceptions thrown and no clues for what caused the process to be terminated.

How can I figure out what went wrong? Is there an exception being thrown that isn't being shown by logcat? How can I track this bug down?

like image 272
Gus Avatar asked Jul 10 '12 19:07

Gus


2 Answers

Signal 9 is SIGKILL, which will terminate a process immediately (no handlers inside the process will run). From the log line, the process is killing itself, so its not an external agent that is issuing the SIGKILL.

My guess (and its really a guess) is that the memory management code running inside your process (as part of the infrastructure, not code that you wrote) is deciding that you've exhausted some resource and the only recourse is to die. I would expect there to be more messages before this point is reached in the log, so it may be worth browsing the log history to see if there are useful warnings from the process before this point.

The line immediately before this is a GC log, which implies that some sort of memory resource is running low. But it looks like the heaps are not full, so failing allocations seems unlikely. You can still get allocation failures if the object being allocated was too large to fit on the heap, or fragmentation prevented it from being allocated. I'd expect to see more relevant log messages in this case, though.

I think capturing more of the log (perhaps filtering it by your app's PID if necessary) will help you make progress.

like image 171
P.T. Avatar answered Nov 10 '22 19:11

P.T.


In my case there was no warnings or any clues in the log.

Eventually I found that my problem was that one of the activities I was going into
(lets say Activity X) was registering to a broadcast receiver but never unregistered from it.

Therefor by closing the activity (Activity X) and coming back to it caused registering Again to the same broadcast receiver - which caused the mess!

Simply adding unregisterReceiver(mybroadcast); (in Activity X) solved it.
(I added mine to onDestroy. make sure you unregister in the right location).

And if you are super desperate I recommend seeing this slide share which explains Android crash debugging your errors.

like image 45
Mercury Avatar answered Nov 10 '22 20:11

Mercury