Bug 19391 - При закрытии окна остается процесс
: При закрытии окна остается процесс
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/psi)
: unstable
: all Linux
: P2 minor
Assigned To:
:
:
:
: 15356
:
  Show dependency tree
 
Reported: 2009-03-30 01:43 by
Modified: 2012-03-16 14:00 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


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

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

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

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

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

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

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

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

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