Jasonette / Jasonette/JASONETTE-iOS

(develop branch/iOS) getting exception thrown

Open
#246 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
5.2k
Forks
347
PR merge metrics
No merged PRs in 30d

Description

I've been trying to reproduce a problem where the app gets "stuck" showing the error.json, my server logs show no activity, I (re) open the app during the day and once in a while (at least once a day) it won't get past the error json. I have modified that file with:

```
"action": {
"type": "$href",
"options": {
"url": "{{$env.view.url}}",
"view": "jason",
"transition": "replace"
}
}
```

to "try again", and in most cases it works, but running the app under the debugger to try and see what's causing the error I get a breakpoint triggered with error code 1, The values are all non-null so I can't make out what's happening, it appears to be while releasing the memory that the problem happens. This is to do with setting session headers for web requests. I've cut/paste as much as I could out of Xcode to see if something here is useful.

```
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field {
if (value) {
self.HTTPHeaders[field] = value; <---- this is where the debugger shows the error exception
}
else {
[self.HTTPHeaders removeObjectForKey:field];
}
}
```
the break says code=1

```
CoreFoundation`_CFRelease:
0x183d72b50 <+0>: sub sp, sp, #0x70 ; =0x70
0x183d72b54 <+4>: stp x28, x27, [sp, #0x10]
0x183d72b58 <+8>: stp x26, x25, [sp, #0x20]
0x183d72b5c <+12>: stp x24, x23, [sp, #0x30]
0x183d72b60 <+16>: stp x22, x21, [sp, #0x40]
0x183d72b64 <+20>: stp x20, x19, [sp, #0x50]
0x183d72b68 <+24>: stp x29, x30, [sp, #0x60]
0x183d72b6c <+28>: add x29, sp, #0x60 ; =0x60
0x183d72b70 <+32>: mov x19, x0
0x183d72b74 <+36>: mov x21, x19
0x183d72b78 <+40>: ldr x8, [x21, #0x8]!
0x183d72b7c <+44>: tbnz w8, #0x15, 0x183d73030 ; <+1248>
0x183d72b80 <+48>: ubfx w22, w8, #8, #10
0x183d72b84 <+52>: tbnz w8, #0x17, 0x183d72c80 ; <+304>
0x183d72b88 <+56>: adrp x24, 150619
0x183d72b8c <+60>: ldrb w8, [x24, #0xfe0]
0x183d72b90 <+64>: cbnz w8, 0x183d72d04 ; <+436>
0x183d72b94 <+68>: mov x20, #-0x1
0x183d72b98 <+72>: adrp x23, 156108
0x183d72b9c <+76>: add x23, x23, #0x1e8 ; =0x1e8
0x183d72ba0 <+80>: orr x25, xzr, #0x100000000
0x183d72ba4 <+84>: mov x26, #-0x100000000
0x183d72ba8 <+88>: b 0x183d72bb0 ; <+96>
0x183d72bac <+92>: clrex
0x183d72bb0 <+96>: ldr x27, [x21]
0x183d72bb4 <+100>: lsr x8, x27, #32
0x183d72bb8 <+104>: cbz w8, 0x183d72ce4 ; <+404>
0x183d72bbc <+108>: cmp w8, #0x1 ; =0x1
0x183d72bc0 <+112>: b.eq 0x183d72be0 ; <+144>
0x183d72bc4 <+116>: add x8, x27, x26
0x183d72bc8 <+120>: ldaxr x9, [x21]
0x183d72bcc <+124>: cmp x9, x27
0x183d72bd0 <+128>: b.ne 0x183d72bac ; <+92>
0x183d72bd4 <+132>: stlxr w9, x8, [x21]
0x183d72bd8 <+136>: cbnz w9, 0x183d72bc8 ; <+120>
0x183d72bdc <+140>: b 0x183d72cdc ; <+396>
0x183d72be0 <+144>: ldr x8, [x23, x22, lsl #3]
0x183d72be4 <+148>: ldrb w9, [x8]
0x183d72be8 <+152>: tbz w9, #0x2, 0x183d72bfc ; <+172>
0x183d72bec <+156>: ldr x8, [x8, #0x48]
0x183d72bf0 <+160>: cbz x8, 0x183d72bfc ; <+172>
0x183d72bf4 <+164>: mov x0, x19
0x183d72bf8 <+168>: blr x8
0x183d72bfc <+172>: orr x8, x27, #0x400000
0x183d72c00 <+176>: ldaxr x9, [x21]
0x183d72c04 <+180>: cmp x9, x27
0x183d72c08 <+184>: b.ne 0x183d72bac ; <+92>
0x183d72c0c <+188>: stlxr w9, x8, [x21]
0x183d72c10 <+192>: cbnz w9, 0x183d72c00 ; <+176>
0x183d72c14 <+196>: ldr x8, [x23, x22, lsl #3]
0x183d72c18 <+200>: ldr x8, [x8, #0x20]
0x183d72c1c <+204>: cbz x8, 0x183d72c28 ; <+216>
0x183d72c20 <+208>: mov x0, x19
0x183d72c24 <+212>: blr x8
0x183d72c28 <+216>: ldr x8, [x21]
0x183d72c2c <+220>: cmp w22, #0x2 ; =0x2
0x183d72c30 <+224>: b.eq 0x183d72d14 ; <+452>
0x183d72c34 <+228>: and x9, x8, #0xffffffff00000000
0x183d72c38 <+232>: cmp x9, x25
0x183d72c3c <+236>: b.eq 0x183d72d14 ; <+452>
0x183d72c40 <+240>: and x9, x8, #0xffffffffffbfffff
0x183d72c44 <+244>: ldaxr x10, [x21]
0x183d72c48 <+248>: cmp x10, x8
0x183d72c4c <+252>: b.ne 0x183d72c5c ; <+268>
0x183d72c50 <+256>: stlxr w10, x9, [x21]
0x183d72c54 <+260>: cbnz w10, 0x183d72c44 ; <+244>
0x183d72c58 <+264>: b 0x183d72bb0 ; <+96>
0x183d72c5c <+268>: clrex
0x183d72c60 <+272>: ldr x8, [x21]
0x183d72c64 <+276>: and x9, x8, #0xffffffffffbfffff
0x183d72c68 <+280>: ldaxr x10, [x21]
0x183d72c6c <+284>: cmp x10, x8
0x183d72c70 <+288>: b.ne 0x183d72c5c ; <+268>
0x183d72c74 <+292>: stlxr w10, x9, [x21]
0x183d72c78 <+296>: cbnz w10, 0x183d72c68 ; <+280>
0x183d72c7c <+300>: b 0x183d72bb0 ; <+96>
0x183d72c80 <+304>: adrp x9, 156108
0x183d72c84 <+308>: add x9, x9, #0x1e8 ; =0x1e8
0x183d72c88 <+312>: ldr x9, [x9, x22, lsl #3]
0x183d72c8c <+316>: ldr x2, [x9, #0x50]
0x183d72c90 <+320>: cbz x2, 0x183d73044 ; <+1268>
0x183d72c94 <+324>: ldrb w9, [x9]
0x183d72c98 <+328>: tbz w9, #0x3, 0x183d73044 ; <+1268>
0x183d72c9c <+332>: ldrb w9, [x19, #0xb]
0x183d72ca0 <+336>: cmp w9, #0xff ; =0xff
0x183d72ca4 <+340>: b.ne 0x183d73044 ; <+1268>
0x183d72ca8 <+344>: orr x9, xzr, #0xfffffffeffffffff
0x183d72cac <+348>: cmp x8, x9
0x183d72cb0 <+352>: b.ls 0x183d73044 ; <+1268>
0x183d72cb4 <+356>: mov x0, #-0x1
0x183d72cb8 <+360>: mov x1, x19
0x183d72cbc <+364>: ldp x29, x30, [sp, #0x60]
0x183d72cc0 <+368>: ldp x20, x19, [sp, #0x50]
0x183d72cc4 <+372>: ldp x22, x21, [sp, #0x40]
0x183d72cc8 <+376>: ldp x24, x23, [sp, #0x30]
0x183d72ccc <+380>: ldp x26, x25, [sp, #0x20]
0x183d72cd0 <+384>: ldp x28, x27, [sp, #0x10]
0x183d72cd4 <+388>: add sp, sp, #0x70 ; =0x70
0x183d72cd8 <+392>: br x2
0x183d72cdc <+396>: ldrb w8, [x24, #0xfe0]
0x183d72ce0 <+400>: cbnz w8, 0x183d72d38 ; <+488>
0x183d72ce4 <+404>: ldp x29, x30, [sp, #0x60]
0x183d72ce8 <+408>: ldp x20, x19, [sp, #0x50]
0x183d72cec <+412>: ldp x22, x21, [sp, #0x40]
0x183d72cf0 <+416>: ldp x24, x23, [sp, #0x30]
0x183d72cf4 <+420>: ldp x26, x25, [sp, #0x20]
0x183d72cf8 <+424>: ldp x28, x27, [sp, #0x10]
0x183d72cfc <+428>: add sp, sp, #0x70 ; =0x70
0x183d72d00 <+432>: ret
0x183d72d04 <+436>: mov x0, x19
0x183d72d08 <+440>: bl 0x183cb82d8 ; CFGetRetainCount
0x183d72d0c <+444>: sub x20, x0, #0x1 ; =0x1
0x183d72d10 <+448>: b 0x183d72b98 ; <+72>
0x183d72d14 <+452>: orr x9, x8, #0x200000
0x183d72d18 <+456>: mov x10, #-0x100000000
0x183d72d1c <+460>: add x9, x9, x10
0x183d72d20 <+464>: ldaxr x10, [x21]
0x183d72d24 <+468>: cmp x10, x8
0x183d72d28 <+472>: b.ne 0x183d72d78 ; <+552>
0x183d72d2c <+476>: stlxr w10, x9, [x21]
0x183d72d30 <+480>: cbnz w10, 0x183d72d20 ; <+464>
0x183d72d34 <+484>: b 0x183d72da8 ; <+600>
0x183d72d38 <+488>: adrp x8, 150619
0x183d72d3c <+492>: ldr x5, [x8, #0xfe8]
0x183d72d40 <+496>: cbz x5, 0x183d72ce4 ; <+404>
0x183d72d44 <+500>: mov w0, #0x1d
0x183d72d48 <+504>: mov x1, x19
0x183d72d4c <+508>: mov x2, #0x0
0x183d72d50 <+512>: mov x3, x20
0x183d72d54 <+516>: mov x4, #0x0
0x183d72d58 <+520>: ldp x29, x30, [sp, #0x60]
0x183d72d5c <+524>: ldp x20, x19, [sp, #0x50]
0x183d72d60 <+528>: ldp x22, x21, [sp, #0x40]
0x183d72d64 <+532>: ldp x24, x23, [sp, #0x30]
0x183d72d68 <+536>: ldp x26, x25, [sp, #0x20]
0x183d72d6c <+540>: ldp x28, x27, [sp, #0x10]
0x183d72d70 <+544>: add sp, sp, #0x70 ; =0x70
0x183d72d74 <+548>: br x5
0x183d72d78 <+552>: clrex
0x183d72d7c <+556>: mov x8, #-0x100000000
0x183d72d80 <+560>: b 0x183d72d88 ; <+568>
0x183d72d84 <+564>: clrex
0x183d72d88 <+568>: ldr x9, [x21]
0x183d72d8c <+572>: orr x10, x9, #0x200000
0x183d72d90 <+576>: add x10, x10, x8
0x183d72d94 <+580>: ldaxr x11, [x21]
0x183d72d98 <+584>: cmp x11, x9
0x183d72d9c <+588>: b.ne 0x183d72d84 ; <+564>
0x183d72da0 <+592>: stlxr w11, x10, [x21]
0x183d72da4 <+596>: cbnz w11, 0x183d72d94 ; <+580>
0x183d72da8 <+600>: ldrb w8, [x24, #0xfe0]
0x183d72dac <+604>: cbnz w8, 0x183d73048 ; <+1272>
0x183d72db0 <+608>: cmp w22, #0x2 ; =0x2
0x183d72db4 <+612>: b.ne 0x183d72ddc ; <+652>
0x183d72db8 <+616>: mov x0, x19
0x183d72dbc <+620>: ldp x29, x30, [sp, #0x60]
0x183d72dc0 <+624>: ldp x20, x19, [sp, #0x50]
0x183d72dc4 <+628>: ldp x22, x21, [sp, #0x40]
0x183d72dc8 <+632>: ldp x24, x23, [sp, #0x30]
0x183d72dcc <+636>: ldp x26, x25, [sp, #0x20]
0x183d72dd0 <+640>: ldp x28, x27, [sp, #0x10]
0x183d72dd4 <+644>: add sp, sp, #0x70 ; =0x70
0x183d72dd8 <+648>: b 0x183d31d40 ; __CFAllocatorDeallocate
0x183d72ddc <+652>: adrp x8, 130957
0x183d72de0 <+656>: add x8, x8, #0x100 ; =0x100
0x183d72de4 <+660>: ldr x24, [x8]
0x183d72de8 <+664>: ldrsb w9, [x21]
0x183d72dec <+668>: tbnz w9, #0x1f, 0x183d72eb4 ; <+868>
0x183d72df0 <+672>: mov x20, x24
0x183d72df4 <+676>: tbnz x19, #0x3f, 0x183d72e84 ; <+820>
0x183d72df8 <+680>: ldr x10, [x19]
0x183d72dfc <+684>: ldr w9, [x19, #0x8]
0x183d72e00 <+688>: cbz x10, 0x183d72e2c ; <+732>
0x183d72e04 <+692>: adrp x11, 156112
0x183d72e08 <+696>: ldr x11, [x11, #0x1f0]
0x183d72e0c <+700>: cmp x10, x11
0x183d72e10 <+704>: b.eq 0x183d72e2c ; <+732>
0x183d72e14 <+708>: ubfx w11, w9, #8, #10
0x183d72e18 <+712>: adrp x12, 156110
0x183d72e1c <+716>: add x12, x12, #0x1e8 ; =0x1e8
0x183d72e20 <+720>: ldr x11, [x12, w11, uxtw #3]
0x183d72e24 <+724>: cmp x10, x11
0x183d72e28 <+728>: b.ne 0x183d72e60 ; <+784>
0x183d72e2c <+732>: and w10, w9, #0x3ff00
0x183d72e30 <+736>: cmp w10, #0x200 ; =0x200
0x183d72e34 <+740>: b.ne 0x183d72e48 ; <+760>
0x183d72e38 <+744>: mov x0, x19
0x183d72e3c <+748>: bl 0x183d31d30 ; __CFAllocatorGetAllocator
0x183d72e40 <+752>: mov x20, x0
0x183d72e44 <+756>: b 0x183d72e84 ; <+820>
0x183d72e48 <+760>: sxtb w9, w9
0x183d72e4c <+764>: sub x10, x19, #0x10 ; =0x10
0x183d72e50 <+768>: cmp w9, #0x0 ; =0x0
0x183d72e54 <+772>: csel x8, x8, x10, lt
0x183d72e58 <+776>: ldr x20, [x8]
0x183d72e5c <+780>: b 0x183d72e84 ; <+820>
0x183d72e60 <+784>: mov x20, x24
0x183d72e64 <+788>: tbz w10, #0x0, 0x183d72e84 ; <+820>
0x183d72e68 <+792>: adrp x12, 130942
0x183d72e6c <+796>: ldr x12, [x12, #0x198]
0x183d72e70 <+800>: ldr x12, [x12]
0x183d72e74 <+804>: and x10, x12, x10
0x183d72e78 <+808>: cmp x10, x11
0x183d72e7c <+812>: mov x20, x24
0x183d72e80 <+816>: b.eq 0x183d72e2c ; <+732>
0x183d72e84 <+820>: cmp x24, x20
0x183d72e88 <+824>: b.eq 0x183d72eb4 ; <+868>
0x183d72e8c <+828>: adrp x8, 194
0x183d72e90 <+832>: add x8, x8, #0xbe0 ; =0xbe0
0x183d72e94 <+836>: ldr x8, [x8]
0x183d72e98 <+840>: cmp x20, #0x0 ; =0x0
0x183d72e9c <+844>: ccmp x8, x20, #0x4, ne
0x183d72ea0 <+848>: b.ne 0x183d72ec0 ; <+880>
0x183d72ea4 <+852>: bl 0x183c9ea90 ; CFAllocatorGetDefault
0x183d72ea8 <+856>: cmp x24, x0
0x183d72eac <+860>: cset w25, eq
0x183d72eb0 <+864>: b 0x183d72ec4 ; <+884>
0x183d72eb4 <+868>: orr w25, wzr, #0x1
0x183d72eb8 <+872>: mov x20, x24
0x183d72ebc <+876>: b 0x183d72ec4 ; <+884>
0x183d72ec0 <+880>: mov w25, #0x0
0x183d72ec4 <+884>: adrp x8, 150619
0x183d72ec8 <+888>: ldrb w22, [x8, #0xff8]
0x183d72ecc <+892>: mov x0, x19
0x183d72ed0 <+896>: bl 0x182822630 ; object_getClass
0x183d72ed4 <+900>: mov x21, x0
0x183d72ed8 <+904>: cbz w22, 0x183d72f54 ; <+1028>
0x183d72edc <+908>: adrp x0, 156103
0x183d72ee0 <+912>: add x0, x0, #0x2d8 ; =0x2d8
0x183d72ee4 <+916>: bl 0x183e29db0 ; symbol stub for: -[NSOrderedSet sortedArrayFromRange:options:usingComparator:]
0x183d72ee8 <+920>: adrp x8, 156112
0x183d72eec <+924>: ldrsw x8, [x8, #0x1e8]
0x183d72ef0 <+928>: cmp w8, #0x1 ; =0x1
0x183d72ef4 <+932>: b.lt 0x183d72f2c ; <+988>
0x183d72ef8 <+936>: mov x9, #0x0
0x183d72efc <+940>: adrp x10, 156110
0x183d72f00 <+944>: add x10, x10, #0x1e8 ; =0x1e8
0x183d72f04 <+948>: ldr x11, [x10, x9, lsl #3]
0x183d72f08 <+952>: cmp x21, x11
0x183d72f0c <+956>: b.ne 0x183d72f20 ; <+976>
0x183d72f10 <+960>: ldr x11, [x23, x9, lsl #3]
0x183d72f14 <+964>: cbz x11, 0x183d72f20 ; <+976>
0x183d72f18 <+968>: ldr x22, [x11, #0x8]
0x183d72f1c <+972>: cbnz x22, 0x183d72f74 ; <+1060>
0x183d72f20 <+976>: add x9, x9, #0x1 ; =0x1
0x183d72f24 <+980>: cmp x9, x8
0x183d72f28 <+984>: b.lt 0x183d72f04 ; <+948>
0x183d72f2c <+988>: adrp x0, 156103
0x183d72f30 <+992>: add x0, x0, #0x2d8 ; =0x2d8
0x183d72f34 <+996>: bl 0x183e29dc8 ; symbol stub for: __copy_helper_block_.215
0x183d72f38 <+1000>: mov x0, x21
0x183d72f3c <+1004>: bl 0x182822630 ; object_getClass
0x183d72f40 <+1008>: cbz x0, 0x183d72f6c ; <+1052>
0x183d72f44 <+1012>: mov x0, x21
0x183d72f48 <+1016>: bl 0x18282d2c4 ; class_getName
0x183d72f4c <+1020>: mov x22, x0
0x183d72f50 <+1024>: b 0x183d72f80 ; <+1072>
0x183d72f54 <+1028>: mov x0, x21
0x183d72f58 <+1032>: bl 0x182822630 ; object_getClass
0x183d72f5c <+1036>: cbz x0, 0x183d73004 ; <+1204>
0x183d72f60 <+1040>: mov x0, x19
0x183d72f64 <+1044>: bl 0x1828302d8 ; objc_destructInstance
0x183d72f68 <+1048>: b 0x183d73004 ; <+1204>
0x183d72f6c <+1052>: mov x22, #0x0
0x183d72f70 <+1056>: b 0x183d72f80 ; <+1072>
0x183d72f74 <+1060>: adrp x0, 156103
0x183d72f78 <+1064>: add x0, x0, #0x2d8 ; =0x2d8
0x183d72f7c <+1068>: bl 0x183e29dc8 ; symbol stub for: __copy_helper_block_.215
0x183d72f80 <+1072>: adrp x8, 636
0x183d72f84 <+1076>: add x8, x8, #0xafc ; =0xafc
0x183d72f88 <+1080>: cmp x22, #0x0 ; =0x0
0x183d72f8c <+1084>: csel x8, x8, x22, eq
0x183d72f90 <+1088>: stp x8, xzr, [sp]
0x183d72f94 <+1092>: adrp x1, 636
0x183d72f98 <+1096>: add x1, x1, #0xb0c ; =0xb0c
0x183d72f9c <+1100>: add x0, sp, #0x8 ; =0x8
0x183d72fa0 <+1104>: bl 0x183e29198 ; symbol stub for: __destroy_helper_block_.150
0x183d72fa4 <+1108>: ldr x0, [sp, #0x8]
0x183d72fa8 <+1112>: bl 0x182832bc0 ; objc_lookUpClass
0x183d72fac <+1116>: mov x22, x0
0x183d72fb0 <+1120>: cbnz x22, 0x183d72fd0 ; <+1152>
0x183d72fb4 <+1124>: adrp x0, 636
0x183d72fb8 <+1128>: add x0, x0, #0x50d ; =0x50d
0x183d72fbc <+1132>: bl 0x182832bc0 ; objc_lookUpClass
0x183d72fc0 <+1136>: ldr x1, [sp, #0x8]
0x183d72fc4 <+1140>: mov x2, #0x0
0x183d72fc8 <+1144>: bl 0x18282f500 ; objc_duplicateClass
0x183d72fcc <+1148>: mov x22, x0
0x183d72fd0 <+1152>: ldr x0, [sp, #0x8]
0x183d72fd4 <+1156>: bl 0x183e296a8 ; symbol stub for: __copy_helper_block_.311
0x183d72fd8 <+1160>: mov x0, x21
0x183d72fdc <+1164>: bl 0x182822630 ; object_getClass
0x183d72fe0 <+1168>: cbz x0, 0x183d72fec ; <+1180>
0x183d72fe4 <+1172>: mov x0, x19
0x183d72fe8 <+1176>: bl 0x1828302d8 ; objc_destructInstance
0x183d72fec <+1180>: adrp x8, 150619
0x183d72ff0 <+1184>: ldrb w21, [x8, #0xff9]
0x183d72ff4 <+1188>: mov x0, x19
0x183d72ff8 <+1192>: mov x1, x22
0x183d72ffc <+1196>: bl 0x18282267c ; object_setClass
0x183d73000 <+1200>: cbz w21, 0x183d7301c ; <+1228>
0x183d73004 <+1204>: cmp w25, #0x0 ; =0x0
0x183d73008 <+1208>: orr x8, xzr, #0xfffffffffffffff0
0x183d7300c <+1212>: csel x8, xzr, x8, ne
0x183d73010 <+1216>: add x1, x19, x8
0x183d73014 <+1220>: mov x0, x20
0x183d73018 <+1224>: bl 0x183c9a5c0 ; CFAllocatorDeallocate
0x183d7301c <+1228>: cmp x24, x20
0x183d73020 <+1232>: b.eq 0x183d72ce4 ; <+404>
0x183d73024 <+1236>: mov x0, x20
0x183d73028 <+1240>: bl 0x183c9b228 ; CFRelease
0x183d7302c <+1244>: b 0x183d72ce4 ; <+404>
0x183d73030 <+1248>: adrp x8, 150618
0x183d73034 <+1252>: add x8, x8, #0x8b8 ; =0x8b8
0x183d73038 <+1256>: adrp x9, 635
0x183d7303c <+1260>: add x9, x9, #0xad7 ; =0xad7
0x183d73040 <+1264>: str x9, [x8, #0x8]
-> 0x183d73044 <+1268>: brk #0x1
```

Contributor guide

Open the contributing guide

Research direction

Start with setValue:forHTTPHeaderField: and the error.json retry action, then reproduce the intermittent iOS failure under Xcode while inspecting session-header updates. Done means identifying the cause of the exception and confirming that reopening the app no longer remains stuck on error.json.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, objective-c
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.