나는 (하스켈의 외국인 함수 인터페이스를 통해, 그리고 사용한다) 밀접하게 거울이 Z3 패키지와 함께 C API를 하스켈을 사용하고 있습니다 : https://hackage.haskell.org/package/z3분할 오류
나는 세그먼트 오류를 얻고을
mainx = do
print =<< intCheck [0..70]
intCheck :: [Int] -> IO [Int]
intCheck [] = return []
intCheck (x:xs) =
do
checking <- evalZ3 $ checkImpact x
print checking
return =<< intCheck xs
checkImpact :: Int -> Z3 Result
checkImpact r = do
reset
xSymb <- mkStringSymbol "x"
x <- mkConst xSymb =<< mkIntSort
trace ("asserting = " ++ show r) assert =<< mkEq x x
solverCheck
을 출력은 다음과 같습니다 :
asserting = 0
Sat
asserting = 1
Sat
asserting = 2
Sat
...[omitted]
asserting = 45
Sat
asserting = 46
Segmentation fault: 11
보통, 마지막 어서 트 (46) 주위 어딘가에, BU, 다음으로 줄이기 위해 관리해야 처형 간에는 차이가 있습니다. 내 최고의 추측은 메모리가 제대로 해제되지 않았다는 것입니다. (그렇지 않으면 약간 다른 점을 제외하고 멈출 수없는 이유를 알 수 없습니다.) 재귀 (intCheck의 경우) 또는 z3의 문제인지 확실하지 않습니다. api.
미리 도움을 청하십시오!
haskell 패키지의 버그 보고서를 열어 문제가있는 경우 업스트림을 처리하도록하자. – jberryman
t : https://bitbucket.org/iago/z3-haskell/issues/12/possible-error-in-package iago가 여기에 응답하고 여기에 응답하지 않으면 업데이트를 게시합니다. – Bill