Skip to content

Expose Stack Frame Annotations in IPE Backtraces by default

Closes #26218 (closed)

Finally, after the work in !14538 (closed), !14532 (closed) and !14543 (closed), we bring it here together.

When decoding the Haskell-native call stack and displaying the IPE information for the stack frames, we print the StackAnnotation of the AnnFrame by default.

This means, when an exception is thrown, any intermediate stack annotations will be displayed in the IPE Backtrace.

Example backtrace:

Exception: ghc-internal:GHC.Internal.Exception.ErrorCall:

Oh no!

IPE backtrace:
  annotateCallStackIO, called at app/Main.hs:48:10 in backtrace-0.1.0.0-inplace-server:Main
  annotateCallStackIO, called at app/Main.hs:46:13 in backtrace-0.1.0.0-inplace-server:Main
  Main.handler (app/Main.hs:(46,1)-(49,30))
  Main.liftIO (src/Servant/Server/Internal/Handler.hs:30:36-42)
  Servant.Server.Internal.Delayed.runHandler' (src/Servant/Server/Internal/Handler.hs:27:31-41)
  Control.Monad.Trans.Resource.runResourceT (./Control/Monad/Trans/Resource.hs:(192,14)-(197,18))
  Network.Wai.Handler.Warp.HTTP1.processRequest (./Network/Wai/Handler/Warp/HTTP1.hs:195:20-22)
  Network.Wai.Handler.Warp.HTTP1.processRequest (./Network/Wai/Handler/Warp/HTTP1.hs:(195,5)-(203,31))
  Network.Wai.Handler.Warp.HTTP1.http1server.loop (./Network/Wai/Handler/Warp/HTTP1.hs:(141,9)-(157,42))
HasCallStack backtrace:
  error, called at app/Main.hs:48:32 in backtrace-0.1.0.0-inplace-server:Main

The first two entries have been added by annotateCallStackIO, defined in annotateCallStackIO.

Merge request reports

Loading