arg_list_consumer is declared to only have 4 entries. Thus, it is an invalid memory operation to index into it with [5].
If you want to assign a value to arg_list_consumer[5], you must declare the array to be at least of size 6 pointers (or you can throw in a few more NULLs to make it have a size of at least 6 pointers).
Then, if you want to use sprintf to store something, you must already have space allocated in the destination string. Since you just have an array of pointers, this means you must use malloc to allocate some space:
arg_list_consumer[5] = malloc(sizeof(char)*10);
sprintf(arg_list_consume[5], "%d", i);
(I used 10 but you should obviously use whatever length you think necessary).