GDB回溯中没有本地错误
GDB No locals error in backtrace
我有一个自定义实现HTTP服务器的应用程序它使用HTTPRequest类来解析HTTP请求,RequestHandler类来处理调用和断开连接事件。服务器是多线程的,但是扫描器对象是单线程的。
应用程序保持崩溃在随机间隔,所以我无法重现这个错误,因为它是在生产级别运行,我不能为调试做微小的改变,我也试图测试使用apache bench ab
与100个并行请求,但没有崩溃。
我搜索了相同的错误,但一无所获。扫描器对象永远是活的,永远不会被销毁。那么下面的堆栈跟踪是什么意思呢?
backtrace:#0 0x000000000040909c in Scanner::stopScanner (this=0x0) at ../src/scanner.cpp:118
No locals.
#1 0x00000000004146b2 in RequestHandler::disconnected (this=0x9ac1c0) at ../src/requesthandler.cpp:100
No locals.
#2 0x0000000000417721 in RequestHandler::qt_static_metacall (_o=0x9ac1c0, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fff7fffe300) at moc_requesthandler.cpp:83
_t = 0x9ac1c0
#3 0x00007ffff396f01a in QMetaObject::activate(QObject*, int, int, void**) () from /root/libs/libQt5Core.so.5
No symbol table info available.
#4 0x000000000041732f in HTTPRequest::disconnected (this=0x7fff6c00c8d0) at moc_httprequest.cpp:203
No locals.
#5 0x00000000004119ce in HTTPRequest::tcpdisconnected (this=0x7fff6c00c8d0) at ../src/qfoobar/httpserver/httprequest.cpp:183
No locals.
#6 0x0000000000416dce in HTTPRequest::qt_static_metacall (_o=0x7fff6c00c8d0, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7fff7fffe500) at moc_httprequest.cpp:126
_t = 0x7fff6c00c8d0
#7 0x00007ffff396f01a in QMetaObject::activate(QObject*, int, int, void**) () from /root/libs/libQt5Core.so.5
No symbol table info available.
#8 0x00007ffff42fcaa8 in QAbstractSocket::disconnectFromHost() () from /root/libs/libQt5Network.so.5
No symbol table info available.
#9 0x00007ffff42fb439 in ?? () from /root/libs/libQt5Network.so.5
No symbol table info available.
#10 0x00007ffff42fb8cc in ?? () from /root/libs/libQt5Network.so.5
No symbol table info available.
#11 0x00007ffff430520f in ?? () from /root/libs/libQt5Network.so.5
No symbol table info available.
#12 0x00007ffff746d2b4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /root/libs/libQt5Widgets.so.5
No symbol table info available.
#13 0x00007ffff7470c86 in QApplication::notify(QObject*, QEvent*) () from /root/libs/libQt5Widgets.so.5
No symbol table info available.
#14 0x00007ffff393ce24 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /root/libs/libQt5Core.so.5
No symbol table info available.
#15 0x00007ffff3996bc2 in ?? () from /root/libs/libQt5Core.so.5
No symbol table info available.
#16 0x00007ffff1ed6e04 in g_main_context_dispatch () from /root/libs/libglib-2.0.so.0
No symbol table info available.
#17 0x00007ffff1ed7048 in ?? () from /root/libs/libglib-2.0.so.0
No symbol table info available.
#18 0x00007ffff1ed70ec in g_main_context_iteration () from /root/libs/libglib-2.0.so.0
No symbol table info available.
#19 0x00007ffff39975e4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /root/libs/libQt5Core.so.5
No symbol table info available.
#20 0x00007ffff393b04b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /root/libs/libQt5Core.so.5
No symbol table info available.
#21 0x00007ffff370277a in QThread::exec() () from /root/libs/libQt5Core.so.5
No symbol table info available.
#22 0x0000000000414a52 in HTTPRequestHandler::run (this=0x9ac1c0) at ../src/qfoobar/httpserver/httprequesthandler.cpp:30
No locals.
#23 0x00007ffff3708434 in ?? () from /root/libs/libQt5Core.so.5
No symbol table info available.
#24 0x00007ffff23ef182 in start_thread () from /root/libs/libpthread.so.0
No symbol table info available.
#25 0x00007ffff2e0847d in clone () from /root/libs/libc.so.6
No symbol table info available.
问题来了:
Scanner::stopScanner (this=0x0)
所以你的stopScanner
方法是用非对象调用的。就在下面,你可以看到RequestHandler::disconnected (this=0x9ac1c0)
,所以似乎disconnected
方法正在调用stopScanner
与一个空的Scanner
指针。
相关文章:
- 警告处理为错误这里有什么问题
- 当回溯以零开始时,如何调试崩溃
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 我正在尝试使用回溯来解决 N queen 问题,但在编译时它会给出运行时错误(动态堆栈缓冲区溢出)
- 通过迷宫求解程序回溯逻辑错误
- 为什么回溯解决方案给出错误的答案
- 如何解释GDB回溯以确定分段错误?
- 在回溯中使用“delete”解除分配时,出现“free()”错误
- 8 皇后区变化 - 安排回溯实施的数量 - 错误的输出
- 是否有任何方法可以避免警告/错误模板实例化回溯
- 我的回溯代码中的错误 - 过桥
- 如何修复c++中回溯行号错误
- GDB回溯中没有本地错误
- C++ 指针回溯的分段错误