2013-06-25 19 views
11

考慮下面的代碼:http://hpaste.org/90394段錯誤讀取懶字節字符串過去2^18字節

我是內存映射大的460MB文件到一個懶惰的字節串。 ByteString的長度報告爲471053056

當更改爲較低節點ID,即:10000時,它可以很好地工作。然而;只要我嘗試序列化ByteString的正好2^18字節(262144)的任何東西,我就會得到Segmentation fault/access violation in generated code並終止。

我正在運行Windows並使用GHC 7.4.2。

請告知這是我的錯,還是與懶惰有關的問題,或者與Haskell有關的問題。

+1

您的'getNXNode'與'NXNode'數據定義不匹配。如果這是故意的,那麼值得評論。但我不明白這是如何導致段錯誤的。 –

+0

@DanielFischer'NXNode 0 <$> ...':) – kvanberendonck

+0

是的,但是你跳過20個字節,每個節點只讀12個。 –

回答

1

請注意,我更新了mmap,以便在代碼中的戰略點處正確包含NOINLINE雜注。 mmap-0.5.9可用於抓取。讓我知道如果問題依然存在。 編輯:是的,我是mmap的作者。

+0

雖然看起來你是mmap作者,但從你的回答來看,這並不完全清楚。我會考慮增加更多信息。 – Syon