Мені здається, тут причина не тільки в крихкості оточення lstlisting, а й у специфічному використанні команди \multicolumn. Бо 1) якщо замінити lstlisting на, скажімо, quote (яке не є крихким), то проблеми залишаються: на вигляд ніби все ок, але LaTeX видає (незрозуміле для мене) повідомлення про помилку; 2) якщо забрати команду \multicolumn (навіть в одній комірці тільки), то компілюється без проблем.
Тому мінімальними виправленнями не вийде. Треба змінювати програму, щоб вона генерувала код без \multicolumn. Якщо команда \multicolumn використовується тільки для того, щоб зробити певне оформлення, то те саме оформлення можна задати в аргументі оточення longtable.