#25 Падения без сохранений

Closed
opened 3 years ago by toby3d · 16 comments

Автосохранение в заранее заданные папки не работает. Первая попытка приводит к повторному запросу выбора директории, а следующая - к тихому падению приложения или падению с попапом (см. скриншот). В конечном итоге ничего не сохраняется ни в каком виде.

Устройство Xiaomi Mi 5s Plus с MicroG для LineageOS 17.1 (Android 10). Сохранялка и Качалка установлены через F-Droid.

Автосохранение в заранее заданные папки не работает. Первая попытка [приводит к повторному запросу выбора директории](https://www.youtube.com/watch?v=kdiqh0fcyRI), а следующая - к тихому падению приложения или падению с попапом (см. скриншот). В конечном итоге ничего не сохраняется ни в каком виде. Устройство Xiaomi Mi 5s Plus с MicroG для LineageOS 17.1 (Android 10). Сохранялка и Качалка установлены через F-Droid.
Umnik commented 3 years ago
Owner

А это на любом файле или для конкретных примеров?

А это на любом файле или для конкретных примеров?
Maxim Lebedev commented 3 years ago
Poster

Любые файлы. Что с картинками, что с архивами или документами.

Больше напрягает то, что я заранее выдав права на директорию обязан заново их предоставлять в момент сохранения. Скорее всего права "доступа к хранилищу" всё равно потребуются. Но это не точно, я в мобильной разработке не силён.

Я готов поковырять ночные и тестовые сборки на себе, если необходимо.

Любые файлы. Что с картинками, что с архивами или документами. Больше напрягает то, что я заранее выдав права на директорию обязан заново их предоставлять в момент сохранения. Скорее всего права "доступа к хранилищу" всё равно потребуются. Но это не точно, я в мобильной разработке не силён. Я готов поковырять ночные и тестовые сборки на себе, если необходимо.
Umnik commented 3 years ago
Owner

А можешь логкат собрать? У меня нет никакой системы логгирования в приложении, чтобы исключить случайные утечки, так что мне хотябы сам стек трейс от Андроида увидеть.

adb logcat -c
adb logcat -v threadtime > file.txt
*воспроизвести падение*
Ctrl+C

И пришли файл. Если необходимо исключить из лога потенциально приватные данные, то скопируй мне только конец, где будет написано FATAL что-нибудь. Ну там будет очевидно, где начинается и заканчивается стектрейс.

Более подробно расписать, как логкат снимать? Хотя у тебя Линейдж, так что ты знаешь, я думаю.

А можешь логкат собрать? У меня нет никакой системы логгирования в приложении, чтобы исключить случайные утечки, так что мне хотябы сам стек трейс от Андроида увидеть. ``` adb logcat -c adb logcat -v threadtime > file.txt *воспроизвести падение* Ctrl+C ``` И пришли файл. Если необходимо исключить из лога потенциально приватные данные, то скопируй мне только конец, где будет написано FATAL что-нибудь. Ну там будет очевидно, где начинается и заканчивается стектрейс. Более подробно расписать, как логкат снимать? Хотя у тебя Линейдж, так что ты знаешь, я думаю.
Umnik commented 3 years ago
Owner

В целом, второй раз он у тебя спрашивает разрешения не на картинку, а на документы, на самом деле, потому что шарится не картинка, а текст. Так что второй раз можно указать папку для документов. Но это ответ на то, почему 2 раза спрашивает, а не на то, почему падает.

В целом, второй раз он у тебя спрашивает разрешения не на картинку, а на документы, на самом деле, потому что шарится не картинка, а текст. Так что второй раз можно указать папку для документов. Но это ответ на то, почему 2 раза спрашивает, а не на то, почему падает.
Maxim Lebedev commented 3 years ago
Poster

logcat с процессом выбора автосохранения дважды: первая попытка ничем не отзывается, а на второй - уже сообщение о падении, на которой я остановил запись.

[logcat с процессом](https://gist.github.com/toby3d/458ec3fadeb17f494e54c5478467aa92) выбора автосохранения дважды: первая попытка ничем не отзывается, а на второй - уже сообщение о падении, на которой я остановил запись.
Umnik commented 3 years ago
Owner

Ага, спасибо, изучу.

Ага, спасибо, изучу.
Umnik commented 3 years ago
Owner

Очень странное падение. Якобы нет файла, но я не использую доступ к файлам в приципе. Точно сказать сходу не могу, что не так, потому что релизные сборки обфусцируются частично и там имена методов и строки поехали.

Вот сборка без обфускации. Логов в ней тоже пока нет. Дай стектрейс с ней, я хоть гляну, куда логи добавить, чтобы понять, что происходит.

Очень странное падение. Якобы нет файла, но я не использую доступ к файлам в приципе. Точно сказать сходу не могу, что не так, потому что релизные сборки обфусцируются частично и там имена методов и строки поехали. Вот сборка без обфускации. Логов в ней тоже пока нет. Дай стектрейс с ней, я хоть гляну, куда логи добавить, чтобы понять, что происходит.
Umnik commented 3 years ago
Owner

https://cloud.myachin.xyz/index.php/s/YssaqwyHHrMnoD6

Не туда нажал и закрыл, вместо ссылки.

В общем, дай лог с падением на этой сборке.

А что касается 2х запросов — это не баг, но это я выше описал. Для документов отдельно тоже разреши папку.

https://cloud.myachin.xyz/index.php/s/YssaqwyHHrMnoD6 Не туда нажал и закрыл, вместо ссылки. В общем, дай лог с падением на этой сборке. А что касается 2х запросов — это не баг, но это я выше описал. Для документов отдельно тоже разреши папку.
Maxim Lebedev commented 3 years ago
Poster

logcat c дебажной сборкой. В районе 14-й секунды была первая попытка сохранить файл, а секунд через 10 - вторая, приводящая к падению.

Причём с этой сборкой в настройках предварительно указана директория только для изображений (как и раньше), но больше нет запроса директории для сохранения документов после первой попытки.

[logcat](https://gist.github.com/toby3d/f80c1ccbf6f2c512bf55b0c40a5cbc68) c дебажной сборкой. В районе 14-й секунды была первая попытка сохранить файл, а секунд через 10 - вторая, приводящая к падению. Причём с этой сборкой в настройках предварительно указана директория только для изображений (как и раньше), но больше нет запроса директории для сохранения документов после первой попытки.
Umnik commented 3 years ago
Owner

Если я правильно понимаю, на момент, когда Сохранялка обращается к владельцу файла за данными, владелец эти данные уже убил. Владельцем является Музей 3 приложение в данном случае.

Вопросы:

  1. Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится?
  2. Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? То есть когда Качалка вытянет картику по ссылке, а затем предоставит доступ Сохранялке
  3. Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити?

В общем и в целом, как бы то ни было, я могу несколько переделать сохранялку. Чтобы она сразу забирала контент в себя, а только потом задавала вопрос юзеру. Если юзер всё сделает правильно, но сохранит объект. И при любом раскладе удалит объект, если его никто не забрал за Х минут. Так делает Качалка, например. Вот эту логику могу забрать в Сохранялку ещё.

Но до этого хочется понять наверняка, что происходит. А не гадать.

Если я правильно понимаю, на момент, когда Сохранялка обращается к владельцу файла за данными, владелец эти данные уже убил. Владельцем является Музей 3 приложение в данном случае. Вопросы: 1. Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится? 2. Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? То есть когда Качалка вытянет картику по ссылке, а затем предоставит доступ Сохранялке 3. Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити? В общем и в целом, как бы то ни было, я могу несколько переделать сохранялку. Чтобы она сразу забирала контент в себя, а только потом задавала вопрос юзеру. Если юзер всё сделает правильно, но сохранит объект. И при любом раскладе удалит объект, если его никто не забрал за Х минут. Так делает Качалка, например. Вот эту логику могу забрать в Сохранялку ещё. Но до этого хочется понять наверняка, что происходит. А не гадать.
Umnik commented 3 years ago
Owner

Попробуй на этом приложении: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab

Только проверять нужно:

  1. Только на картинках
  2. Выбирать тот, который помечен как DEBUG. См. скриншот:
Попробуй на этом приложении: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab Только проверять нужно: 1. Только на картинках 2. Выбирать тот, который помечен как DEBUG. См. скриншот:
Umnik commented 3 years ago
Owner

Здарова.

Вот ещё обновление: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab

Полностью переписал механизм сохранения данных. Теперь во-первых не будет ложного запроса при шаринге ссылки, во-вторых файл сразу же утягивается в кеш и только потом начинается его обработка. При разрушении активити по любой причине (хоть штаное завершение, хоть падение) кеш очищается.

Можешь посмотреть?

Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.

Здарова. Вот ещё обновление: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab Полностью переписал механизм сохранения данных. Теперь во-первых не будет ложного запроса при шаринге ссылки, во-вторых файл сразу же утягивается в кеш и только потом начинается его обработка. При разрушении активити по любой причине (хоть штаное завершение, хоть падение) кеш очищается. Можешь посмотреть? Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.
Maxim Lebedev commented 3 years ago
Poster

Сорян за столько долгое молчание. Я переезжал и было вообще не до компьютерно-телефонных дел.

Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.

Это проблема, так как кастомные сборки не хотят устанавливаться поверх уже установленного приложения. Приходится сносить оригинал и ставить кастомную с потерей уже настроенных директорий.

Можешь посмотреть?

Накатил, попробовал, на основе ситуации описанной выше, только ручное сохранение и результаты смешанные: то как и раньше падает на второй попытке пошарить файл, то при шаринге картинки предлагает сохранить (внезапно) текст.


Всё это началось и продолжается в пределах приложения живых обоев Muzei. Я пробую сохранять текущие обои встроенного плагина "Painting of the day" и любые текущие обои плагина Pixiv for Muzei. Можешь попробовать накатить эти приложения и воспроизвести проблемы локально. Я подозреваю что дело отнюдь не в ОС или модели устройства, а в механизме шаринга конкретно оттуда.

Отвечая на вопросы ранее с последней предоставленной тобой сборкой:

Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится?

В мобильном огнелисе шеринг пикч в сохранялку работает корректно.

Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет?

Открытие картинки в огнелисе в новой вкладке и последующий шаринг вкладки в сохранялку работает корректно.

Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные?

Не пользуюсь сторонними или встроенными оптимизаторами.

Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити?

Настройка "Лимит фоновых процессов" установлена в "Стандартное значение", опция "Вытеснение фоновых Activity" отключена.

Сорян за столько долгое молчание. Я переезжал и было вообще не до компьютерно-телефонных дел. > Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение. Это проблема, так как кастомные сборки не хотят устанавливаться поверх уже установленного приложения. Приходится сносить оригинал и ставить кастомную с потерей уже настроенных директорий. > Можешь посмотреть? Накатил, попробовал, на основе ситуации описанной выше, только ручное сохранение и результаты смешанные: то как и раньше падает на второй попытке пошарить файл, то при шаринге картинки предлагает сохранить (внезапно) текст. --- Всё это началось и продолжается в пределах приложения живых обоев [Muzei](https://f-droid.org/en/packages/net.nurik.roman.muzei/). Я пробую сохранять текущие обои встроенного плагина "Painting of the day" и любые текущие обои плагина [Pixiv for Muzei](https://f-droid.org/en/packages/com.antony.muzei.pixiv/). Можешь попробовать накатить эти приложения и воспроизвести проблемы локально. Я подозреваю что дело отнюдь не в ОС или модели устройства, а в механизме шаринга конкретно оттуда. Отвечая на вопросы ранее с последней предоставленной тобой сборкой: > Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится? В мобильном огнелисе шеринг пикч в сохранялку работает корректно. > Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? Открытие картинки в огнелисе в новой вкладке и последующий шаринг вкладки в сохранялку работает корректно. > Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не пользуюсь сторонними или встроенными оптимизаторами. > Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити? Настройка "Лимит фоновых процессов" установлена в "Стандартное значение", опция "Вытеснение фоновых Activity" отключена.
Umnik commented 3 years ago
Owner

Спасибо. Ещё поисследую позже. Надо пока текущую сборку стабилизировать, т.к. в ней уже есть ради чего релиз делать.

Спасибо. Ещё поисследую позже. Надо пока текущую сборку стабилизировать, т.к. в ней уже есть ради чего релиз делать.
Umnik commented 3 years ago
Owner

Частично исправлено в версии 1.12

Приложение посылает не совсем корректный интент. А точнее — сообщает, что файла mimeType image/*. Приложение же пытается сохранять объекты исходя из конкретного типа. Т.к. там просто звёздочка, была проблема. Это и исправено в 1.12 частично. Частично, потому что:

  1. Определяется такой маймТайп и файл пытаюсь распознать по заголовку. Сейчас есть распознавание только для pdf и jpeg. Если картинки в жпеге, то проблемы не будет. Если картинки есть в других форматах, то сообщи, пожалуйста, в каких именно. Добавлю и их распознование
  2. Музей без плагина шарит реально текст, а не картинку. Так что приложение честно просит сохранять текст. А ещё оно иногда, в первый раз, вообще может ничего не прислать. Не понятно почему, возможно оно из сети подгружает данные и не успевает их вытянуть. С плагином пока такого не случалось — сразу картинки шлёт

В общем, можешь посмотреть сборку 1.12, которая вот тут прицеплена: https://notabug.org/Umnik/SaveTo/releases Эта версия и будет собрана F-Droid'ом на следующей неделе. Ну, только с другой подписью, понятное дело.

Частично исправлено в версии 1.12 Приложение посылает не совсем корректный интент. А точнее — сообщает, что файла mimeType `image/*`. Приложение же пытается сохранять объекты исходя из конкретного типа. Т.к. там просто звёздочка, была проблема. Это и исправено в 1.12 частично. Частично, потому что: 1. Определяется такой маймТайп и файл пытаюсь распознать по заголовку. Сейчас есть распознавание только для pdf и jpeg. Если картинки в жпеге, то проблемы не будет. Если картинки есть в других форматах, то сообщи, пожалуйста, в каких именно. Добавлю и их распознование 2. Музей без плагина шарит реально текст, а не картинку. Так что приложение честно просит сохранять текст. А ещё оно иногда, в первый раз, вообще может ничего не прислать. Не понятно почему, возможно оно из сети подгружает данные и не успевает их вытянуть. С плагином пока такого не случалось — сразу картинки шлёт В общем, можешь посмотреть сборку 1.12, которая вот тут прицеплена: https://notabug.org/Umnik/SaveTo/releases Эта версия и будет собрана F-Droid'ом на следующей неделе. Ну, только с другой подписью, понятное дело.
Umnik commented 3 years ago
Owner

А, ну и сейчас в принципе не должно падать, т.к. теперь пытаюсь определять не ожидаемые данные и в худшем случае игнорирую их

А, ну и сейчас в принципе не должно падать, т.к. теперь пытаюсь определять не ожидаемые данные и в худшем случае игнорирую их
Sign in to join this conversation.
No Milestone
No assignee
2 Participants
Loading...
Cancel
Save
There is no content yet.