I've had a lot of experience lately with OCaml backtraces sucking, and I'm not sure what's going on.  We're working on a decent-sizes project (about 10-kloc) that uses threads and a decent amount of functorization.  One thing we've noticed is that backtraces are almost completely useless --- generally speaking, they have lots of "Called from unknown location" messages, and almost no useful data.  They often skip over functions on the call stack of the error in surprising ways.

I guess the question is this:  what kind of situations cause backtraces to drop information in the ways described above?

Also, is there anyone out there actively using the native-code backtrace patches that people have come up with?  I'm curious to hear other people's experiences.

y