Bug 19391

Summary: При закрытии окна остается процесс
Product: Sisyphus Reporter: nwtour <nwtour>
Component: psiAssignee: Anton Farygin <rider>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: minor    
Priority: P2 CC: boris, rider, wrar, zerg
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 15356    
Bug Blocks:    

Description nwtour 2009-03-30 01:43:51 MSD
В трее нажимаю ЛКМ -> Выход.
При повторном запуске программы ругается на уже открытый профиль.
Убивается обычным kill, но неудобно.

strace посмотрел, записывает rc файл после этого остается висеть:

sched_yield()                           = 0
write(10, "\0", 1)                      = 1
futex(0x88cd144, FUTEX_WAIT, 1, NULL
Comment 1 Anton Farygin 2009-03-30 08:31:09 MSD
rpm -q psi ?
Comment 2 Mikhail Yakshin 2009-03-30 10:06:10 MSD
Reassign
Comment 3 Andrey Rahmatullin 2009-03-30 11:20:09 MSD
psi-0.13-alt0.git6.f6760d1
Comment 4 Anton Farygin 2009-03-30 12:34:46 MSD
qt-4.5 ?
Comment 5 Anton Farygin 2009-03-30 14:47:06 MSD
Ошибка воспроизводится только на qt-4.5. С предыдущей версией qt никаких проблем нет.
Comment 7 nwtour 2009-03-30 22:16:39 MSD
Все так:
libqt4-core-4.5.0-alt2
psi-0.13-alt0.git6.f6760d1

Менял местами
PsiApplication app(argc, argv);
и
QCA::Initializer init;

не помогает.
Comment 8 Anton Farygin 2009-03-31 12:15:52 MSD
Этот патч, естественно, не помогает.
Comment 9 Anton Farygin 2009-04-01 09:58:21 MSD
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() тоже висит, но если подождать немного, то оно пролетает дальше в соседнем треде.
Comment 10 Anton Farygin 2009-04-01 12:54:24 MSD
Ждём qt-4.5.1
Comment 11 Anton Farygin 2009-04-15 10:28:35 MSD
Ошибка в psi-0.13. В новой версии QT QObject::sender () возвращает NULL, если сигнал пришёл из другого треда.

Iris использует sender() для получения сигналов о завершении процессов. 

Думаю. что до переписывания куска кода в upstream мы не будет дожидаться окончания всех процессов и просто сделаем quit (но shutdown каждому из тредов скажем в любом случае).

Либо, Зерг подскажет какой-то другой способ определить объект, отправивший сигнал...

Как вариант - можно дожидаться завершения каждого треда после отправки shutdown(). Но мне тут тоже нужна помощь от Сергея.
Comment 12 Repository Robot 2009-04-15 19:13:28 MSD
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