Also forgot to say: a minidump will contain stack traces of all threads, not just the calling thread. IME, if the program is multithreaded, it's immensely helpful to know what other threads were doing when one particular thread crashed.


From: Boost-users <boost-users-bounces@lists.boost.org> on behalf of Don via Boost-users <boost-users@lists.boost.org>
Sent: Monday, September 11, 2017 1:27:47 AM
To: boost-users@lists.boost.org
Cc: Don
Subject: [Boost-users] [stacktrace] Getting a stacktrace from unhandled exception in windows
 
I am trying use boost stacktrace to get a stack dump when my program encounters an unhandled exception under windows. I have installed a signal handler as described in the stacktrace documentation, and it gets called. However, the resulting stack trace is after everything has been unwound.

For example, when I force a failure by dereferenceing a null pointer many levels down in my function hierarchy, the stack trace shows:

  0# boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl<char const *> at f:\home\tools\boost\boost\stacktrace\safe_dump_to.hpp:68
  1# boost::stacktrace::safe_dump_to at f:\home\tools\boost\boost\stacktrace\safe_dump_to.hpp:120
  2# my_signal_handler at f:\home\test\main.cpp:233
  3# 0x5171407B
  4# my_signal_handler at f:\home\test\main.cpp:235
  5# 0x51713883
  6# __tmainCRTStartup at f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c:603
  7# WinMainCRTStartup at f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c:403
  8# BaseThreadInitThunk in kernel32
  9# RtlInitializeExceptionChain in ntdll
10# RtlInitializeExceptionChain in ntdll

This is not particularly helpful, of course -- I want to know the call stack at the point of the failure. Is there any way to get that? What am I missing?

Thanks,

Don

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users