keepassium / KeePassium

KeePass-compatible password manager for iOS
https://keepassium.com
Other
1.21k stars 103 forks source link

Crashes on start (iPod Touch with iOS 15.2) #215

Closed belinsky874 closed 2 years ago

belinsky874 commented 2 years ago

Description The Keepassium app briefly shows the splash screen with its logo before crashing back to the home screen.

How to reproduce Steps to reproduce the behavior:

  1. Download the Keepassium app from the App Store
  2. Tap on the Keepassium app at the home screen
  3. Watch the splash screen momentarily appear before the app crashes back to the home screen.

Expected behavior The app will launch normally as it would have on other iOS-based platforms (e.g. iPhone) without crashing.

Environment:

Additional context

keepassium commented 2 years ago

This looks like a breaking change in iPod release of iOS 15.2 — it is missing the NFC library. Here's a crash log I received from another user (thanks, J):

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: DYLD; [1]
Library not loaded: /System/Library/Frameworks/CoreNFC.framework/CoreNFC
Referenced from: /private/var/containers/Bundle/Application/…/KeePassium.app/KeePassium
Reason: tried: '/System/Library/Frameworks/CoreNFC.framework/CoreNFC' (no such file)
(terminated at launch; ignore backtrace)

In App Store stats, I see a couple of iPod Touch devices with iOS 15.1, but none with 15.2. So the library was there before (even though iPod Touch does not have NFC hardware).

Try to install some NFC-based apps and see if they launch. Normally they should start and complain there is no NFC hardware. Chances are, they will crash on start…

keepassium commented 2 years ago

I have reported it to Apple: http://www.openradar.me/FB9836080

belinsky874 commented 2 years ago

I have tried downloading NFC app and it crashed in a similar manner. Splash screen for about a second before crash to home screen.

keepassium commented 2 years ago

I have tried downloading NFC app and it crashed in a similar manner. Splash screen for about a second before crash to home screen.

Feel free to report this to Apple, crashing NFC apps is certainly their fault. https://feedbackassistant.apple.com/ https://www.apple.com/feedback/ipodtouch.html

ravenclaw900 commented 2 years ago

This doesn't seem to be limited to iOS 15.2, I'm having the same problem on 14.7.1. (Yes, I know it's Apple's bug, just wanted to add this)

keepassium commented 2 years ago

@ravenclaw900 , is it also because of missing CoreNFC for you?

(I have just checked App Store stats. Oddly enough, there is non-zero usage on iPod devices with both 14.7 and 15.2. Which is puzzling…)

ixs commented 2 years ago

Same problem on iPod Touch running 15.2. App crashes on startup and the log says "no such file" for CoreNFC. A different iPod Touch on 12.4 runs fine of course.

I'd assume that the non-zero usage on 15.2 might be a metric error on the App Store side?

ravenclaw900 commented 2 years ago

Sorry, haven't done much iOS development, how would I get the logs?

ixs commented 2 years ago

@ravenclaw900 You can open the Settings app, navigate to Privacy > Analytics > Analytics Data and find all your logs there.

Scroll down a bit, the Keypassium logs are there...

ravenclaw900 commented 2 years ago

Yep, it is.

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Description: DYLD, dyld: Using shared cache: 6B453AD2-F7F2-3E3A-B64F-31B0A1E995D7 | dependent dylib '/System/Library/Frameworks/CoreNFC.framework/CoreNFC' not found for '/private/var/containers/Bundle/Application/CA3C176D-C526-4531-AC9C-B8873CEA7E8F/KeePassium.app/KeePassium', tried but didn't find: '/System/Library/Frameworks/CoreNFC.framework/CoreNFC'
ixs commented 2 years ago

For what's it worth, I checked a few more NFC enabled apps. Some crash, some don't.

Looks like tools like the Yubikey Authenticator check if CoreNFC is available and do not load it/expose NFC functionality and thus no crash. Maybe this would be a good way forward for KeePassium as well?

keepassium commented 2 years ago

There is a related issue in YubiKit's repo (https://github.com/Yubico/yubikit-ios/pull/80); the proposed solution is to mark CoreNFC as a weakly-linked/optional dependency. Oddly enough, this is exactly what I did in December, without much effect.

I guess it's time to update to the latest YubiKit version. The one in KeePassium is from 2019 — because "don't fix what is not broken". Well, it is now :)

keepassium commented 2 years ago

This should be fixed now (hopefully). Please give the beta version a try and let me know how it goes. Thanks!

keepassium commented 2 years ago

Definitely fixed by iOS 15.4.