为什么我的c++ /QT应用程序在Linux x86_64上的nanosleep()中崩溃
Why my C++/QT application crashes in nanosleep() on Linux x86_64?
我在x86_64上的Ubuntu 12.10下运行用Qt/c++编写的服务器端webkit渲染器。Qt是4.8.4自定义构建以及qtwebkit 2.3。
在大约5%的渲染任务中,应用程序像这样崩溃(gdb日志):
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/something...done.
[New LWP 27328]
[New LWP 27825]
[New LWP 27807]
[New LWP 28981]
[New LWP 27808]
[New LWP 28387]
[New LWP 28575]
[New LWP 28837]
[New LWP 28879]
[New LWP 28891]
[New LWP 27326]
[New LWP 28420]
[New LWP 28681]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/something'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007f793a58183d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
82 ../sysdeps/unix/syscall-template.S: No such file or directory.
#0 0x00007f793a58183d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
#1 0x00007f793a5816dc in __sleep (seconds=0) at ../sysdeps/unix/sysv/linux/sleep.c:138
#2 0x00007f793db80014 in ?? () from /usr/local/qt-4.8.4-git/lib/libQtWebKit.so.4
#3 0x00007f793db80309 in ?? () from /usr/local/qt-4.8.4-git/lib/libQtWebKit.so.4
#4 0x00007f793b09de9a in start_thread (arg=0x7f7934b41700) at pthread_create.c:308
#5 0x00007f793a5b5cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6 0x0000000000000000 in ?? ()
(gdb) quit
这怎么可能?我能做些什么来缓解这种崩溃?
更新:其他线程的backtrace: http://pastie.org/5623164
事实证明,这是一个错误的回溯。在用相同的构建但带有调试符号替换libQtWebKit后,我得到了一个完全不同的回溯,这是有意义的。
tl;dr -在nanosleep()中没有崩溃,这只是gdb的错误解析。
相关文章:
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 物理键盘上的触发器按键
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 集合上的输出迭代器:assign和increment迭代器
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 对于set上的循环-获取next元素迭代器
- 如何从棋盘上的箱号中找到行和列
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- if数组上的随机数
- 向量上的线性搜索
- 位阵列上的快速AND运算
- 无法将 GLFW 库与 Ubuntu 18.04 上的头文件链接
- 为什么一个向量上的多线程操作很慢
- 在linux上的c++程序中,细粒度的nanosleep不具有功率效率
- 为什么我的c++ /QT应用程序在Linux x86_64上的nanosleep()中崩溃