Closed icecocoa6 closed 3 years ago
eval(C), $c[E, C], E = add(X, Y) :- $z=X + Y, ground($c) | eval(C), $c[Z, C], Z = $z. eval(add(1, 2)).
上記コードを実行したときにdeleteconnectorsでSegmentation faultしていたのを修正. deleteconnectorsは型付プロセス(ground)のコピーの際にinsertconnectorsとともに使われる命令で,insertconnectorsによって生成された'='/2アトムを削除する. このとき,'='/2アトムの片方にデータアトムがあるとクラッシュしていた. 上記再現コードのようにデータアトムにgroundでマッチすると(条件によっては?)発生する.
SLIMではデータアトム同士が直接繋がることはないので,deleteconnectors実行時に'='/2アトムの両方がデータアトムになるような状況は起きないはず.
上記コードを実行したときにdeleteconnectorsでSegmentation faultしていたのを修正. deleteconnectorsは型付プロセス(ground)のコピーの際にinsertconnectorsとともに使われる命令で,insertconnectorsによって生成された'='/2アトムを削除する. このとき,'='/2アトムの片方にデータアトムがあるとクラッシュしていた. 上記再現コードのようにデータアトムにgroundでマッチすると(条件によっては?)発生する.
SLIMではデータアトム同士が直接繋がることはないので,deleteconnectors実行時に'='/2アトムの両方がデータアトムになるような状況は起きないはず.