La simbología del informe de locking de iOS sin dsym: la dirección del símbolo fuera de las direcciones que se ven en el binary

Estoy tratando de simbolizar un informe de locking de iOS para el que no tengo el file dsym. Sé que no seré capaz de get una buena simbología de nombre de file: número de línea, pero descubrir en qué parte de la sección de ensamblaje del código es el locking será lo suficientemente bueno.

Para comenzar, aquí está el seguimiento de la stack del hilo bloqueado:

Thread 3 name: Dispatch queue: com.unity3d.WebOperationQueue :: NSOperation 0x1483250e0 (QOS: USER_INTERACTIVE) Thread 3 Crashed: 0 myapp 0x0000000100ec4738 0x100080000 + 14960440 1 myapp 0x000000010120e0fc 0x100080000 + 18407676 2 myapp 0x00000001011d7e00 0x100080000 + 18185728 3 myapp 0x0000000100085cfc 0x100080000 + 23804 4 CFNetwork 0x0000000185027780 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 80 ... 

Tengo un binary desencryption y verifiqué el uuid del informe de locking y las coincidencias binarias. Para simbolizar manualmente una dirección de stack, hago esto

 atos -arch arm64 -o myapp -l 0x100080000 0x0000000100ec4738 

y obtengo el resultado del command anterior como

 0x0000000100e44738 (in myapp) + 544 

Esto se espera parcialmente porque no tengo el file dsym.

Tenga en count que también se puede get 0x0000000100e44738 si calculamos

symbol address as = (slide + stack - load address)

diapositiva es 0x0000000100000000 (se encuentra como vmaddr de otool -arch arm64 -l myapp | grep -B 3 -A 8 -m 2 "__TEXT" )

por lo que 0x0000000100000000 + 0x0000000100ec4738 - 0x100080000 = 0x100e44738 igual que la dirección anterior que devolvió atos.

Ahora el problema es que no encuentro la dirección del símbolo 0x100e44738 en las direcciones de la sección TEXTO en el binary que obtengo usando el command otool debajo

 otool -tvV myapp 

El comienzo del command anterior se ve así.

 myapp: (__TEXT,__text) section __ZNK5physx14NpSceneQueries10multiQueryINS_12PxRaycastHitEEEbRKNS_15MultiQueryInputERNS_13PxHitCallbackIT_EENS_7PxFlagsINS_9PxHitFlag4EnumEtEEPKNS_12PxQueryCacheERKNS_17PxQueryFilterDataEPNS_21PxQueryFilterCallbackEPNS_20BatchQueryFilterDataE: 0000000101262f40 stp x28, x27, [sp, #-96]! 0000000101262f44 stp x26, x25, [sp, #16] 0000000101262f48 stp x24, x23, [sp, #32] 0000000101262f4c stp x22, x21, [sp, #48] 0000000101262f50 stp x20, x19, [sp, #64] 0000000101262f54 stp x29, x30, [sp, #80] ... 

Podemos ver claramente que la dirección inicial del otool -tvV (0x101262f40) es mayor que la symbol address (0x100e44738) del symbol address (0x100e44738) . Así que no puedo encontrar lo que eché de less o cómo hacerlo desde aquí.

Esta traza de stack es para una exception de SIGSEGV y no estoy seguro de si eso cambia nada. He intentado exactamente los mismos pasos de simbología manual en una aplicación de ejemplo de otro con la exception SIGABRT y veo que fue capaz de señalar el choque a la línea exacta en el ensamblado.

Cualquier ayuda o pointers es muy apreciada.

Parece un problema con una NSURLConnection . Por lo general, eso significa que hay un delegado que no está desajustado correctamente en dealloc ( NSURLConnection es asignar, no débil, por lo que debe configurarlo a cero manualmente). Busque lugares en su código que utilicen NSURLConnection u otro código de networking. Sea especialmente consciente de las vistas o viewController que se configuran como el delegado de la request de networking porque las vistas a menudo dejan la memory cuando el usuario abandona la página.