NativeScript / NativeScript/plugins

Upgraded app fails to load in iOS, Assertion failed

Open
#504 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
206
Forks
123
Avg merge
2d 1h
Merged PRs (30d)
1

Description

I tried to upgrade a running app from 7.x to 8.5.2. The app fails to load on iOS (simulator and device) - log below. Here's the environment:
nativescript 8.5.3
@nativescript/core 8.5.3
@nativescript/ios 8.5.2
nativescript-ui-listview 15.2.3

The app fails to load, after the launch event completes, with this log:

====== Assertion failed ======
Native stack trace:
1 0x10db14b9d tns::Assert(bool, v8::Isolate*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) + 164
2 0x10db2f5b5 tns::Interop::WriteValue(v8::Localv8::Context, tns::TypeEncoding const*, void*, v8::Localv8::Value) + 5825
3 0x10db2deda tns::Interop::SetFFIParams(v8::Localv8::Context, tns::TypeEncoding const*, tns::FFICall*, int, int, tns::V8Args&) + 110
4 0x10db2da53 tns::Interop::CallFunctionInternal(tns::MethodCall&) + 401
5 0x10dad7d2a tns::ArgConverter::Invoke(v8::Localv8::Context, objc_class*, v8::Localv8::Object, tns::V8Args&, tns::MethodMeta const*, bool) + 1170
6 0x10daf8d2e tns::MetadataBuilder::InvokeMethod(v8::Localv8::Context, tns::MethodMeta const*, v8::Localv8::Object, tns::V8Args&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, bool) + 76
7 0x10daf87b9 tns::MetadataBuilder::PropertySetterCallback(v8::FunctionCallbackInfov8::Value const&) + 389
8 0x10dc19f31 v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) + 385
9 0x10dc194df v8::internal::MaybeHandlev8::internal::Object v8::internal::(anonymous namespace)::HandleApiCallHelper(v8::internal::Isolate*, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::FunctionTemplateInfo, v8::internal::Handlev8::internal::Object, v8::internal::BuiltinArguments) + 735
10 0x10dc18e09 v8::internal::Builtins::InvokeApiFunction(v8::internal::Isolate*, bool, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::Object, int, v8::internal::Handlev8::internal::Object, v8::internal::Handlev8::internal::HeapObject) + 777
11 0x10e04016d v8::internal::Object::SetPropertyWithAccessor(v8::internal::LookupIterator
, v8::internal::Handlev8::internal::Object, v8::Maybev8::internal::ShouldThrow) + 477
12 0x10e045eca v8::internal::Object::SetPropertyInternal(v8::internal::LookupIterator*, v8::internal::Handlev8::internal::Object, v8::Maybev8::internal::ShouldThrow, v8::internal::StoreOrigin, bool*) + 602
13 0x10e04656f v8::internal::Object::SetSuperProperty(v8::internal::LookupIterator*, v8::internal::Handlev8::internal::Object, v8::internal::StoreOrigin, v8::Maybev8::internal::ShouldThrow) + 79
14 0x10e046008 v8::internal::Object::SetPropertyInternal(v8::internal::LookupIterator*, v8::internal::Handlev8::internal::Object, v8::Maybev8::internal::ShouldThrow, v8::internal::StoreOrigin, bool*) + 920
15 0x10e045c2a v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::Handlev8::internal::Object, v8::internal::StoreOrigin, v8::Maybev8::internal::ShouldThrow) + 58
16 0x10decf0ee v8::internal::StoreIC::Store(v8::internal::Handlev8::internal::Object, v8::internal::Handlev8::internal::Name, v8::internal::Handlev8::internal::Object, v8::internal::StoreOrigin) + 1214
17 0x10ded52c9 v8::internal::Runtime_StoreIC_Miss(int, unsigned long*, v8::internal::Isolate*) + 393
18 0x10e5866f9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit + 57
JavaScript stack trace:
at get ios (file: node_modules/nativescript-ui-listview/index.ios.js:20:0)
at syncListViewLayout (file: node_modules/nativescript-ui-listview/index.ios.js:1032:0)
at initNativeView (file: node_modules/nativescript-ui-listview/index.ios.js:891:0)
at setNativeView (file: node_modules/@nativescript/core/ui/core/view-base/index.js:746:0)
at _setupUI (file: node_modules/@nativescript/core/ui/core/view-base/index.js:719:0)
at (file: node_modules/@nativescript/core/ui/core/view-base/index.js:726:0)
at eachChildView (file: node_modules/@nativescript/core/ui/content-view/index.js:65:0)
at eachChild (file: node_modules/@nativescript/core/ui/core/view/view-common.js:811:0)
at _setupUI (file: node_modules/@nativescript/core/ui/core/view-base/index.js:725:0)
at (file: node_modules/@nativescript/core/ui/core/view-base/index.js:726:0)

I've done an ns clean, blown away the package-lock.json, all the usual things clearing hooks, node_modules and platforms. No dice. Please help!

Here's the package.json:

{
  "android": {
    "markingMode": "none"
  },
  "description": "whatever",
  "license": "UNLICENSED",
  "readme": "whatever",
  "id": "com.<-->.<-->",
  "v8Flags": "--expose_gc --use_strict",
  "dependencies": {
    "@nativescript/animated-circle": "^1.1.7",
    "@nativescript/apple-sign-in": "^1.0.0",
    "@nativescript/camera": "^5.0.15",
    "@nativescript/core": "^8.4.2",
    "@nativescript/firebase": "^11.1.3",
    "@nativescript/geolocation": "^8.1.0",
    "@nativescript/local-notifications": "^6.0.0",
    "@nativescript/social-share": "^2.3.0",
    "@nstudio/nativescript-cardview": "^2.0.1",
    "@nstudio/nativescript-checkbox": "^2.0.5",
    "@nstudio/nativescript-floatingactionbutton": "^3.0.4",
    "@proplugins/nativescript-dom": "^2.2.3",
    "child_process": "^1.0.2",
    "cookie": "^0.3.1",
    "crypto-js": "^3.1.9-1",
    "deepmerge-json": "^1.3.2",
    "delay": "^4.3.0",
    "email-validator": "^2.0.4",
    "fs-extra": "^10.1.0",
    "html-entities": "^1.2.1",
    "https-proxy-agent": "^3.0.0",
    "hydra-page-previewer": "^0.2.1",
    "jsdom": "^22.1.0",
    "linkifyjs": "^2.1.8",
    "moment": "^2.14.1",
    "moment-timezone": "^0.5.25",
    "nativescript-clipboard": "^2.1.1",
    "nativescript-drawingpad": "^3.1.0",
    "nativescript-drop-down": "^6.0.2",
    "nativescript-exit": "^1.0.1",
    "nativescript-menu": "^1.1.7",
    "nativescript-modal-datetimepicker": "^2.1.5",
    "nativescript-multi-select": "^1.0.6",
    "nativescript-popup": "^1.5.0",
    "nativescript-remote-builds": "^1.1.1",
    "nativescript-timedatepicker": "^1.2.1",
    "nativescript-ui-calendar": "^14.2.1",
    "nativescript-ui-chart": "^14.2.1",
    "nativescript-ui-listview": "^15.2.1",
    "nativescript-ui-sidedrawer": "^14.2.1",
    "nativescript-urlhandler": "^1.3.0",
    "nativescript-videorecorder-x": "^1.0.4",
    "net": "^1.0.2",
    "node-html-parser": "^1.1.16",
    "os": "^0.1.2",
    "promise-map-series": "^0.2.3",
    "tls": "0.0.1",
    "util": "^0.12.5"
  },
  "devDependencies": {
    "@nativescript/android": "~8.5.0",
    "@nativescript/ios": "8.5.2",
    "@nativescript/webpack": "~5.0.0"
  },
  "main": "./app/app.js"
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the upgrade with the listed NativeScript and iOS package versions on the simulator or device. Start at node_modules/nativescript-ui-listview/index.ios.js:20 and trace the call through syncListViewLayout and initNativeView, comparing the related @nativescript/core paths. Done means the upgraded app loads without the assertion.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, javascript
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.