Hi,
Are there any errors printed to the console before the freeze happens? If, in Xcode, you pause the execution of the app while it is frozen, can you see in which part of the code it is stuck? Is it possible for you to test on a different, possible not iOS 12 device, and see if the problem still occurs there?
Thank you,
Alexandru
Alexandru — Sorry for the delay in providing the information you requested on this. We’re just getting back to this project after the holidays.
We have upgraded our test iPhone SE to iOS 12.1, and the most recent version of the Wikitude Unity SDK.
This has significantly improved performance, but we are still seeing frequent freezes of a second or so upon execution of a scan. After a minute or two of usage, we are seeing indefinite freezes. These do not appear to be crashes, though. If we minimize the frozen app (loading the main iPhone screen), and then call the still-running app up again, it usually operates properly again for another minute or two until freezing again.
This does not happen in the Unity development environment for either the iPhone or Android environments, and the Android version runs perfectly on both a quite-new Google Pixel running Android 9, or an older Google Nexus 5 running Android 5.
The iPhone version worked very well (better than on Android), when the test iPhone was running iOS 11 with the Wikitude Unity version from last fall.
When we run the iPhone app in Xcode and view the debugger, we see that CPU usage spikes during the short freezes of one or two seconds. After a minute or two of usage, CPU usage goes up to 184% (or more), which correlates with the indefinite freezes. See the attached screen capture.
We do occasionally see crashes, after extended test sessions. Log files for those are attached.
And as requested, we paused execution of the app when it was running in Xcode and experienced a freeze. Here is the output in the debug console.
Thanks for looking into this — if we can resolve this iPhone issue, we can show this to our client and hopefully get some significant revenue for both our companies.
FrontRangeAR4PMPDev`GC_header_cache_miss:
0x1059faf3c <+0>: lsr x9, x0, #22
0x1059faf40 <+4>: ubfx x8, x0, #22, #11
0x1059faf44 <+8>: adrp x13, 1371
0x1059faf48 <+12>: add x13, x13, #0xdc0 ; =0xdc0
0x1059faf4c <+16>: add x8, x13, x8, lsl #3
0x1059faf50 <+20>: mov w10, #0x60000
0x1059faf54 <+24>: movk w10, #0xe4e0
0x1059faf58 <+28>: add x12, x8, x10
0x1059faf5c <+32>: mov w8, #0x60000
0x1059faf60 <+36>: movk w8, #0xe4d8
0x1059faf64 <+40>: ldr x10, [x13, x8]
0x1059faf68 <+44>: mov w8, #0x2018
0x1059faf6c <+48>: mov x11, x12
0x1059faf70 <+52>: ldr x14, [x11]
0x1059faf74 <+56>: ldr x15, [x14, #0x2010]
0x1059faf78 <+60>: add x11, x14, x8
0x1059faf7c <+64>: cmp x15, x9
0x1059faf80 <+68>: ccmp x14, x10, #0x4, ne
0x1059faf84 <+72>: b.ne 0x1059faf70 ; <+52> at headers.c:63
0x1059faf88 <+76>: ubfx x11, x0, #12, #10
0x1059faf8c <+80>: ldr x8, [x14, x11, lsl #3]
0x1059faf90 <+84>: cmp x8, #0xfff ; =0xfff
0x1059faf94 <+88>: b.hi 0x1059fb068 ; <+300> at headers.c:99
0x1059faf98 <+92>: adrp x14, 1101
0x1059faf9c <+96>: ldr w14, [x14, #0x680]
0x1059fafa0 <+100>: cbz w14, 0x1059fb0e4 ; <+424> at headers.c:108
0x1059fafa4 <+104>: cbz x8, 0x1059fb0f4 ; <+440> [inlined] GC_find_header at blacklst.c:210
0x1059fafa8 <+108>: and x14, x0, #0xfffffffffffff000
0x1059fafac <+112>: mov w15, #0x60000
0x1059fafb0 <+116>: movk w15, #0xe4e0
0x1059fafb4 <+120>: mov w16, #0x2018
0x1059fafb8 <+124>: sub x14, x14, x8, lsl #12
0x1059fafbc <+128>: lsr x8, x14, #22
0x1059fafc0 <+132>: ubfx x17, x14, #22, #11
0x1059fafc4 <+136>: add x17, x13, x17, lsl #3
0x1059fafc8 <+140>: add x1, x17, x15
0x1059fafcc <+144>: ldr x17, [x1]
0x1059fafd0 <+148>: ldr x2, [x17, #0x2010]
0x1059fafd4 <+152>: add x1, x17, x16
0x1059fafd8 <+156>: cmp x17, x10
0x1059fafdc <+160>: ccmp x2, x8, #0x4, ne
0x1059fafe0 <+164>: b.ne 0x1059fafcc ; <+144> [inlined] GC_find_header + 16 at headers.c:72
0x1059fafe4 <+168>: ubfx x8, x14, #12, #10
0x1059fafe8 <+172>: ldr x8, [x17, x8, lsl #3]
0x1059fafec <+176>: cmp x8, #0x1, lsl #12 ; =0x1000
0x1059faff0 <+180>: b.lo 0x1059fafb8 ; <+124> at headers.c:71
0x1059faff4 <+184>: ldrb w13, [x8, #0x19]
0x1059faff8 <+188>: tbnz w13, #0x0, 0x1059fb160 ; <+548> at blacklst.c:216
0x1059faffc <+192>: tbnz w13, #0x2, 0x1059fb010 ; <+212> [inlined] GC_find_header at blacklst.c:210
0x1059fb000 <+196>: sub x13, x0, x14
0x1059fb004 <+200>: ldr x14, [x8, #0x20]
0x1059fb008 <+204>: cmp x13, x14
0x1059fb00c <+208>: b.lt 0x1059fb078 ; <+316> at headers.c:108
0x1059fb010 <+212>: ldr x8, [x12]
0x1059fb014 <+216>: ldr x13, [x8, #0x2010]
0x1059fb018 <+220>: mov w12, #0x2018
0x1059fb01c <+224>: add x12, x8, x12
0x1059fb020 <+228>: cmp x8, x10
0x1059fb024 <+232>: ccmp x13, x9, #0x4, ne
0x1059fb028 <+236>: b.ne 0x1059fb010 ; <+212> [inlined] GC_find_header at blacklst.c:210
0x1059fb02c <+240>: ubfx x10, x0, #12, #21
0x1059fb030 <+244>: ldr x8, [x8, x11, lsl #3]
0x1059fb034 <+248>: cbz x8, 0x1059fb270 ; <+820> [inlined] GC_add_to_black_list_stack at headers.c:79
0x1059fb038 <+252>: lsr x10, x10, #6
0x1059fb03c <+256>: adrp x8, 1369
0x1059fb040 <+260>: ldr x8, [x8, #0x8f8]
0x1059fb044 <+264>: ldr x8, [x8, x10, lsl #3]
0x1059fb048 <+268>: ubfx x9, x0, #12, #6
0x1059fb04c <+272>: orr w11, wzr, #0x1
0x1059fb050 <+276>: lsl x9, x11, x9
0x1059fb054 <+280>: and x8, x8, x9
0x1059fb058 <+284>: cbnz x8, 0x1059fb280 ; <+836> [inlined] GC_add_to_black_list_stack + 16 at headers.c:79
0x1059fb05c <+288>: mov x8, #0x0
0x1059fb060 <+292>: mov x0, x8
0x1059fb064 <+296>: ret
0x1059fb068 <+300>: ldrb w14, [x8, #0x19]
0x1059fb06c <+304>: tbnz w14, #0x2, 0x1059fb080 ; <+324> at headers.c:100
-> 0x1059fb070 <+308>: lsr x9, x0, #12
0x1059fb074 <+312>: stp x9, x8, [x1]
0x1059fb078 <+316>: mov x0, x8
0x1059fb07c <+320>: ret
0x1059fb080 <+324>: adrp x8, 1100
0x1059fb084 <+328>: ldr w8, [x8, #0x680]
0x1059fb088 <+332>: cbz w8, 0x1059fb16c ; <+560> [inlined] GC_add_to_black_list_normal at headers.c:100
0x1059fb08c <+336>: mov w8, #0x2018
0x1059fb090 <+340>: ldr x13, [x12]
0x1059fb094 <+344>: ldr x14, [x13, #0x2010]
0x1059fb098 <+348>: add x12, x13, x8
0x1059fb09c <+352>: cmp x13, x10
0x1059fb0a0 <+356>: ccmp x14, x9, #0x4, ne
0x1059fb0a4 <+360>: b.ne 0x1059fb090 ; <+340> [inlined] GC_find_header + 4 at blacklst.c:210
0x1059fb0a8 <+364>: ubfx x8, x0, #12, #21
0x1059fb0ac <+368>: ldr x9, [x13, x11, lsl #3]
0x1059fb0b0 <+372>: cbz x9, 0x1059fb14c ; <+528> [inlined] GC_add_to_black_list_stack at headers.c:84
0x1059fb0b4 <+376>: lsr x10, x8, #6
0x1059fb0b8 <+380>: adrp x8, 1369
0x1059fb0bc <+384>: ldr x8, [x8, #0x8f8]
0x1059fb0c0 <+388>: ldr x8, [x8, x10, lsl #3]
0x1059fb0c4 <+392>: ubfx x9, x0, #12, #6
0x1059fb0c8 <+396>: orr w11, wzr, #0x1
0x1059fb0cc <+400>: lsl x9, x11, x9
0x1059fb0d0 <+404>: and x8, x8, x9
0x1059fb0d4 <+408>: cbnz x8, 0x1059fb280 ; <+836> [inlined] GC_add_to_black_list_stack + 16 at headers.c:79
0x1059fb0d8 <+412>: mov x8, #0x0
0x1059fb0dc <+416>: mov x0, x8
0x1059fb0e0 <+420>: ret
0x1059fb0e4 <+424>: cbz x8, 0x1059fb1d8 ; <+668> [inlined] GC_add_to_black_list_normal at headers.c:94
0x1059fb0e8 <+428>: mov x8, #0x0
0x1059fb0ec <+432>: mov x0, x8
0x1059fb0f0 <+436>: ret
0x1059fb0f4 <+440>: mov w8, #0x2018
0x1059fb0f8 <+444>: ldr x13, [x12]
0x1059fb0fc <+448>: ldr x14, [x13, #0x2010]
0x1059fb100 <+452>: add x12, x13, x8
0x1059fb104 <+456>: cmp x13, x10
0x1059fb108 <+460>: ccmp x14, x9, #0x4, ne
0x1059fb10c <+464>: b.ne 0x1059fb0f8 ; <+444> [inlined] GC_find_header + 4 at blacklst.c:210
0x1059fb110 <+468>: ubfx x8, x0, #12, #21
0x1059fb114 <+472>: ldr x9, [x13, x11, lsl #3]
0x1059fb118 <+476>: cbz x9, 0x1059fb14c ; <+528> [inlined] GC_add_to_black_list_stack at headers.c:84
0x1059fb11c <+480>: lsr x10, x8, #6
0x1059fb120 <+484>: adrp x8, 1369
0x1059fb124 <+488>: ldr x8, [x8, #0x8f8]
0x1059fb128 <+492>: ldr x8, [x8, x10, lsl #3]
0x1059fb12c <+496>: ubfx x9, x0, #12, #6
0x1059fb130 <+500>: orr w11, wzr, #0x1
0x1059fb134 <+504>: lsl x9, x11, x9
0x1059fb138 <+508>: and x8, x8, x9
0x1059fb13c <+512>: cbnz x8, 0x1059fb280 ; <+836> [inlined] GC_add_to_black_list_stack + 16 at headers.c:79
0x1059fb140 <+516>: mov x8, #0x0
0x1059fb144 <+520>: mov x0, x8
0x1059fb148 <+524>: ret
0x1059fb14c <+528>: ubfx x9, x0, #12, #6
0x1059fb150 <+532>: orr w10, wzr, #0x1
0x1059fb154 <+536>: lsl x9, x10, x9
0x1059fb158 <+540>: lsr x10, x8, #6
0x1059fb15c <+544>: b 0x1059fb280 ; <+836> [inlined] GC_add_to_black_list_stack + 16 at headers.c:79
0x1059fb160 <+548>: mov x8, #0x0
0x1059fb164 <+552>: mov x0, x8
0x1059fb168 <+556>: ret
0x1059fb16c <+560>: and x8, x0, #0x7
0x1059fb170 <+564>: add x8, x13, x8
0x1059fb174 <+568>: mov w13, #0x62d0
0x1059fb178 <+572>: ldrb w8, [x8, x13]
0x1059fb17c <+576>: cbz w8, 0x1059fb264 ; <+808> at blacklst.c:195
0x1059fb180 <+580>: mov w8, #0x2018
0x1059fb184 <+584>: ldr x13, [x12]
0x1059fb188 <+588>: ldr x14, [x13, #0x2010]
0x1059fb18c <+592>: add x12, x13, x8
0x1059fb190 <+596>: cmp x13, x10
0x1059fb194 <+600>: ccmp x14, x9, #0x4, ne
0x1059fb198 <+604>: b.ne 0x1059fb184 ; <+584> [inlined] GC_find_header + 4 at blacklst.c:189
0x1059fb19c <+608>: ubfx x8, x0, #12, #21
0x1059fb1a0 <+612>: ldr x9, [x13, x11, lsl #3]
0x1059fb1a4 <+616>: cbz x9, 0x1059fb244 ; <+776> [inlined] GC_add_to_black_list_normal at headers.c:94
0x1059fb1a8 <+620>: lsr x10, x8, #6
0x1059fb1ac <+624>: adrp x8, 1369
0x1059fb1b0 <+628>: ldr x8, [x8, #0x8e8]
0x1059fb1b4 <+632>: ldr x8, [x8, x10, lsl #3]
0x1059fb1b8 <+636>: ubfx x9, x0, #12, #6
0x1059fb1bc <+640>: orr w11, wzr, #0x1
0x1059fb1c0 <+644>: lsl x9, x11, x9
0x1059fb1c4 <+648>: and x8, x8, x9
0x1059fb1c8 <+652>: cbnz x8, 0x1059fb254 ; <+792> [inlined] GC_add_to_black_list_normal + 16 at headers.c:94
0x1059fb1cc <+656>: mov x8, #0x0
0x1059fb1d0 <+660>: mov x0, x8
0x1059fb1d4 <+664>: ret
0x1059fb1d8 <+668>: and x8, x0, #0x7
0x1059fb1dc <+672>: add x8, x13, x8
0x1059fb1e0 <+676>: mov w13, #0x62d0
0x1059fb1e4 <+680>: ldrb w8, [x8, x13]
0x1059fb1e8 <+684>: cbz w8, 0x1059fb2a4 ; <+872> at headers.c:108
0x1059fb1ec <+688>: mov w8, #0x2018
0x1059fb1f0 <+692>: ldr x13, [x12]
0x1059fb1f4 <+696>: ldr x14, [x13, #0x2010]
0x1059fb1f8 <+700>: add x12, x13, x8
0x1059fb1fc <+704>: cmp x13, x10
0x1059fb200 <+708>: ccmp x14, x9, #0x4, ne
0x1059fb204 <+712>: b.ne 0x1059fb1f0 ; <+692> [inlined] GC_find_header + 4 at blacklst.c:189
0x1059fb208 <+716>: ubfx x8, x0, #12, #21
0x1059fb20c <+720>: ldr x9, [x13, x11, lsl #3]
0x1059fb210 <+724>: cbz x9, 0x1059fb244 ; <+776> [inlined] GC_add_to_black_list_normal at headers.c:94
0x1059fb214 <+728>: lsr x10, x8, #6
0x1059fb218 <+732>: adrp x8, 1369
0x1059fb21c <+736>: ldr x8, [x8, #0x8e8]
0x1059fb220 <+740>: ldr x8, [x8, x10, lsl #3]
0x1059fb224 <+744>: ubfx x9, x0, #12, #6
0x1059fb228 <+748>: orr w11, wzr, #0x1
0x1059fb22c <+752>: lsl x9, x11, x9
0x1059fb230 <+756>: and x8, x8, x9
0x1059fb234 <+760>: cbnz x8, 0x1059fb254 ; <+792> [inlined] GC_add_to_black_list_normal + 16 at headers.c:94
0x1059fb238 <+764>: mov x8, #0x0
0x1059fb23c <+768>: mov x0, x8
0x1059fb240 <+772>: ret
0x1059fb244 <+776>: ubfx x9, x0, #12, #6
0x1059fb248 <+780>: orr w10, wzr, #0x1
0x1059fb24c <+784>: lsl x9, x10, x9
0x1059fb250 <+788>: lsr x10, x8, #6
0x1059fb254 <+792>: mov x8, #0x0
0x1059fb258 <+796>: adrp x11, 1369
0x1059fb25c <+800>: ldr x11, [x11, #0x8f0]
0x1059fb260 <+804>: b 0x1059fb28c ; <+848> [inlined] GC_add_to_black_list_stack + 28 at headers.c:79
0x1059fb264 <+808>: mov x8, #0x0
0x1059fb268 <+812>: mov x0, x8
0x1059fb26c <+816>: ret
0x1059fb270 <+820>: ubfx x8, x0, #12, #6
0x1059fb274 <+824>: orr w9, wzr, #0x1
0x1059fb278 <+828>: lsl x9, x9, x8
0x1059fb27c <+832>: lsr x10, x10, #6
0x1059fb280 <+836>: mov x8, #0x0
0x1059fb284 <+840>: adrp x11, 1369
0x1059fb288 <+844>: ldr x11, [x11, #0x900]
0x1059fb28c <+848>: lsl x10, x10, #3
0x1059fb290 <+852>: ldr x12, [x11, x10]
0x1059fb294 <+856>: orr x9, x12, x9
0x1059fb298 <+860>: str x9, [x11, x10]
0x1059fb29c <+864>: mov x0, x8
0x1059fb2a0 <+868>: ret
0x1059fb2a4 <+872>: mov x8, #0x0
0x1059fb2a8 <+876>: mov x0, x8
0x1059fb2ac <+880>: ret
Hi,
Thank you for the detailed information. This is something we'd definitely want to fix, but we're unable to reproduce the issue internally.
Does this happen when running the example project without any modifications? If it doesn't, can you please tell us what the difference is between the sample and what your application is doing? Or, if possible, can you send us a project where we can reproduce the issue?
Thank you,
Alexandru
Alexandru -- To follow-up on this, you asked if we see this issue in the unmodified Wikitude example project.
We successfully built and installed the Wikitude example project (unmodified) last fall using iOS 11 and the Wikitude Unity SDK at the time. We did NOT see this issue then, and still do not when running that app on our test iPhone (which has been updated to iOS 12.1).
To see if it happens with iOS 12.1 and the most current Wikitude example project, we downloaded the most recent version of the example project. It runs perfectly within the Unity development environment. We built the Unity project and opened it in Xcode.
When we install and run this version on the test iPhone, we get messages that the build was successful, and the installation was successful. But it does not actually run on the iPhone (within Xcode), and shuts down the moment it starts.
The attached screen capture shows the error message within Xcode.
Hi,
The last issue can be fixed by adding the WikitudeSDK framework as an Embedded Binary, as mentioned in the documentation here.
Please send the project with the original problem to support@wikitude.com.
Thank you,
Alexandru
Ah. You are correct about the embedded binary. We have always done that in the past, but missed it (or did not save it) this one time.
We have sent the project files and some notes to the support@wikitude.com email address.
Thank you!
Christopher Ryan