I am implementing a set covering application which uses cover function
int cover(set *skill_list,set *player_list,set *covering) 
Suppose skill_set={a,b,c,d,e}, player_list={s1,s2,s3} then output coverin ={s1,s3} where say s1={a,b,c}, s3={d,e} and s2={b,d}.
Now when I am calling this function it's hanging at run (set_cover.exe stopped working).
Here is my cover function:
typedef struct Spst_{           
    void *key;
    set *st;
}Spst;
int cover(set *skill_list,set *player_list,set *covering)       
{
    Liste *member,*max_member;          
    Spst *subset;
    set *intersection;          
    void **data;
    int max_size;                   
    set_init(covering);         //to initialize set covering initially  
    while(skill_list->size>0&&player_list->size>0)
    {
        max_size=0;
        for(member=player_list->head;member!=NULL;member=member->next)
        {
            if(set_intersection(intersection,((Spst *)(member->data))->st,skill_list)!=0)
                return -1;
            if(intersection->size>max_size)
            {
                max_member=member;
                max_size=intersection->size;
            }
            set_destroy(intersection);              //at the end of iteration
        }
        if(max_size==0)                 //to check for no covering
            return -1;
        subset=(Spst *)max_member->data;            //to insert max subset from play list to covering set
        set_inselem(covering,subset);
        for(member=(((Spst *)max_member->data)->st->head);member!=NULL;member=member->next)     //to rem elem from skill list
        {
            data=(void **)member->data;
            set_remelem(skill_list,data);
         }
        set_remelem(player_list,(void **)subset);           //to rem subset from set of subsets play list
    }
    if(skill_list->size>0)
        return -1;
    return 0;
}
Now assuming I have defined three set type sets(as stated above) and calling from main as
cover(skills,subsets,covering);=> runtime hang Here
Please give inputs on the missing link in this or the prerequisites for a proper call to this function type required.
EDIT: Assume other functions used in cover are tested and working fine.