私は新しいGentoo 12.1(amd64、XFCE、qt 4.8.2)インストールでscribusを操作しようとしましたが、通常のユーザーとして実行するとプログラムは起動しません。以下の提案と追加のテストのおかげで、.ICEauthorityの問題でスコープを絞り込み、ファイルを移動すると(またはScribusをrootで起動するとshoにファイルがありません)、完全にロードされます。ただし、このファイルはログイン時に自動的に生成されるため削除できません。
私は同じ結果でこのebuildを試しました:
- 安定したamd64(1.4.0-r2)
- amd64 不安定(1.4.1)
- 安定したi386(1.4.0-r2)
いくつかの strace の結果、最初の結果に strace -eopen と全体の出力を混在させました。
ユーザーとして:
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/xxx/.ICEauthority", O_RDONLY) = 8
open("/home/xxx/.ICEauthority", O_RDONLY) = 8
open("/home/xxx/.ICEauthority", O_RDONLY) = 8
open("/home/xxx/.ICEauthority", O_RDONLY) = 8
open("/home/xxx/.scribus//prefs140.xml", O_RDONLY|O_CLOEXEC) = 8
open("/usr/share/scribus/translations/scribus.en_GB.qm", O_RDONLY|O_CLOEXEC) = 8
open("/etc/nsswitch.conf", O_RDONLY) = 8
open("/etc/ld.so.cache", O_RDONLY) = 8
open("/lib64/libnss_compat.so.2", O_RDONLY) = 8
open("/lib64/libnsl.so.1", O_RDONLY) = 8
open("/etc/ld.so.cache", O_RDONLY) = 8
open("/lib64/libnss_nis.so.2", O_RDONLY) = 8
open("/lib64/libnss_files.so.2", O_RDONLY) = 8
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 8
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 8
fcntl(8, F_GETFD) = 0x1 (flags FD_CLOEXEC)
lseek(8, 0, SEEK_CUR) = 0
fstat(8, {st_mode=S_IFREG|0644, st_size=1129, ...}) = 0
mmap(NULL, 1129, PROT_READ, MAP_SHARED, 8, 0) = 0x7f748c6bd000
lseek(8, 1129, SEEK_SET) = 1129
munmap(0x7f748c6bd000, 1129) = 0
close(8) = 0
write(7, "\1\f\1\0\7\0\0\0\1\0\0\0\0\0\0\0\6\0\0\0UserID\0\0\0\0\0\0"..., 64) = 64
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7070415173} ---
rt_sigaction(SIGALRM, {SIG_DFL, [ALRM], SA_RESTORER|SA_RESTART, 0x7f7488617bc0}, {SIG_DFL, [], 0}, 8) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f748c6bd000
write(1, "Scribus Crash\n", 14) = 14
write(1, "-------------\n", 14) = 14
write(1, "Scribus crashes due to Signal #1"..., 34) = 34
root(最初のファイルと同じ、それ以降は異なる):
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
Qt: Session management error: Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed
open("/root/.scribus//prefs140.xml", O_RDONLY|O_CLOEXEC) = 7
open("/usr/share/scribus/translations/scribus.en_GB.qm", O_RDONLY|O_CLOEXEC) = 7
open("/usr/share/scribus/icons/Splash.png", O_RDONLY|O_CLOEXEC) = 7
open("/etc/qt4/Trolltech.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib64/qt4/plugins/imageformats", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 8
open("/usr/lib64/qt4/plugins/imageformats/libqgif.so", O_RDONLY) = 8
open("/usr/lib64/qt4/plugins/imageformats/libqico.so", O_RDONLY) = 8
open("/usr/lib64/qt4/plugins/imageformats/libqjpeg.so", O_RDONLY) = 8
open("/usr/lib64/qt4/plugins/imageformats/libqmng.so", O_RDONLY) = 8
open("/etc/ld.so.cache", O_RDONLY) = 8
open("/usr/lib64/libmng.so.1", O_RDONLY) = 8
open("/usr/lib64/liblcms.so.1", O_RDONLY) = 8
open("/usr/lib64/qt4/plugins/imageformats/libqtiff.so", O_RDONLY) = 8
(-O2なしでコンパイルした後)gdbを介して実行しました。
(gdb) run
Starting program: /usr/bin/scribus
[Thread debugging using libthread_db enabled]
Program received signal SIGSEGV, Segmentation fault.
0x0000000000e932c8 in typeinfo name for ScribusQApp ()
(gdb) backtrace
#0 0x0000000000e932c8 in typeinfo name for ScribusQApp ()
#1 0x00007ffff70c94bf in ?? () from /usr/lib64/qt4/libQtGui.so.4
#2 0x00007ffff70c9789 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#3 0x00007ffff278b11e in _SmcProcessMessage () from /usr/lib64/libSM.so.6
#4 0x00007ffff257a9c3 in IceProcessMessages () from /usr/lib64/libICE.so.6
#5 0x00007ffff65b7de3 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#6 0x00007ffff660338e in QSocketNotifier::activated(int) () from /usr/lib64/qt4/libQtCore.so.4
#7 0x00007ffff65bfaab in QSocketNotifier::event(QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#8 0x00007ffff704c8b4 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() from /usr/lib64/qt4/libQtGui.so.4
#9 0x00007ffff705136f in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#10 0x00007ffff65a33ab in QCoreApplication::notifyInternal(QObject*, QEvent*)
() from /usr/lib64/qt4/libQtCore.so.4
#11 0x00007ffff65d0c18 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#12 0x00007ffff29d6672 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#13 0x00007ffff29d6e68 in ?? () from /usr/lib64/libglib-2.0.so.0
#14 0x00007ffff29d7041 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#15 0x00007ffff65d12bf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#16 0x00007ffff70edc7e in ?? () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007ffff65a722f in QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#18 0x0000000000c26285 in ScribusQApp::init() ()
#19 0x0000000000e04250 in mainApp(int, char**) ()
#20 0x0000000000e041f8 in main ()
私は通常、オンラインで問題の解決策を見つけるので、バグレポートを提出する習慣はありません。しかし、今回はこの問題に関連するケースが見つからないようです。
それでは、scribusを使用してバグレポートを送信するにはどこから始めるべきですか?ここに提供されている追加情報が必要ですか?
どんなアドバイスも本当にありがとうございます。
頑張ってお時間をいただきありがとうございます。
答え1
Scribusをコンパイルするときに-no-rttiを使用しましたか?バックトラッキングは、ScribusQAppに関するタイプ情報が見つからないことを意味します。 ScribusはRTTIに依存せず、Qtもそうだとは思わない。ただし、/usr/lib64/qt4/libQtGui.so.4 の名前のない関数でエラーが発生します。だから私が提案するのは、QtとScribusのコンパイル設定を確認し、同じRTTI設定を使用していることを確認することです。
bugs.scribus.netにバグを報告しないでください。このバグは、Qt、GLIB、およびicewmを含むScribus関数への最後の呼び出しから17回の呼び出しで発生します。この場合、私たちは通常、人々に別のウィンドウマネージャを使用するように言います:-)
/アンドレアス、Scribus開発者