Scribus falha com a autoridade .ICE

0

Eu tenho tentado fazer com que o scribus funcione na minha nova instalação do gentoo 12.1 (amd64, XFCE, qt 4.8.2), mas quando rodando como um usuário comum o programa não inicia. Graças a sugestões e testes extras abaixo, eu reduzi a isso a um problema com o .ICEauthority, quando eu movo o arquivo (ou inicio o Scribus como root, o sho não tem o arquivo) ele carrega perfeitamente. O arquivo é criado no login automaticamente, portanto, removê-lo não é uma opção.

Eu tentei esses ebuilds, com o mesmo resultado:

  • Amd64 estável (1.4.0-r2)
  • Instável amd64 (1.4.1)
  • Estável i386 (1.4.0-r2)

Alguns resultados de strace, eu misturei strace -open e full output no primeiro.

Como usuário:

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, "\f
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
(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 ()
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, "\f
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
(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 ()
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%UserID%pre%%pre%%pre%%pre%%pre%%pre%"..., 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
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%UserID%pre%%pre%%pre%%pre%%pre%%pre%"..., 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

Como root (mesmo primeiro arquivo, diferente depois):

%pre%

Eu o executei através do gdb (depois de compilar sem -O2):

%pre%

Normalmente, sempre encontro soluções para um problema on-line, por isso não estou acostumado a arquivar relatórios de bugs. No entanto, não consigo encontrar nenhum caso com este problema desta vez.

Então, onde devo ir a partir daqui - arquivar um relatório de bug com scribus? Eles precisariam de alguma informação adicional da fornecida aqui?

Qualquer conselho seria muito apreciado.

Tudo de bom e obrigado pelo seu tempo.

    
por NwN 03.08.2012 / 10:42

1 resposta

1

Você compilou o Scribus com -no-rtti? O backtrace sugere uma falha para localizar o tipo de informação do ScribusQApp. O Scribus não depende do RTTI e eu acho que o Qt também não. No entanto, o erro ocorre em uma função sem nome em /usr/lib64/qt4/libQtGui.so.4. Então, meu conselho é verificar as configurações de compilação para o Qt e o Scribus e certifique-se de usar a mesma configuração RTTI.

Não se preocupe em arquivar um bug com bugs.scribus.net - o erro ocorre 17 chamadas da última chamada para uma função Scribus, tocando em Qt, GLIB e icewm entre elas. Nós geralmente apenas dizemos às pessoas para usarem outro gerenciador de janelas neste caso: -)

/ Andreas, Desenvolvedor Scribus

    
por 05.08.2012 / 10:47

Tags