この話は結構微妙で、以下のように全部変数でappendを呼ぶと、

?- append(L1,L2,L3).
L1 = [],
L2 = L3 ;
L1 = [_G1135],
L3 = [_G1135|L2] ;
L1 = [_G1135, _G1141],
L3 = [_G1135, _G1141|L2] ;
という具合に解として戻してくリストは長くなっていきます。20-30秒も
放っておくと、スタックオーバーフローになる。しかしこれは、制御の
為のスタックが伸びてオーバーフローしたのではありません。
L1のL3のリスト要素がどんどん増えていって、何百万あるいは何千万となり、
現在の規定されたスタックサイズを越えてしまうからです。
リストサイズが大きくなりすぎることによるオーバーフローです。