2

x86_64 の Ubuntu 12.10 で、Qt/C++ で記述されたサーバー側 Webkit レンダラーを実行しています。Qt は、qtwebkit 2.3 と同様に 4.8.4 カスタム ビルドです。

すべてのレンダリング タスクの約 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

これはどのように可能ですか?このクラッシュを軽減するにはどうすればよいですか?

更新:他のスレッドのバックトレース: http://pastie.org/5623164

4

1 に答える 1

3

結局のところ、これは偽のバックトレースです。libQtWebKit を同じビルドでデバッグ シンボルに置き換えた後、意味のあるまったく異なるバックトレースが得られます。

tl;dr - nanosleep() にクラッシュはありません。gdb による解決方法が間違っているだけです。

于 2013-01-05T00:10:35.853 に答える