'Given a frame, stacktrace info and frame index this returns the
interpolated instruction address we then use for symbolication later.'

def find_best_instruction(self, processable_frame):

    if (self.cpu_name is None):
        return parse_addr(processable_frame['instruction_addr'])
    meta = None
    if (processable_frame.idx == 0):
        signal = None
        exc = self.data.get('sentry.interfaces.Exception')
        if (exc is not None):
            mechanism = exc['values'][0].get('mechanism')
            if (mechanism and ('posix_signal' in mechanism) and ('signal' in mechanism['posix_signal'])):
                signal = mechanism['posix_signal']['signal']
        meta = {'frame_number': 0, 'registers': processable_frame.stacktrace_info.stacktrace.get('registers'), 'signal': signal}
    return find_best_instruction(processable_frame['instruction_addr'], self.cpu_name, meta=meta)
