App cra sh, Xcode11.4, iOS 10.3.3 10.3.4, iPhone 5 c / 5 iPad4 (armv7s) - PullRequest
7 голосов
/ 07 апреля 2020

Наше приложение cra sh на ОС 10.3.3 10.3.4, iPhone 5 c / 5 iPad4 (armv7s 32), скомпилированное Xcode 11.4, быстрая оптимизация включена. Мы находим точку регистрации P C на адрес дыры без виртуального адреса и без информации о стеке. Если мы закроем быструю оптимизацию, она сработает.

Так кто-нибудь найдет проблему и любое решение?

Несомненно, это связано с быстрой оптимизацией Xcode 11.4.

Я нахожу здесь тот же вопрос. https://www.reddit.com/r/iOSProgramming/comments/frcpsc/xcode_114_builds_crashes_on_ios_10/

Incident Identifier: 2224949E-E5E3-479C-9B08-4FD1473144B3
CrashReporter Key:   052c9a28855da965790a6dcc0885097a66ee4eff
Hardware Model:      iPad3,4
Process:             AAAAA [34872]
Path:                /private/var/containers/Bundle/Application/xxxxxx....
Identifier:          com.xxx.xxxxx
Version:             xxxx
Code Type:           ARM (Native)
Role:                Non UI
Parent Process:      launchd [1]
Coalition:           com.xxx.xxxxx [1932]


Date/Time:           2020-03-30 22:42:49.2564 +xxx
Launch Time:         2020-03-30 22:42:47.0000 +xxx
OS Version:          iPhone OS 10.3.3 (14G60)
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x015fa500
Triggered by Thread:  0

Thread 0 name:
Thread 0 Crashed:
0   ???                             0x015fa500 0 + 23045376

Ответы [ 2 ]

10 голосов
/ 15 апреля 2020

После большого количества анализа, такого как отладка журнала и инструкций, я уверен, что это ошибка оптимизации быстрого компилятора xcode 11.4. Подробно, оптимизация вызывает грязный указатель стека (fp) в точке открытия нового фрейма стека функций. Я покажу это в следующем.

Вот вспомогательная функция type metadata accessor for myapp.MainViewController at <compiler-generated>, сгенерированная компилятором в нашем mainviewcontroller.

enter image description here

<+ 0>, <+4 > это неправильно. Это должно быть

0x6cd85c <+0>:   push.w {r4, r5, r6, r7, lr}
0x6cd860 <+4>:   add  r7, sp, #0xc

r7 - fp. поэтому инструкция по ошибкам <+0> не сохраняет r7, а вложенные элементы <+4> делают r7 ниже, чем sp, что приводит к беспорядку во всем стеке. Так что это явно не так.

Вот что происходит, когда исполняются модули.

До: enter image description here

После: enter image description here

Весь стек теряется из-за ошибки fp.

И мы также можем это проверить в xcode 11.3. enter image description here <+0> <+2> соответствует нашим ожиданиям.

Таким образом, мы должны также перейти на xcode 11.3 и использовать исправление времени выполнения для адаптации нового iOS Функция SDK, которая должна быть вызвана в xcode 11.4.

1 голос
/ 14 апреля 2020

Мы также столкнулись с множественными сбоями на старых 32-битных устройствах с iOS 9 или 10. Перекомпиляция с Xcode 11.3.1 исправила эти случайные сбои в моем случае ...

Существует также открытое Ошибка для этой топи c на https://bugs.swift.org/browse/SR-12511

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