This is a bug in the fix for 4998314. By repeatedly calling
handle_exception_C_helper if an async exception gets installed we
effectively unwind the stack at each pass. We can then see "exception pc's"
that are not compiled code (say we started out in an i2c adapter). This
either blows an assert:
assert (cb->is_nmethod(), "");
or causes us to segfault when we call nmethod functions on a non nmethod.
Looks to me that the proper fix to 4998314 is to defer async exceptions
until we are not in the middle of processing an exception.