Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-28514] iOS: Ti.App.getArguments() crashes app on cold start when launched via universal link

GitHub Issuen/a
TypeBug
PriorityCritical
StatusClosed
ResolutionFixed
Resolution Date2021-08-05T13:59:03.000+0000
Affected Version/sn/a
Fix Version/sRelease 10.0.2
ComponentsiOS
Labelsgetarguments, ios, link
ReporterJonas Funk Johannessen
AssigneeJoshua Quick
Created2019-10-08T11:06:33.000+0000
Updated2021-08-05T13:59:03.000+0000

Description

We have just release our first version with SDK 8 (8.1.0.GA), updating from 7.5.1.GA. We have experienced a significant increase in Fatal Exception: NSInvalidArgumentException crashes with the new version – with no code changed. Going from 0 crashes a day to 375 a day. Below is the crash we are seeing. Happening when opening universal link when app is cold.
Fatal Exception: NSInvalidArgumentException
-[NSUserActivity unboundBridge:]: unrecognized selector sent to instance 0x283785440
Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x1a27f098c __exceptionPreprocess
1  libobjc.A.dylib                0x1a25190a4 objc_exception_throw
2  CoreFoundation                 0x1a26f443c -[NSOrderedSet initWithSet:copyItems:]
3  CoreFoundation                 0x1a27f4e08 ___forwarding___
4  CoreFoundation                 0x1a27f6bec _CF_forwarding_prep_0
5  TitaniumKit                    0x105ec8bbc (Missing)
6  JavaScriptCore                 0x1b15a4a64 <redacted>
7  JavaScriptCore                 0x1b1d40688 <redacted>
8  JavaScriptCore                 0x1b1d3f27c <redacted>
9  JavaScriptCore                 0x1b1d3ce54 <redacted>
10 JavaScriptCore                 0x1b1d3cd24 <redacted>
11 JavaScriptCore                 0x1b1a18150 <redacted>
12 JavaScriptCore                 0x1b19f4214 <redacted>
13 JavaScriptCore                 0x1b1a19bc0 <redacted>
14 JavaScriptCore                 0x1b19fc0e0 JSC::Heap::sweepSynchronously()
15 JavaScriptCore                 0x1b1a00780 <redacted>
16 JavaScriptCore                 0x1b1a0000c <redacted>
17 JavaScriptCore                 0x1b19fd09c <redacted>
18 JavaScriptCore                 0x1b19feeec <redacted>
19 JavaScriptCore                 0x1b19fcee0 <redacted>
20 JavaScriptCore                 0x1b1a05388 <redacted>
21 JavaScriptCore                 0x1b1a157e4 <redacted>
22 JavaScriptCore                 0x1b1a000bc <redacted>
23 JavaScriptCore                 0x1b19ffea8 _ZN3JSC4Heap19stopIfNecessarySlowEv
24 JavaScriptCore                 0x1b19f9c58 <redacted>
25 JavaScriptCore                 0x1b1e4f43c (Missing)
26 JavaScriptCore                 0x1b1b7bec8 <redacted>
27 JavaScriptCore                 0x1b156a2b4 <redacted>
28 JavaScriptCore                 0x1b157c128 <redacted>
29 JavaScriptCore                 0x1b157c128 <redacted>
30 JavaScriptCore                 0x1b157c128 <redacted>
31 JavaScriptCore                 0x1b157c128 <redacted>
32 JavaScriptCore                 0x1b157c128 <redacted>
33 JavaScriptCore                 0x1b155d7e8 <redacted>
34 JavaScriptCore                 0x1b1abb258 <redacted>
35 JavaScriptCore                 0x1b1ca5970 JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
36 JavaScriptCore                 0x1b15b73cc JSObjectCallAsFunction
37 TitaniumKit                    0x105ecbd04 __65-[KrollObject invokeCallbackForKey:withObject:thisObject:onDone:]_block_invoke
38 libdispatch.dylib              0x1a24bd610 _dispatch_call_block_and_release
39 libdispatch.dylib              0x1a24be184 _dispatch_client_callout
40 libdispatch.dylib              0x1a24701d0 _dispatch_main_queue_callback_4CF$VARIANT$mp
41 CoreFoundation                 0x1a276e3c4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
42 CoreFoundation                 0x1a27693b8 __CFRunLoopRun
43 CoreFoundation                 0x1a27688bc CFRunLoopRunSpecific
44 GraphicsServices               0x1ac5d4328 GSEventRunModal
45 UIKitCore                      0x1a67fe6d4 UIApplicationMain
46 Reshopper                      0x1045c2fcc main + 69 (main.m:69)
47 libdyld.dylib                  0x1a25f3460 (Missing)
Crashed: com.twitter.crashlytics.ios.exception
SIGABRT ABORT 0x00000001a25e8ebc
Crashed: com.twitter.crashlytics.ios.exception
0  Reshopper                      0x104e707a8 CLSProcessRecordAllThreads + 1699156
1  Reshopper                      0x104e707a8 CLSProcessRecordAllThreads + 1699156
2  Reshopper                      0x104e70664 CLSProcessRecordAllThreads + 1698832
3  Reshopper                      0x104e5fb54 CLSHandler + 1630464
4  Reshopper                      0x104e6e7d0 __CLSExceptionRecord_block_invoke + 1691004
5  libdispatch.dylib              0x1a24be184 _dispatch_client_callout + 16
6  libdispatch.dylib              0x1a2470c44 _dispatch_lane_barrier_sync_invoke_and_complete + 56
7  Reshopper                      0x104e6e264 CLSExceptionRecord + 1689616
8  Reshopper                      0x104e6e08c CLSExceptionRecordNSException + 1689144
9  Reshopper                      0x104e6dca0 CLSTerminateHandler() + 1688140
10 libc++abi.dylib                0x1a25be304 std::__terminate(void (*)()) + 16
11 libc++abi.dylib                0x1a25bdc58 __cxa_get_exception_ptr + 30
12 libc++abi.dylib                0x1a25bdc18 __cxxabiv1::exception_cleanup_func(_Unwind_Reason_Code, _Unwind_Exception*) + 122
13 libobjc.A.dylib                0x1a25191d0 _objc_exception_destructor(void*) + 354
14 CoreFoundation                 0x1a26f443c -[NSOrderedSet initWithSet:copyItems:] + 138
15 CoreFoundation                 0x1a27f4e08 ___forwarding___ + 1324
16 CoreFoundation                 0x1a27f6bec _CF_forwarding_prep_0 + 92
17 TitaniumKit                    0x105ec8bbc KrollFinalizer + 292
18 JavaScriptCore                 0x1b15a4a64 <redacted> + 104
19 JavaScriptCore                 0x1b1d40688 <redacted> + 168
20 JavaScriptCore                 0x1b1d3f27c <redacted> + 260
21 JavaScriptCore                 0x1b1d3ce54 <redacted> + 292
22 JavaScriptCore                 0x1b1d3cd24 <redacted> + 32
23 JavaScriptCore                 0x1b1a18150 <redacted> + 324
24 JavaScriptCore                 0x1b19f4214 <redacted> + 92
25 JavaScriptCore                 0x1b1a19bc0 <redacted> + 44
26 JavaScriptCore                 0x1b19fc0e0 JSC::Heap::sweepSynchronously() + 240
27 JavaScriptCore                 0x1b1a00780 <redacted> + 480
28 JavaScriptCore                 0x1b1a0000c <redacted> + 108
29 JavaScriptCore                 0x1b19fd09c <redacted> + 152
30 JavaScriptCore                 0x1b19feeec <redacted> + 2600
31 JavaScriptCore                 0x1b19fcee0 <redacted> + 348
32 JavaScriptCore                 0x1b1a05388 <redacted> + 36
33 JavaScriptCore                 0x1b1a157e4 <redacted> + 156
34 JavaScriptCore                 0x1b1a000bc <redacted> + 96
35 JavaScriptCore                 0x1b19ffea8 _ZN3JSC4Heap19stopIfNecessarySlowEv + 64
36 JavaScriptCore                 0x1b19f9c58 <redacted> + 156
37 JavaScriptCore                 0x1b1e4f43c JSC::Structure::materializePropertyTable(JSC::VM&, bool) + 848
38 JavaScriptCore                 0x1b1b7bec8 <redacted> + 668
39 JavaScriptCore                 0x1b156a2b4 <redacted> + 51332
40 JavaScriptCore                 0x1b157c128 <redacted> + 124664
41 JavaScriptCore                 0x1b157c128 <redacted> + 124664
42 JavaScriptCore                 0x1b157c128 <redacted> + 124664
43 JavaScriptCore                 0x1b157c128 <redacted> + 124664
44 JavaScriptCore                 0x1b157c128 <redacted> + 124664
45 JavaScriptCore                 0x1b155d7e8 <redacted> + 248
46 JavaScriptCore                 0x1b1abb258 <redacted> + 408
47 JavaScriptCore                 0x1b1ca5970 JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 184
48 JavaScriptCore                 0x1b15b73cc JSObjectCallAsFunction + 376
49 TitaniumKit                    0x105ecbd04 __65-[KrollObject invokeCallbackForKey:withObject:thisObject:onDone:]_block_invoke + 460
50 libdispatch.dylib              0x1a24bd610 _dispatch_call_block_and_release + 24
51 libdispatch.dylib              0x1a24be184 _dispatch_client_callout + 16
52 libdispatch.dylib              0x1a24701d0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1044
53 CoreFoundation                 0x1a276e3c4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
54 CoreFoundation                 0x1a27693b8 __CFRunLoopRun + 2004
55 CoreFoundation                 0x1a27688bc CFRunLoopRunSpecific + 464
56 GraphicsServices               0x1ac5d4328 GSEventRunModal + 104
57 UIKitCore                      0x1a67fe6d4 UIApplicationMain + 1936
58 Reshopper                      0x1045c2fcc main + 69 (main.m:69)
59 libdyld.dylib                  0x1a25f3460 <redacted> + 4

Comments

  1. Hans Knöchel 2019-10-08

    We see something familiar. It seems to be related to the UserActivity / Handoff API delegate. You should check in that direction. We will debug the native code internally as well.
  2. Jonas Funk Johannessen 2019-11-29

    Found out this is happening when opening universal links when app is started from cold. Did you look further into this Hans?
  3. Ray Belisle 2019-11-30

    We have been using universal links with 8.1.1 without any problems... Is it something you can replicate.
  4. Jonas Funk Johannessen 2019-12-02

    Yes, it can be replicated. Happens if you click on a universal link when app is cold. It *does* work if app is just in background.
  5. Jonas Funk Johannessen 2019-12-02

    Did some further digging. It appears that this is happening, if you open a universal link and asking for launchOptions through Ti.App.getArguments().
  6. Jonas Funk Johannessen 2019-12-02

    Listening for Ti.App.iOS handleUrl event fixes the issue
  7. Vijay Singh 2019-12-02

    [~jonasfunk] Can you see TIMOB-27354, if this can be helpful? Thanks!
  8. Jonas Funk Johannessen 2019-12-03

    Yes, that fixed the issue. Thank you.
  9. Hans Knöchel 2021-04-06

    This is actually still happening a lot for us, although using the handleurl event. Does anyone have a guess here?
  10. Joshua Quick 2021-07-29

    PR (master): https://github.com/appcelerator/titanium_mobile/pull/12988
  11. Ewan Harris 2021-08-05

    Merged to master and 10_0_X

JSON Source