Last week we released 1Password version 6 for Mac on both our website and in the Mac App Store. Major version updates are always a little scary for us, but we were hopeful because our last update went so smoothly for our customers. This time? Not so much. A small percentage of our users are experiencing issues after updating 1Password via the Mac App Store.
Some of you dutifully updated and discovered that 1Password would not respond upon launching, eventually telling you that it failed to connect to 1Password mini. This is obviously no good. We know how important 1Password is to you, and we must do whatever is in our power to make sure this kind of thing doesn’t happen.
If you were affected by this, I’m really sorry.
Rebooting Helps… Even on OS X
The good news is that the fix is super easy: A reboot will likely resolve the issue. If it doesn’t, please email us at firstname.lastname@example.org so that we can help you get up and running again as quickly as possible.
We don’t know why this just started happening in this release. We’ve had many updates over the last few years and this is the first time that we’ve seen this happen like this.
You may be wondering why rebooting helps. Historically OS X hasn’t been known for needing reboots to solve issues, so this advice may sound peculiar. Read on to learn why.
A Tale of Two Apps
Let’s go over what we think is going on with this update and why we believe the update has gone as poorly as it has, and what we’re going to try to do about it.
1Password for Mac consists of two apps, bundled together as one: 1Password (what we like to call the Main app) and 1Password mini, which lives in your menu bar. The Main app does very little on its own; it’s dependent on 1Password mini for everything, which is why it’s critical for the main app to be able to connect to mini on launch. The vast majority of users opt to have mini always running in the background, which is the recommended approach.
Unfortunately, the mechanism that 1Password uses to talk to 1Password mini isn’t quite perfect. Both apps are bundled together, and you would think that we could have 1Password tell the system that it’d like to communicate with the version of 1Password mini that’s bundled within itself. Instead, 1Password can only say, “I’d like to communicate with the app whose unique identifier is onepassword-helper.” The operating system will then find 1Password mini (whose unique identifier looks like onepassword-helper), and if it’s not launched already, the system will launch it. This works nicely almost all of the time.
Often times, 1Password mini is running when the Mac App Store is updating 1Password. 1Password mini includes code to detect when it has been trashed, and when that happens it attempts to terminate itself. It understands that either an update is coming and old mini should make way for new mini, or that the user is uninstalling the app—in which case it should get out of their hair. From what I’ve seen so far, it looks like this code was failing. Either the Mac App Store didn’t trash our app first, or we didn’t catch the event as we should, or we didn’t react as we should. What matters is that the old version of 1Password mini was still around.
Having an old mini running isn’t a big problem for you as a user. You’ll still be able to use mini just fine, and keep filling forms in your browser. The problems don’t start to appear until you run the main 1Password app. 1Password will ask the system to communicate with mini and the system will say “here’s a connection to [old] mini”. 1Password will say hello to mini and include a version number. 1Password mini is smart enough to compare the version numbers and refuse to communicate with a newer main app. What it should do in this situation is terminate itself. The operating system should then re-launch the new mini, and the main app should connect to it. It seems that in this case, the operating system continually relaunched the old mini, which put us into a loop.
So then why does rebooting help? Rebooting should cause the operating system to rebuild its list of apps on the system and forget that the old version of 1Password exists. It should then launch the new mini instead of the old and get us out of the loop.
Making It Better
This issue seems to have affected a small percentage of users, but that’s still more than we’re comfortable with. Let’s look at how we’re going to try to make this better in upcoming releases of 1Password for Mac.
Better Trash Detection
We have to do more research and understand why 1Password mini didn’t detect that it was going be upgraded and then terminate itself properly.
Better Communication With the User
As the 1Password main app was in this loop with the wrong mini, users were given no indication of what was going on. We need to do better here. 1Password should explain what’s going on to the user. Even just explaining that it’s attempting to connect to 1Password mini, and showing the countdown to giving up (60 seconds) would give some indication of what’s happening.
Better Detection of Multiple Instances of 1Password mini
In 1Password 5.4.3, we added code to detect multiple installations of 1Password during updates of our AgileBits Store version of 1Password. This greatly reduced the number of issues encountered while upgrading that version of the app. I think it’s time for us to run this kind of detection upon starting the main app, to catch these kinds of issues even before we ask the operating system to connect us to a mini.
We’re Here to Help
If ever you have trouble updating 1Password to a new version, or have any other kind of problem with the app, please reach out to us. We love hearing from you, and we’re here to help.