Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Постоянно падает #61

Open
unera opened this issue May 28, 2018 · 16 comments
Open

Постоянно падает #61

unera opened this issue May 28, 2018 · 16 comments

Comments

@unera
Copy link

unera commented May 28, 2018

Linux, Debian/stretch. ICQ - блоб скачанный с сайта.

причем не Segfault (я попробовал пустить под ulimit -c unlimited), а просто вываливается.

падения наблюдаются следующим образом

  1. запускаем
  2. оставляем работать в неактивном окне
  3. падение происходит при переключении на окно ICQ (причем не потому что там сообщение пришло, а просто потому что захотелось написать кому-то)

в консоли где запускал icq такой лог:

Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 80: saw unknown, expected number
ASSERT: !"unexpected scale value"
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 80: saw unknown, expected number
ASSERT: QFile::exists(_iconPath)
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile

но этот лог наблюдается и при нормальной работе ICQ

@Alex-from-the-90s
Copy link

А какой у вас оконный менеджер? Помню у меня были проблемы с переключением раскладок в чате (я постил об этом здесь в отдельной ветке). Ася, как я понял, IBus не поддерживает, но были трудности и с переключением клавишами, назначенными для XIM. После того, как установил дефолтный оконный менеджер Xfce - Xfwm4 - переключение по XIM стало нормальным, как и везде.

@Alex-from-the-90s
Copy link

Кстати, обратил внимание, что с Xfwm4 окно ICQ не центрируется, а сползает вниз по экрану при запуске.

@unera
Copy link
Author

unera commented May 29, 2018

А какой у вас оконный менеджер

i3wm

были проблемы с переключением раскладок

падает не знаю как связано с раскладками, но падает так:

  1. включаем icq
  2. уходим на другое окно/рабочий стол
  3. возвращаемся - ok
  4. повторяем пункты 1-2-3 и периодически падает на пункте 3.

возможно вернуться надо с другой раскладкой?

у меня установлен xxkb который отслеживает чтобы у каждого окна была своя раскладка.

@Alex-from-the-90s
Copy link

Возможно влияет опция глобального сохранения текущей раскладки для всех окон (у меня она активирована, то есть раскладка везде одинаковая), но с xxkb я не знаком, знаю только IBus и xkb. Уверен точно в том, что у аси сейчас не так хорошо отлажено взаимодействие с методами ввода на Linux. В таких случаях неплохо скачать исходники и посмотреть РИДМИ, возможно для нормального функционирования нужна определенная версия пакета, который в системе или новее, или старее. Еще хороший способ - ldd ./icq в терминале в папке с бинарником. Вывод покажет, все ли в порядке по зависимостям и т. д.
Не знаю, какой QT использует ICQ, но если 4-й, то можно еще проверить метод ввода в QT4 Configuration Tool (должен быть тот же xim - так и прописано с маленькой буквы, замен шрифтов у меня там нет).

@ghost
Copy link

ghost commented Jun 17, 2018

XUbuntu 16.04.4 LTS оконный менеджер xfce
Linux support2 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Последняя доступная бинарная версия падает каждые 5 минут с таким же логом как у автора. До этого последние 2 года работал стабильно клиент.

@lieff
Copy link

lieff commented Jun 17, 2018

А если так запустить?

prlimit --as=4000000000 catchsegv ./icq

Если напишет "Not enough memory" - то это dbus, и похоже надо обновить статическую либу libdbus-1.a.

@ghost
Copy link

ghost commented Jun 17, 2018

prlimit --as=4000000000 catchsegv ./icq

Так запустил, тоже падает, ошибок никаких не выводит, систему обновил, проверил, такой же результат.

@lieff
Copy link

lieff commented Jun 17, 2018

Если catchsegv ничего не вывел - скорее всего, это не краш, а какой-нить внутренний паник, который вызвал exit(). Тогда можно попробовать записать strace -f ./icq >log 2>&1 .

@ghost
Copy link

ghost commented Jun 17, 2018

strace выдёт Broken Pipe:
[pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446175504}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446201057}) = 0 [pid 6569] <... select resumed> ) = 0 (Timeout) [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, <unfinished ...> [pid 6569] write(27, "\0", 1 <unfinished ...> [pid 6559] <... clock_gettime resumed> {11, 446252728}) = 0 [pid 6569] <... write resumed> ) = 1 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, <unfinished ...> [pid 6569] select(27, [26], [], NULL, {0, 4000} <unfinished ...> [pid 6559] <... clock_gettime resumed> {11, 446288461}) = 0 [pid 6569] <... select resumed> ) = 1 (in [26], left {0, 3998}) [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, <unfinished ...> [pid 6569] getsockopt(26, SOL_SOCKET, SO_ERROR, <unfinished ...> [pid 6559] <... clock_gettime resumed> {11, 446322391}) = 0 [pid 6569] <... getsockopt resumed> 0x7fac20ff8c78, 0x7fac20ff8c7c) = -1 ENOTSOCK (Socket operation on non-socket) [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, <unfinished ...> [pid 6569] read(26, <unfinished ...> [pid 6559] <... clock_gettime resumed> {11, 446353881}) = 0 [pid 6569] <... read resumed> "\0", 4) = 1 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, <unfinished ...> [pid 6569] select(27, [26], [], NULL, {0, 4000} <unfinished ...> [pid 6559] <... clock_gettime resumed> {11, 446388714}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446420915}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446446829}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446472275}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446497959}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446522501}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446548283}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446574041}) = 0 [pid 6559] clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {11, 446599618}) = 0 [pid 6559] close(51) = 0 [pid 6559] rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 8) = 0 [pid 6559] futex(0x731a18c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x731a188, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 [pid 6545] <... futex resumed> ) = 0 [pid 6559] futex(0x7fac1819b7f0, FUTEX_WAIT, 2147483648, NULL <unfinished ...> [pid 6545] futex(0x731a160, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 512981231}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513043488}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513104281}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513164930}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513226287}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513286600}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513349973}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513410285}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513470634}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513531235}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513599612}) = 0 [pid 6545] clock_gettime(CLOCK_MONOTONIC, {2812, 513687742}) = 0 [pid 6545] poll([{fd=25, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=25, revents=POLLIN|POLLRDNORM|POLLERR|POLLHUP}]) [pid 6545] write(25, "\25\3\3\0\32]f$\242o\263\221^\221O$\3445-g\ro\246\t\36\213\23\206\376\363\262", 31) = -1 EPIPE (Broken pipe) [pid 6545] --- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6543, si_uid=1000} --- [pid 6583] +++ killed by SIGPIPE +++ [pid 6582] +++ killed by SIGPIPE +++ ... +++ killed by SIGPIPE +++
В конце пропустил - ещё порядка 20 процессов убиваются [pid ####] +++ killed by SIGPIPE +++

Вот думаю, может какие-то проблемы в сети. Сейчас с последнего запуска работает уже минут 40, поэтому ещё потестирую. Как упадёт, думаю запустить со второго ноута, на нём Linux Mint и xfce.

@lieff
Copy link

lieff commented Jun 17, 2018

А что за fd=25 ? Можно полный лог(здесь аттачить можно)?
Есть подозрение что это общение с WM.

@ghost
Copy link

ghost commented Jun 17, 2018

Да, пожалуйста.
icq_log.zip

@lieff
Copy link

lieff commented Jun 17, 2018

Это оказалось внезапно общение с сервером:

[pid  6545] socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 25
[pid  6545] setsockopt(25, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid  6545] setsockopt(25, SOL_TCP, TCP_KEEPIDLE, [5], 4 <unfinished ...>
[pid  6545] setsockopt(25, SOL_TCP, TCP_KEEPINTVL, [5], 4 <unfinished ...>
[pid  6545] fcntl(25, F_GETFL <unfinished ...>
[pid  6545] fcntl(25, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid  6545] connect(25, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("178.237.20.54")}, 16) = -1 EINPROGRESS (Operation now in progress)
...
[pid  6545] write(25, "\25\3\3\0\32]f$\242o\263\221^\221O$\3445-g\ro\246\t\36\213\23\206\376\363\262", 31) = -1 EPIPE (Broken pipe)

Это довольно распространенная никсовая ошибка, надо или

    signal(SIGPIPE, SIG_IGN);

или читать\писать, прося не генерить сигналы:

    recv(m_s, (char*)p, size, MSG_NOSIGNAL);
    send(m_s, ptr, len, MSG_NOSIGNAL);

@ghost
Copy link

ghost commented Jun 17, 2018

Спасибо за объяснение, буду думать, как теперь с этим жить дальше =)
Странно, но не вылетает с последнего запуска уже пару часов.

@lieff
Copy link

lieff commented Jun 17, 2018

Как раз не странно, это от надежности коннекта с сервером зависит. Если есть возможность пересобрать, думаю будет достаточно на старте приложения сделать:

    signal(SIGPIPE, SIG_IGN);

@ghost
Copy link

ghost commented Jun 17, 2018

Да собрать смогу при необходимости, но есть нюанс, что клиент периодически самостоятельно обновляется. И будет-ли исправлена проблема, не известно.

@aloneuser
Copy link

У меня та же проблема.
ОС Debian 9. Desktop icewm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants