Plack::Middleware::StackTrace displays last exception information since the code is: my $trace; local $SIG{__DIE__} = sub { $trace = $StackTraceClass->new; die @_; };If you are using 'rethrow', you will get the stack-trace from the point. use Try::Tiny; sub f { die "YAY"; } sub { try { f() } catch { die $_; # <-- you get stack trace from here! } }My answer for this issue is: use Try::Tiny; sub f {