fgetsを呼ぶとき、よくある例だとコールスタックはこうなる(あくまで一例だけど)。
3番目の引数
2番目の引数
1番目の引数
fgetsからreturnする先のアドレス

ところが、allocaが混ざるとこうなってしまう可能性が高い。
3番目の引数 (stdin)
2番目の引数 (100)
allocaで確保した100バイト
1番目の引数 (allocaの戻り値)
fgetsからreturnする先のアドレス
こうなると、fgetsの中で、2-3番目の引数と思ってアクセスした場所が
実はallocaの領域だったという事態になってしまっている。
だからallocaを引数の中で使うなというわけ。