在Windows上使用GHC时,以下代码崩溃。 它在Linux上完美运行。
这是否有意义或有一个错误?
module Main where import qualified Text.Regex as Re -- from regex-compat import Debug.Trace main :: IO () main = do putStr $ cleanWord "jan" putStr $ cleanWord "dec" putStr $ cleanWord "jun" -- crashes here cleanWord :: String -> String cleanWord word_ = let word = trace (show word_) word_ in let re = Re.mkRegexWithOpts "(jun|jul|aug|sep|oct|nov|dec)" True False in Re.subRegex re word ""
一些额外的细节
stack
build设 在这种情况下混洗正则表达式避免了这个bug。
这现在对我来说很好
let re = Re.mkRegexWithOpts "(jul|aug|sep|oct|jun|nov|dec)" True False in
即移动jun
到正则表达式的结尾。 不是特别满意,但它的工作,这意味着我可以继续。
@ Zeta的评论表明,这是一个基础库的错误
这是一个错误,可能是在正则表达式中,由于它在1994年包含BSD正则表达式库的差异。在sslow中,无效内存地址(-1(%rdx),rdx = 0)将被访问。