I won't even say how long I have been working on pset5, its embarrassing. But I have now at least got code written which I am sure is going to have a lot of mistakes. Problem is I can't even run GDB on the speller file to debug. I keep getting the following error message

>(gdb) run ~cs50/pset5/texts/austinpowers.txt
>Starting program: /home/ubuntu/workspace/pset5/speller >~cs50/pset5/texts/austinpowers.txt
>
>Program received signal SIGSEGV, Segmentation fault.
>0x000000000040142f in load (dictionary=0x401622 "dictionaries/large") at >dictionary.c:115
>115                     hashtable[hashy(new_node->word)] = new_node;
>(gdb) 

This is my load function that contains the offending line (115). Can anyone give some guidance as to what the error might be so I can at least get to a point where I can run GDB. Many Thanks.

    bool load(const char* dictionary)
    {
    //initialise hashtable to NULL
    for (int i = 0; i < 27; i++)
    {
        hashtable[i] = NULL;
    }
    
    // open dictionary file and read it
    FILE* dic = fopen(dictionary, "r");
    
    //if empty return false
    if (dic == NULL)
    {
        printf("Failed to load dictionary.\n");
        return false;
    }
    else 
    {
        //continue until end of file reached
        while(!feof(dic))
        {
            
            //build a new node 
            node* new_node = malloc(sizeof(node));
            
            //read in the words from the dictionary
            fscanf(dic, "%s", new_node -> word);
            count++;
            
            
            
            //put word through hash function to get index for the array
            index = hashy(new_node-> word);
            
            //if first word at index, put it in and point to Null
            if (hashtable[hashy(new_node-> word)] == NULL)
            {
                hashtable[hashy(new_node->word)] = new_node;
                new_node->next = NULL;
            }            
            //if there is already a word at the index, add the new word
            else
            {
                new_node->next = hashtable[hashy(new_node->word)];
               hashtable[hashy(new_node->word)] = new_node;
                
            }
        }