Hi all,
I've got some code crashing with "Prelude.foldr1: empty list". In
GHCi, the code uses too much memory (I kill it after it consumes 1GB)
to be able to use :trace and :history, but I just found out about the
-xc RTS option. I tried that, and I get the following:
dsat: Prelude.foldr1: empty list
Now, manually going through GHC.List
(http://haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-List.html)
I only found one CAF, namely prel_list_str, at the bottom of the file.
However, it is late and I quite possibly missed something. This CAF,
of course, doesn't seem a likely culprit. I also stumbled on some
discussion of the explicit call stack
(http://hackage.haskell.org/trac/ghc/wiki/ExplicitCallStack/StackTraceExperie...)
which exemplifies the behavior I've found, but doesn't seem to suggest
a way to fix it.
I'm developing on GHC 6.8.2. I've attached my code, the output of a
cabal sdist, which requires parse-dimacs [0] and bitset [1] (both
cabalised) to build. If you build the executable (with profiling),
you should see my behavior by running:
./dist/build/dsat/dsat -verify +RTS -xc
I know that the problem is somewhere in the "Backtracking" section, in
the backJump function. But I don't know where.
Any help is appreciated.
--
Denis
[0] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/parse-dimacs-1.0....
[1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bitset-0.5