Fix aarch64 handling of error code.

In the is_signal_frame call, there is an error return path that can
return a non-zero value. Unfortunately, only zero is considered an
error, so this causes the frame to be handled incorrectly.

Once this was fixed, I also modified the code so that if the treating
the unwind as in a signal frame fails, we can fall back and try a couple
of different paths.

It turns out this is_signal_frame check was broken on arm too.

Bug: 18100846

(cherry picked from commit 23c6aa9a54d0a220fb2557197c555b2684c93876)

Change-Id: I0ec1fac82ee76dec447fdccdae4207dd1b8ccf6d
3 files changed