falha seg estranha, provavelmente com realloc

char *dumpTB (TB tb){

    char* text = malloc(sizeof(char));

    int i = 0; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i);
            text[i] = curr->line[x];
            printf("%c\n", text[i]);

            text = realloc(text, i+1);

            i++;
            x++;
        }
        text[i] = '\n';
        printf("%c", text[i]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
    }

    return text;
}

Então, eu consigo imprimir as 12 primeiras letras da minha string usando as instruções print, mas por alguma razão isso me causa uma falha seg logo após a impressão da 12ª letra 'l' e, com base nas instruções print, parece ocorrer em torno do realloc ... alguém pode me dizer o que eu fiz de errado?

int i = 1; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i-1);
            text[i-1] = curr->line[x];
            printf("%c\n", text[i-1]);

            text = realloc(text, i+1);
            i++;
            x++;
        }
        printf("%d\n", i-1);
        text[i-1] = '\n';
        printf("%c", text[i-1]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
        //printf("%c\n", curr->line[0]);
    }

Eu tentei consertar os erros de índice, uma coisa de asserção de sysmalloc muito demorada que aborta o programa.

questionAnswers(1)

yourAnswerToTheQuestion