Summary: | При закрытии окна остается процесс | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | nwtour <nwtour> |
Component: | psi | Assignee: | 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
rpm -q psi ? Reassign psi-0.13-alt0.git6.f6760d1 qt-4.5 ? Ошибка воспроизводится только на qt-4.5. С предыдущей версией qt никаких проблем нет. Все так: 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 |