Minidump stack trace

Hello.
I’m getting a not full stack trace on sentry. But when I use minidump_stackwalk.exe locally, the stack trace is OK.
For example. On sentry I have this:

  • Qt5Core QConfFileCustomFormat::~QConfFileCustomFormat() qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\xml\qxmlstream.h:77

  • MyApp Components::receive_message(QString const &) myapp\components.cpp:179

  • Qt5Core QMetaObject::activate(QObject *,QMetaObject const *,int,void * *) qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\kernel\qobject.cpp:3602

  • Qt5Core QMetaObject::activate(QObject *,int,int,void * *) qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\kernel\qobject.cpp:3740

But it should look like this:

  • MyApp MyWidget::receive_message(QString const &) myapp\mywidget.cpp:347

  • Qt5Core QConfFileCustomFormat::~QConfFileCustomFormat() qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\xml\qxmlstream.h:77

  • MyApp Components::receive_message(QString const &) myapp\components.cpp:179

  • Qt5Core QMetaObject::activate(QObject *,QMetaObject const *,int,void * *) qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\kernel\qobject.cpp:3602

  • Qt5Core QMetaObject::activate(QObject *,int,int,void * *) qt-everywhere-opensource-src-5.8.0\qtbase\src\corelib\kernel\qobject.cpp:3740

So, sentry lost a few last steps.

Maybe some frames got inlined by the compiler optimizer ? 5 frames in debug but only 4 frames in release builds ?

Nope, both examples are from release build. Also I got these stack traces from the same dmp file. Just first I got after uploading to sentry, second - locally with minidump_stackwalk.exe.

There’s something called ‘CFI’ (Call Frame Information ?) that might not be used by sentry to compute the backtrace.

@kosh543 I’m seeing this same issue, our minidump traces are incomplete as well:
dump%20comparison

you can see that the trace in sentry does not have as many frames as the screen cap of the minidump analysis in Visual Studio.

You can see it bit more clearly in this trace,
here is Sentry’s Raw view:

Thread 1515872 Crashed:
0 KERNELBASE.dll 0x7ffdbcbea388 RaiseException
1 VCRUNTIME140D.dll 0x7ffdab657ed7
2 MSVCP140D.dll 0x7ffd98dd201b
3 MSVCP140D.dll 0x7ffd98e5f3b8
4 MSVCP140D.dll 0x7ffd98da0000
5 MSVCP140D.dll 0x7ffd98e81778
6 MSVCP140D.dll 0x7ffd98e5f3b8
7 MSVCP140D.dll 0x7ffd98da0000
8 MSVCP140D.dll 0x7ffd98dd20de
9 MSVCP140D.dll 0x7ffd98e5f3b8
10 MSVCP140D.dll 0x7ffd98e81778
11 MSVCP140D.dll 0x7ffd98e3ee18
12 MSVCP140D.dll 0x7ffd98e3f610
13 MSVCP140D.dll 0x7ffd98e3c260
14 MSVCP140D.dll 0x7ffd98e81778
15 depthkit.exe 0x7ff78e7b63dc std::thread::join (thread:195)
** 16 depthkit.exe 0x7ff78e95f62c Depthkit::IO::DepthSensor::DepthSensorRealSense::stopStream** (depthsensorrealsense.cpp:513)

and the Visual studio stack trace from the minidump analysis:

KERNELBASE.dll!00007ffdbcbea388() Unknown
VCRUNTIME140D.dll!00007ffdab657ed7() Unknown
MSVCP140D.dll!00007ffd98dd20de() Unknown
> depthkit.exe!std::thread::join() Line 196 C++
** depthkit.exe!Depthkit::IO::DepthSensor::DepthSensorRealSense::stopStream()** Line 513 C++
depthkit.exe!Depthkit::DepthSensorStage::stopStreaming() Line 175 C++
depthkit.exe!Depthkit::CaptureController::stopStreaming() Line 376 C++
depthkit.exe!DkCaptureController::stopStreaming() Line 255 C++
depthkit.exe!DkCaptureController::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 280 C++
depthkit.exe!DkCaptureController::qt_metacall(QMetaObject::Call _c, int _id, void * * _a) Line 481 C++
[External Code]
depthkit.exe!ErrorHandlingApplication::notify(QObject * receiver, QEvent * event) Line 99 C++
[External Code]
depthkit.exe!ErrorHandlingApplication::notify(QObject * receiver, QEvent * event) Line 99 C++
[External Code]
depthkit.exe!DepthkitApp::exec() Line 408 C++
depthkit.exe!main(int argc, char * * argv) Line 11 C++
[External Code]

You can see in the Visual Studio Trace, it goes all the way out to main, which is what i’d like to see in Sentry.

@bsergean did you ever find a solution for this?

No sorry …