Приложение QT падает на деструкторе std :: thread на устройствах Android 10 - PullRequest
2 голосов
/ 20 апреля 2020

Мое приложение падает на Android 10 устройствах со следующим стеком вызовов:

backtrace:
#00  pc 000000000006f06c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01  pc 00000000000500fc  /system/lib64/libc++.so (abort_message+232)
#02  pc 0000000000050218  /system/lib64/libc++.so (demangling_terminate_handler()+44)
#03  pc 00000000000646c4  /system/lib64/libc++.so (std::__terminate(void (*)())+12)
#04  pc 000000000006466c  /system/lib64/libc++.so (std::terminate()+52)
#05  pc 00000000000bb150  /system/lib64/libc++.so (std::__1::thread::~thread()+20)
#06  pc 00000000000d0f48  /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+212)
#07  pc 00000000000cc930  /apex/com.android.runtime/lib64/bionic/libc.so (exit+24)
#08  pc 0000000000032f30  /data/app/com.domain.myapp-Rs_sm5VrLR1Jj8QW6oYByA==/lib/arm64/libplugins_platforms_qtforandroid_arm64-v8a.so

Я понятия не имею, когда и почему это происходит, потому что я не могу воспроизвести это на своих устройствах и эмуляторах, но это интенсивно происходит на стороне пользователя и только на Android 10 (не в предыдущих Android версиях).

Моя QT версия - 5.14.2.

1 Ответ

1 голос
/ 06 мая 2020

Мы только что выпустили обновление для одной из наших игр, и похоже, что cra sh исправлено. Вот что мы сделали: Android 10 и Android 9 показывают другое поведение по умолчанию при использовании кнопки возврата Android. В Android 10 приложение закрывается, но на выходе консоли я вижу, что приложение зависает в oop примерно на 5 секунд, прежде чем оно действительно завершает работу. Этого не происходит на Android 9. Это вывод, который я получаю на устройстве Android 10, когда нажимаю кнопку «Назад» и приложение закрывается:

....
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent before read
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent after read, length = -1
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I
...

Я сейчас ловлю Android кнопка возврата везде В QML и когда пользователь действительно хочет выйти из приложения, я вызываю следующую пользовательскую функцию Java, чтобы корректно завершить работу:

public String quitApp() { // Qt C++ call

    try {
        finishAffinity();
        System.exit(0);

    } catch (Exception exc) {
        exc.printStackTrace();
        logException(exc);
    }
    return "";
}

Мы также реализовали то, что предложил Дэвид К. Хесс .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...