slytomcat / yandex-disk-indicator

Panel indicator (GTK+) for YandexDisk CLI client for Linux
GNU General Public License v3.0
238 stars 30 forks source link

Start Yandex.Disk daemon doesn't work. Error: daemon not started #232

Closed maxpostal closed 1 year ago

maxpostal commented 1 year ago

Describe what happened with indicator Не запускается автоматически демон Yandex.Disk. Иногда его удается запустить вручную с 10-й попытки. Какую-то закономерность найти не могу.

Describe steps to recreate the issue

Make debugging log:

  1. close indicator if ir is running
  2. start indicator in terminal by command line: yandex-disk-indicator -l10
  3. recreate the issue
  4. copy debug output to issue

yandex-disk-indicator -l10

2022-11-25 09:16:48,726 INFO     yandex-disk-indicator v.1.11.0
2022-11-25 09:16:48,726 DEBUG    Logging level: 10
2022-11-25 09:16:48,727 DEBUG    Config value read as: autostart = True
2022-11-25 09:16:48,727 DEBUG    Config value read as: notifications = True
2022-11-25 09:16:48,727 DEBUG    Config value read as: theme = False
2022-11-25 09:16:48,727 DEBUG    Config value read as: fmextensions = True
2022-11-25 09:16:48,727 DEBUG    Config value read as: daemons = /home/max/.config/yandex-disk/config.cfg
2022-11-25 09:16:48,727 INFO     Config read: /home/max/.config/yd-tools/yandex-disk-indicator.conf
2022-11-25 09:16:48,781 DEBUG    Config value read as: auth = /home/max/.config/yandex-disk/passwd
2022-11-25 09:16:48,781 DEBUG    Config value read as: dir = /home/max/Yandex.Disk
2022-11-25 09:16:48,781 DEBUG    Config value read as: proxy = False
2022-11-25 09:16:48,781 DEBUG    Config value read as: startonstartofindicator = True
2022-11-25 09:16:48,781 DEBUG    Config value read as: stoponexitfromindicator = True
2022-11-25 09:16:48,782 DEBUG    Config value read as: exclude-dirs = ENGLISH, MUSIC, PHOTO
2022-11-25 09:16:48,782 INFO     Config read: /home/max/.config/yandex-disk/config.cfg
yandex-disk: /usr/local/boost/boost_1_59_0/include/boost/thread/pthread/mutex.hpp:111: boost::mutex::~mutex(): Assertion `!res' failed.
2022-11-25 09:16:48,962 INFO     Daemon started, message: Got signal 6
0.1.6.1074 x64
[bt] Execution path:
[bt] /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7f85fba9226b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7f85fba9226b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x16) [0x7f85fba3bc46]
[bt] /lib/x86_64-linux-gnu/libc.so.6(abort+0xd7) [0x7f85fba227fc]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x2271b) [0x7f85fba2271b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x33596) [0x7f85fba33596]
[bt] /usr/bin/yandex-disk() [0x57eb50]
[bt] /usr/bin/yandex-disk() [0x484812]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x58a444]
[bt] /usr/bin/yandex-disk() [0x822d69]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x807768]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x7f988d]
[bt] /usr/bin/yandex-disk() [0x59097a]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x8076e7]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x807f41]
[bt] /usr/bin/yandex-disk() [0x80bbca]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x805281]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x81e8db]
[bt] /usr/bin/yandex-disk() [0x43288f]
[bt] /usr/bin/yandex-disk() [0x8258e5]
[bt] /usr/bin/yandex-disk() [0xa7424c]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x90402) [0x7f85fba90402]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x11f590) [0x7f85fbb1f590]

2022-11-25 09:16:49,092 DEBUG    Event raised by Timer
2022-11-25 09:16:49,092 INFO     Change event: stat,size,
2022-11-25 09:16:49,093 DEBUG    Sub-menu 'Last synchronized' has 0 items
2022-11-25 09:16:49,093 INFO     Status: unknown -> none
yandex-disk: /usr/local/boost/boost_1_59_0/include/boost/thread/pthread/mutex.hpp:111: boost::mutex::~mutex(): Assertion `!res' failed.
2022-11-25 09:21:05,708 INFO     Daemon started, message: Got signal 6
0.1.6.1074 x64
[bt] Execution path:
[bt] /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7f05d5e9226b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7f05d5e9226b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x16) [0x7f05d5e3bc46]
[bt] /lib/x86_64-linux-gnu/libc.so.6(abort+0xd7) [0x7f05d5e227fc]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x2271b) [0x7f05d5e2271b]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x33596) [0x7f05d5e33596]
[bt] /usr/bin/yandex-disk() [0x57eb50]
[bt] /usr/bin/yandex-disk() [0x484812]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x58a444]
[bt] /usr/bin/yandex-disk() [0x822d69]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x807768]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x7f988d]
[bt] /usr/bin/yandex-disk() [0x59097a]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x8076e7]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x807f41]
[bt] /usr/bin/yandex-disk() [0x80bbca]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x805281]
[bt] /usr/bin/yandex-disk() [0x417d09]
[bt] /usr/bin/yandex-disk() [0x81e8db]
[bt] /usr/bin/yandex-disk() [0x43288f]
[bt] /usr/bin/yandex-disk() [0x8258e5]
[bt] /usr/bin/yandex-disk() [0xa7424c]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x90402) [0x7f05d5e90402]
[bt] /lib/x86_64-linux-gnu/libc.so.6(+0x11f590) [0x7f05d5f1f590]

yandex-disk status Error: daemon not started

Describe your OS (distribution, version, desktop environment) Ubuntu 22.10

slytomcat commented 1 year ago

Тут валится сам демон (yandex-disk). Это - утилита компании яндекс и с проблемами по ней нужно писать в поддержку яндекса.

dmitry-t commented 1 year ago

У меня тоже воспроизводится эта проблема. Лог идентичный. Но почему индикатор не виден? По-идее, он должен оставаться в status bar и указывать на проблему с сервисом.

slytomcat commented 1 year ago

Индикатор возможно и остается, но там иконка неактивности (которую бывает трудно разглядеть), а не ошибки. Собственно мне не очень ясно как обрабатывать ситуацию, когда запущенный yandex-disk валится с такими дампами. Сейчас индикатор ждет разумного ответа от yansex-disk status и пытается распарсить его ответ. Но вот когда он падает - в ответе (в stdout) пусто, а то что сыпется в логи и stderr не интерпретируется. Поэтому имеем:

2022-11-25 09:16:49,093 INFO     Status: unknown -> none

Что говорит о том, что индикатор показывает иконку неактивности, но не ошибки.

Собственно можно попытаться эту ситуацию воспроизвести (тестирую я все равно на эмуляторе, который я могу заставить делать все что угодно) и приделать к такому безобразному поведению yanedx-disk переход в состояние ошибки. До только вот я не считаю что такое безобразие:

  1. поддается разумному анализу чтобы выдать разумное сообщение об ошибке.
  2. реально нужно обрабатывать, вместо того чтобы починить сам yandex-disk.

Индикатор вызывает yandex-disk с ограниченным числом команд (start, stop, но значитльно чаще status). Так вот все это заточено (и я считаю это логичным) на нормально работающий yandex-disk.

Я посмотрю на обработку статусов - может и не трудно там такое сделать как вы предлагаете. Но для этого я попрошу мне помочь.

Запустите (не чиня yandex-disk)

yandex-disk status 1>out.log 2>err.log

и

yandex-disk start 1>out1.log 2>err1.log

и пришлите сюда все 4 файлика out.log, err.log, out1.log, err1.log.

На основе этого можно будет понять как правильно обработать такую ситуацию как ошибку.

dmitry-t commented 1 year ago

@slytomcat Использовал workaround (перезагрузка) для исправления root cause, поэтому пока не могу собрать логи. Сделаю, как только воспроизведётся. Хотя логи были максимально похожими на те, что описаны в оригинале. Мне кажется, данных достаточно ;)

slytomcat commented 1 year ago

Сделал обработку ошибки старта. Можно пробовать из матсера.