[Haskell-cafe] Best way to find an "undefined" error?

Scott West saynte at gmail.com
Thu Feb 14 21:25:07 EST 2008


On Thu, Feb 14, 2008 at 5:12 PM, Scott West <saynte at gmail.com> wrote:
>
> On Thu, Feb 14, 2008 at 4:43 PM, Don Stewart <dons at galois.com> wrote:
>  > saynte:
>  >
>  >
>  > > On Thu, Feb 14, 2008 at 3:02 PM, Denis Bueno <dbueno at gmail.com> wrote:
>  >  > > On Thu, Feb 14, 2008 at 2:55 PM, Don Stewart <dons at galois.com> wrote:
>  >  > >  >  You can use the profiler to get a stack trace, or use the new
>  >  > >  >  GHCi debugger to step backwards from the exception to the source.
>  >  > >  >
>  >  > >  >  I wrote a bit of a tutorial for this here:
>  >  > >  >
>  >  > >  >  http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/14#no-exceptions
>  >  > >
>  >  > >  Section 6.3 of http://haskell.org/haskellwiki/Debugging also is
>  >  > >  relevant for using ghcu to step backward ... perhaps the section label
>  >  > >  is misleading, though.  Feel free to modify as needed if you find the
>  >  > >  ghci stepper lets you find the problem
>  >  >
>  >  > Well, when using +RTS -xc, I get:
>  >  >
>  >  > <GHC.Err.CAF><GHC.Err.CAF>Prelude.undefined
>  >  >
>  >  > I'm not really sure what to do with this, not really the stacktrace I
>  >  > was hoping for. The ghci debugger I found was really quite nice, up
>  >  > until it his some portion of code that it isn't interpreting. By not
>  >  > "interpreting" i mean things that have been already been compiled and
>  >  > it's just calling (even if it has been compiled with profiling). I
>  >  > have a feeling that my problem is somewhere in something that has
>  >  > already been compiled.
>  >
>  >  Is it possible to just load all the code interpreted? Or is the problem
>  >  in a dependent library?
>  >
>  >  If you profile and let the program terminate, there should be a stack
>  >  trace in the .prof as well.
>  >
>  >  -- Don
>  >
>
>  Well, I can load a bunch of it interpreted. I've already done this as
>  far as I think I can. The only pieces laying outside the interpreter
>  are the GHC libraries and Gtk2Hs. The really funny thing, is that
>  (essentially) I believe the error results from a call to "fromDynamic"
>  out of Data.Dynamic. This sort of leads me to believe that someone's
>  "Typeable" instance is being funny. Again though, all the Typeable's
>  in the immediate area of my code seem to be fine.
>
>  (the .prof didn't seem to reveal anything yet... I'll look it over a
>  little more closely though)
>
>  Regards,
>  Scott
>

I did finally find the error (in one of the pieces of code not written
by myself). A few instances of Typeable were trying to pattern match
their arguments. *bomb*

In either case, it was an interesting experience!

Thanks for the help all!

Regards,
Scott


More information about the Haskell-Cafe mailing list