Недавно мы предприняли несколько попыток оптимизации нативного кода одного приложения нашей компании для решения проблем с производительностью. Мы выпустили серую версию, содержащую упомянутые изменения, для группы пользователей для оценки эффективности оптимизаций. Однако после релиза мы наблюдали значительное количество отчетов о сбоях, причем сбои в основном ограничивались 64-битными смартфонами бренда VIVO, а также сообщалось о нескольких аналогичных проблемах на телефонах Samsung. Отчеты о сбоях показывают, что источником ошибки является функция memcpy libc, тогда как наши модификации не включали никаких изменений в путь вызова функции memcpy, а вместо этого были сосредоточены на изменении другой бизнес-логики. Может ли кто-нибудь поделиться идеями по устранению неполадок?
Ниже приведена трассировка стека одного из вышеупомянутых сбоев,
SIGSEGV(SEGV_ACCERR)
#00 pc 000000000004eebc /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+60) [arm64-v8a::3bac97c2012f8248ca610b4e558e17d1]
#01 pc 000000000014a4c8 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#02 pc 0000000000087aa8 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#03 pc 0000000000086c78 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#04 pc 000000000009e330 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#05 pc 000000000009bb20 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#06 pc 000000000008ab80 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#07 pc 00000000002072e4 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/oat/arm64/base.odex [arm64-v8a::515535bd03fc04c8a3440ba0667ca07e]
java:
.engine.logic..F(SourceFile:1)
.engine.logic.PinyinLogic.h0(SourceFile:3)
.engine.logic.state.PredictionState.o(SourceFile:29)
.engine.logic.state.PredictionState.k(SourceFile:165)
.engine.logic.state.PredictionState.a(SourceFile:5)
.engine.logic.PyLogicStateContext.a(SourceFile:16)
.engine.logic.thread.LogicHandler.handleMessage(SourceFile:20)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loopOnce(Looper.java:223)
android.os.Looper.loop(Looper.java:324)
android.os.HandlerThread.run(HandlerThread.java:67)
, и на других мобильных телефонах, которые также вызывают сбой при вызове memcpy, также происходят сбои, как показано ниже, при этом верхняя часть стека вызовов аналогична приведенной ниже, по-видимому, более специфичный для платформы вариант memcpy по имени __memcpy_aarch64_simd:
#00 pc 000000000009d6e0 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy_aarch64_simd+160) [arm64-v8a::5ba801faadc5ce7796fe32eab5104a1e]
Мы также попытались воспроизвести проблему, используя большое количество случайных входных данных (100 000 записей) на локальном телефоне VIVO, но сбоев приложения не произошло. Анализируя путь вызова от нашей локальной бизнес-логики к функции memcpy, мы смогли точно определить файл и номер строки каждого уровня в стеке вызовов сбоя. Однако наши модификации не присутствовали непосредственно в пути вызова, приводящем к сбою. Это привело нас в замешательство и отсутствие четкого подхода к устранению неполадок, поскольку у нас нет прямых подсказок или конкретного направления для расследования.
Сбои в основном распространяются на (1) Android 13, уровень 33 и (2) Android 14, уровень 34
, как показано ниже из онлайн-отчетов о сбоях
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 14,level 34
Подробнее здесь: https://stackoverflow.com/questions/784 ... ivo-samsun
Сбой memcpy в собственной логике общих объектов на конкретном устройстве (VIVO/Samsung) и только на 64-битных устройства ⇐ Android
Форум для тех, кто программирует под Android
1714970854
Anonymous
Недавно мы предприняли несколько попыток оптимизации нативного кода одного приложения нашей компании для решения проблем с производительностью. Мы выпустили серую версию, содержащую упомянутые изменения, для группы пользователей для оценки эффективности оптимизаций. Однако после релиза мы наблюдали значительное количество отчетов о сбоях, причем сбои в основном ограничивались 64-битными смартфонами бренда VIVO, а также сообщалось о нескольких аналогичных проблемах на телефонах Samsung. Отчеты о сбоях показывают, что источником ошибки является функция memcpy libc, тогда как наши модификации не включали никаких изменений в путь вызова функции memcpy, а вместо этого были сосредоточены на изменении другой бизнес-логики. Может ли кто-нибудь поделиться идеями по устранению неполадок?
Ниже приведена трассировка стека одного из вышеупомянутых сбоев,
SIGSEGV(SEGV_ACCERR)
#00 pc 000000000004eebc /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+60) [arm64-v8a::3bac97c2012f8248ca610b4e558e17d1]
#01 pc 000000000014a4c8 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#02 pc 0000000000087aa8 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#03 pc 0000000000086c78 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#04 pc 000000000009e330 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#05 pc 000000000009bb20 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#06 pc 000000000008ab80 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/lib/arm64/.so [arm64-v8a::2b50f378ff7e1b8d1d2b6ba552079baf]
#07 pc 00000000002072e4 /data/app/~~k3_ers-e6zmrSs_FANzwIg==/.-yFrQvavwtQa6pbKyOTxrKA==/oat/arm64/base.odex [arm64-v8a::515535bd03fc04c8a3440ba0667ca07e]
java:
.engine.logic..F(SourceFile:1)
.engine.logic.PinyinLogic.h0(SourceFile:3)
.engine.logic.state.PredictionState.o(SourceFile:29)
.engine.logic.state.PredictionState.k(SourceFile:165)
.engine.logic.state.PredictionState.a(SourceFile:5)
.engine.logic.PyLogicStateContext.a(SourceFile:16)
.engine.logic.thread.LogicHandler.handleMessage(SourceFile:20)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loopOnce(Looper.java:223)
android.os.Looper.loop(Looper.java:324)
android.os.HandlerThread.run(HandlerThread.java:67)
, и на других мобильных телефонах, которые также вызывают сбой при вызове memcpy, также происходят сбои, как показано ниже, при этом верхняя часть стека вызовов аналогична приведенной ниже, по-видимому, более специфичный для платформы вариант memcpy по имени __memcpy_aarch64_simd:
#00 pc 000000000009d6e0 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy_aarch64_simd+160) [arm64-v8a::5ba801faadc5ce7796fe32eab5104a1e]
Мы также попытались воспроизвести проблему, используя большое количество случайных входных данных (100 000 записей) на локальном телефоне VIVO, но сбоев приложения не произошло. Анализируя путь вызова от нашей локальной бизнес-логики к функции memcpy, мы смогли точно определить файл и номер строки каждого уровня в стеке вызовов сбоя. Однако наши модификации не присутствовали непосредственно в пути вызова, приводящем к сбою. Это привело нас в замешательство и отсутствие четкого подхода к устранению неполадок, поскольку у нас нет прямых подсказок или конкретного направления для расследования.
Сбои в основном распространяются на (1) Android 13, уровень 33 и (2) Android 14, уровень 34
, как показано ниже из онлайн-отчетов о сбоях
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 14,level 34
Android 14,level 34
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 13,level 33
Android 14,level 34
Подробнее здесь: [url]https://stackoverflow.com/questions/78434567/memcpy-crashes-in-native-shared-object-logic-on-particular-device-vivo-samsun[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия