If you supply +ednsopt=nn[:xx] dighost.c accumulates the supplied options in a global array, but doesn't dispose of old ones, eventually triggering a fatal() error when the number reaches EDNSOPT_OPTIONS (100). In batch mode this terminates the program. In dig for iOS the fatal() call doesn't happen, but the array fills up and a crash would occur. The array of options is ultimately disposed of in destroy_libs(), but it's unclear why the entries aren't cleaned up and the array reinitialised for each query.