strdup (null) выгрузит ядро.
Пробовал на ubuntu и на freeBSD.
почему? Разве он не должен возвращать null?
char *b = NULL; a = strdup(b);
Это приведет к сбросу ядра при вызове strdup.