Currently, we only return REGISTERS_UNAVAILABLE_FATAL if we receive KERN_INVALID_ARGUMENT from thread_status. In reality, there are other possible return values (MACH_SEND_INVALID_DEST for example) that make it dangerous to read memory. This can be demonstrated by running create_thread_leak.cpp in standalone mode where it will appear to hang due to a EXC_BAD_ACCESS while scanning the stack.
This change reverses the current logic to treat MIG_ARRAY_TOO_LARGE as non-fatal, and all other errors as fatal.