FYI, Here's a much-reduced test case for the short-needle case:
const char *needle = ".d."; const char *haystack = "..d."; const char* p = strstr (haystack, needle); ASSERT (p && p - haystack == 1); Interestingly, it doesn't trigger a failure in glibc's slightly different implementation. Eric mentioned privately that glibc does not yet have gnulib's commit fffd5faca, and that affects periodicity detection.