В трее нажимаю ЛКМ -> Выход. При повторном запуске программы ругается на уже открытый профиль. Убивается обычным kill, но неудобно. strace посмотрел, записывает rc файл после этого остается висеть: sched_yield() = 0 write(10, "\0", 1) = 1 futex(0x88cd144, FUTEX_WAIT, 1, NULL
rpm -q psi ?
Reassign
psi-0.13-alt0.git6.f6760d1
qt-4.5 ?
Ошибка воспроизводится только на qt-4.5. С предыдущей версией qt никаких проблем нет.
http://svn.mandriva.com:80/cgi-bin/viewvc.cgi/packages/cooker/psi/current/SOURCES/psi-0.12-qt-4_5-compatibility.patch?view=markup
Все так: libqt4-core-4.5.0-alt2 psi-0.13-alt0.git6.f6760d1 Менял местами PsiApplication app(argc, argv); и QCA::Initializer init; не помогает.
Этот патч, естественно, не помогает.
2zerg: Сборка с внешним QCA2 не помогает. У меня оно висит несколько на другом процессе: 13651 <... select resumed> ) = 0 (Timeout) 13651 clock_gettime(CLOCK_MONOTONIC, {656911, 366129250}) = 0 13651 select(15, [], [], [], {0, 984}) = 0 (Timeout) 13651 clock_gettime(CLOCK_MONOTONIC, {656911, 370105250}) = 0 13651 clock_gettime(CLOCK_MONOTONIC, {656911, 370139250}) = 0 13651 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 17 13651 ioctl(17, SIOCGIFCONF, {80, {{"lo", {AF_INET, inet_addr("127.0.0.1")}}, {"venet0:1", {AF_INET, inet_addr("10.2.0.11")}}}}) = 0 13651 ioctl(17, SIOCGIFCONF, {80, {{"lo", {AF_INET, inet_addr("127.0.0.1")}}, {"venet0:1", {AF_INET, inet_addr("10.2.0.11")}}}}) = 0 13651 ioctl(17, SIOCGIFFLAGS, {ifr_name="lo", ifr_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING}) = 0 13651 close(17) = 0 13651 open("/proc/net/if_inet6", O_RDONLY) = 17 13651 fstat(17, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 13651 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b076f938000 13651 read(17, "00000000000000000000000000000001"..., 4096) = 54 13651 read(17, "", 4096) = 0 13651 close(17) = 0 13651 munmap(0x2b076f938000, 4096) = 0 13651 open("/proc/net/route", O_RDONLY) = 17 13651 fstat(17, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 13651 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b076f938000 13651 read(17, "Iface\tDestination\tGateway \tFlags"..., 4096) = 384 13651 read(17, "", 4096) = 0 13651 close(17) = 0 13651 munmap(0x2b076f938000, 4096) = 0 13651 open("/proc/net/ipv6_route", O_RDONLY) = 17 Это не потерянный тред, это пытается что-то куда-то послать... futex() тоже висит, но если подождать немного, то оно пролетает дальше в соседнем треде.
Ждём qt-4.5.1
Ошибка в psi-0.13. В новой версии QT QObject::sender () возвращает NULL, если сигнал пришёл из другого треда. Iris использует sender() для получения сигналов о завершении процессов. Думаю. что до переписывания куска кода в upstream мы не будет дожидаться окончания всех процессов и просто сделаем quit (но shutdown каждому из тредов скажем в любом случае). Либо, Зерг подскажет какой-то другой способ определить объект, отправивший сигнал... Как вариант - можно дожидаться завершения каждого треда после отправки shutdown(). Но мне тут тоже нужна помощь от Сергея.
psi-0.13-alt3.git8.36d25d7 -> sisyphus: * Wed Apr 15 2009 Anton Farygin <rider@altlinux> 0.13-alt3.git8.36d25d7 - added workaround for threaded sender() and QT-4.5 in iris (closes #19391) - added qca2-gnupg and qca2-ossl requires