[ANNOUNCE] GHC 8.2.1 release candidate 1
m at tweag.io
Mon Apr 10 22:25:23 UTC 2017
it sounds like some of the remaining limitations around DWARF support
(e.g. finishing the stack sampling work, local bindings in GDB, ...)
could make for a good Haskell Summer of Code project. Have you
considered writing this up as one or two project ideas here:
https://summer.haskell.org/ideas.html? As HSoC sponsors, we'd be more
than happy to see someone pick this up.
Founder at http://tweag.io.
On 10 April 2017 at 22:52, Ben Gamari <ben at well-typed.com> wrote:
> "Boespflug, Mathieu" <m at tweag.io> writes:
>> Hi Ben,
>> thank you for this summary. The DWARF status page is helpful. Something was
>> unclear to me though. There are three main potential use cases for DWARF
>> that I see:
>> 1. debugging, possibly with gdb
>> 2. stack traces on exceptions
>> 3. stack sampling, which is a form of performance profiling.
>> Forgive me for these naive questions, but... Is (1) possible at all at this
> If you break into a program with gdb you will indeed get a usable
> stacktrace. However, you cannot probe in-scope bindings as you can in
> other languages.
>> If I compile GHC with all the right options as explained in the
>> status page, do I magically get backtraces associated to all my
>> exceptions? What should I do to get those?
> Ahh, thanks for pointing this out; this should be discussed on the
> status page. I have a proposal allowing this here  and there is a
> ticket here .
> It turns out that this is actually a slightly tricky thing due to two
> * stack unwinding can be expensive
> * exceptions (especially asynchronous exceptions) are sometimes used
> as a mechanism for normal control flow.
> Compatibility is quite tricky as under the current plan existing code
> would drop callstack information if it catches and rethrows an
> exception. I don't see any way to resolve this in a backwards
> compatible manner.
>> It's my understanding that (3) is possible and works fine, even when
>> FFI code is invoked, but slower than for C programs due to running
>> user-level code to inspect the stack for each sample. Is that right?
> It's possible with my statistical profiling patches, but these are
> currently not merged and the project is on hold due to lack of time. You
> can, however, use perf. --callgraph will be broken in Haskell code,
> however (e.g. you will only see the first stack frame).
> - Ben
>  https://ghc.haskell.org/trac/ghc/wiki/Exceptions/StackTraces
>  https://ghc.haskell.org/trac/ghc/ticket/12096
More information about the ghc-devs