Здравствуйте, сталкнулся с такой странной проблемой. Я портирую существующую библиотеку на Android. Сегодня увидел странный креш:
| Цитата | Signal 11(SIGSEGV), code 1(SEGV_MAPERR) at 0x0005f662
|
Да, видно что адрес на 4 не делится, но это происходит в самом начале функции:
| Код | Dump of assembler code for function A::Method(): 0x0005f658 <+0>: push {r3, r4, r5, r6, r7, lr} 0x0005f65a <+2>: ldr r3, [pc, #96] ; (0x5f6bc A::Method()+100>) 0x0005f65c <+4>: movs r6, #0 0x0005f65e <+6>: adds r5, r0, #0 0x0005f660 <+8>: add r3, sp 0x0005f662 <+10>: str r6, [r3, #0] ; Вот тут это и падает 0x0005f664 <+12>: bl 0x60f40 <A::AnotherMethod()>
|
Код на C++ выглядит так:
| Код | void A::Method(void) { AnotherMethod(); // тут уже делаются други операции, но до них дело не доходит... }
|
явно ошибочный адрес образуется в [r3, #0], но я не понимаю почему. Буду рад любой помощи. |