Set ** S не инициируется, но вы разыменовываете S в следующем выражении:
* S = что угодно
Если вам не очень-очень не повезло и S не указывает на область памяти, к которой вы можете получить доступ, вы пытаетесь разыменовать недопустимый указатель.
Сначала вам нужно выделить указатель:
Set **S;
S = (S**)calloc(sizeof(S*),1);
*S = getpar();
Или, альтернативно (и, я думаю, предпочтительнее):
Set *S;
Set **T = &S;
S = getpar();
/* whatever else */