no restore after update when multiple profiles in use

Bug #1833798 reported by David Cary on 2019-06-22
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mozilla Firefox
Confirmed
Medium
firefox (Ubuntu)
Medium
Unassigned

Bug Description

When Firefox is ready to force use of a new update, it displays in a tab a message:

"Sorry. We just need to do one small thing to keep going. Firefox has just been updated in the background. Click Restart Firefox to complete the update. We will restore all your pages, windows and tabs afterwards, so you can be on your way quickly."

However when I am using multiple profiles concurrently, after I click on the "Restart Firefox" button, a window for the profile that received the message does not get restarted after it has been closed and the update for that profile activated. Instead the profile has to be restarted manually as do all of the tabs that were open at the time in that profile. (Note: I typically get this message one profile at a time. The other open profiles are not immediately affected.)

I expected that Firefox would restore the one window for the profile that was closed and restore all of the tabs to their previous URL, if not their previous state.

Most recently this happened to me as Firefox started updating from 67.0.2 to 67.0.3, but it has been a problem with earlier versions as well.

Unfortunately, because this is initiated by the availability of a new Firefox update, I do not have instructions on how to reproduce this problem on demand.

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: firefox 67.0.3+build1-0ubuntu0.18.04.1
ProcVersionSignature: Ubuntu 4.15.0-51.55-generic 4.15.18
Uname: Linux 4.15.0-51-generic x86_64
AddonCompatCheckDisabled: False
ApportVersion: 2.20.9-0ubuntu7.6
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC1: circ 2588 F.... pulseaudio
 /dev/snd/controlC0: circ 2588 F.... pulseaudio
 /dev/snd/pcmC2D0p: circ 2588 F...m pulseaudio
 /dev/snd/controlC2: circ 2588 F.... pulseaudio
BuildID: 20190618131358
Channel: Unavailable
CurrentDesktop: ubuntu:GNOME
Date: Fri Jun 21 17:36:55 2019
DefaultProfileExtensions: extensions.sqlite corrupt or missing
DefaultProfileIncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
DefaultProfileLocales: extensions.sqlite corrupt or missing
DefaultProfilePrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
DefaultProfilePrefSources: prefs.js
DefaultProfileThemes: extensions.sqlite corrupt or missing
ForcedLayersAccel: False
IfupdownConfig:
 # interfaces(5) file used by ifup(8) and ifdown(8)
 auto lo
 iface lo inet loopback
InstallationDate: Installed on 2018-11-11 (222 days ago)
InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 (20180725)
IpRoute:
 default via 192.168.3.1 dev enp3s0 proto dhcp metric 100
 169.254.0.0/16 dev enp3s0 scope link metric 1000
 192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.181 metric 100
ProcEnviron:
 TERM=xterm-256color
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
Profile1Extensions: extensions.sqlite corrupt or missing
Profile1IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile1Locales: extensions.sqlite corrupt or missing
Profile1PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile1PrefSources: prefs.js
Profile1Themes: extensions.sqlite corrupt or missing
Profile2Extensions: extensions.sqlite corrupt or missing
Profile2IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile2Locales: extensions.sqlite corrupt or missing
Profile2PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile2PrefSources: prefs.js
Profile2Themes: extensions.sqlite corrupt or missing
Profile3Extensions: extensions.sqlite corrupt or missing
Profile3IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile3Locales: extensions.sqlite corrupt or missing
Profile3PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile3PrefSources: prefs.js
Profile3Themes: extensions.sqlite corrupt or missing
Profile4Extensions: extensions.sqlite corrupt or missing
Profile4IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile4Locales: extensions.sqlite corrupt or missing
Profile4PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile4PrefSources: prefs.js
Profile4Themes: extensions.sqlite corrupt or missing
Profile5Extensions: extensions.sqlite corrupt or missing
Profile5IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile5Locales: extensions.sqlite corrupt or missing
Profile5PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile5PrefSources: prefs.js
Profile5Themes: extensions.sqlite corrupt or missing
Profile6Extensions: extensions.sqlite corrupt or missing
Profile6IncompatibleExtensions: Unavailable (corrupt or non-existant compatibility.ini or extensions.sqlite)
Profile6Locales: extensions.sqlite corrupt or missing
Profile6PrefErrors: Unexpected character ',' before close parenthesis @ /usr/lib/firefox/omni.ja:greprefs.js:1151
Profile6PrefSources: prefs.js
Profile6Themes: extensions.sqlite corrupt or missing
RunningIncompatibleAddons: False
SourcePackage: firefox
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 05/16/2013
dmi.bios.vendor: Dell Inc.
dmi.bios.version: A01
dmi.board.name: 0KWVT8
dmi.board.vendor: Dell Inc.
dmi.board.version: A00
dmi.chassis.type: 3
dmi.chassis.vendor: Dell Inc.
dmi.modalias: dmi:bvnDellInc.:bvrA01:bd05/16/2013:svnDellInc.:pnXPS8700:pvr:rvnDellInc.:rn0KWVT8:rvrA00:cvnDellInc.:ct3:cvr:
dmi.product.family: To be filled by O.E.M.
dmi.product.name: XPS 8700
dmi.sys.vendor: Dell Inc.

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
Build ID: 20160522030240

Steps to reproduce:

Start two Firefox processes using different profiles:

./firefox -P profile1 --new-instance &
./firefox -P profile2 --new-instance &

At some point, Firefox downloads an updated version and wants you to restart to update. First you restart the first process, then you click the "restart to update" button in the second process.

Actual results:

The second firefox process does not restart and has to be re-run manually. Firefox exits with an error and the next time you open it, the tab restore "This is embarrassing" page comes up. This is the error when firefox shuts down:

(process:29823): GLib-CRITICAL **: g_path_get_basename: assertion 'file_name != NULL' failed
sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

[1]- Exit 1 ./firefox -P will_browsing_new --new-instance

Expected results:

The second Firefox process restarts normally.

Yes, the second Firefox does not restart automatically when "Restart Nightly to apply updates" is clicked. It has to be restarted manually. However; when it launched manually/command line/, I am not seeing errors.

---Nightly Version before Update---
Version 49.0a1
Build ID 20160501030217
Update Channel nightly
User Agent Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0

Interesting: I suspect that when we apply the update, the running Firefox ends up in a directory which is no longer mounted, so it doesn't have a path. It would be really helpful to have a stacktrace from the assertion. Could you help catch that?

I think that's right: when I go back to the terminal that I originally launched firefox from and do an ls, the directory appears to be empty (or non-existent?), but then if I do `cd ../firefox`, I end up in the new directory with the updated firefox.

How do I get a stacktrace? I don't have a debug build or anything.

Hrm, that's a good question. I don't think we have downloadable symbol packages for our Linux builds, so attaching with gdb would produce mostly garbage by default. Ted, I know that we've used tools to translate between cores and minidumps... do you have instructions for how somebody might do this? I presume breakpad isn't useful in this case because the crash happens either early in startup or late in shutdown.

If you have a new-enough GDB (7.9 or newer) I have a GDB Python script that will fetch symbols from the symbol server:
https://developer.mozilla.org/en-US/docs/Mozilla/Using_the_Mozilla_symbol_server#Downloading_symbols_on_Linux_Mac_OS_X

If not, there's a link there to a fetch-symbols.py script you can use to download symbols for use with GDB.

I've also noticed that when you click the restart button after an update while multiple profiles are running no new FF is started.

Could this be as simple as a 'is it already running' check that is not taking the profile into account?

using: Firefox 67 on Ubuntu 18.04.

David Cary (dcary) wrote :
description: updated
Olivier Tilloy (osomon) wrote :
Changed in firefox:
importance: Unknown → Medium
status: Unknown → Confirmed
Olivier Tilloy (osomon) on 2019-09-19
Changed in firefox (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium

Reproduced this bug while updating to Nightly 74 on Debian Buster:
1. start Firefox with Default Profile. Use it a bit.
2. start Firefox with Profile2. It displays "You’ve just been upgraded to Firefox Nightly 74!"
3. Click the restart button on Firefox Default Profile.
4. Firefox Default Profile exits, but doesn't restart. Profile2 session is left untouched.

Firefox Default profile was launched with `nohup` command, here is the content of `nohup.out`:
```
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23
[Parent 2846, Gecko_IOThread] WARNING: FileDescriptorSet destroyed with unconsumed descriptors: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc, line 23

###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
```

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.