A few minutes ago, Chad Albers wrote: > Hi, > > Is there some sort of 'secret' to acquiring the stack trace of an > exception? It is my understanding that when an exception is raised > with the 'error' procedure in creates a exn:fail structure that has > a message field and a continuation-marks field. Presumably the > stack trace is in the continuation-marks field. To actually get the > stack trace I need to call the following: > > (continuation-mark-set->context (exn-continuation-marks exception))
This should work -- for example, I see a stack trace with: (with-handlers ([void (λ (e) (continuation-mark-set->context (exn-continuation-marks e)))]) (+ 1 "two")) > However, whenever I call this, it yields an empty list: () - Not a > stack trace. That can happen from running code in threads which start from an empty context. For example, doing the above in a thread: (thread (λ () (printf "~s\n" ...same...))) shows an empty trace. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ____________________ Racket Users list: http://lists.racket-lang.org/users