Initialisierst du das FIFO nicht ?

fifo_init (&fifo, buffer, BUF_SIZE);