Question

posted by mlzarathustra
2 years ago
updates turned off, but it still checks, and pops an unwanted dialog

I am running an automated task to visit known (friendly) websites on a cron job (in Linux). It is absolutely essential that firefox NOT pop ANY unwanted dialogs, as this brings the whole thing to a grinding halt.

I have switched off ALL updates using the edit/preferences dialog, and additionally switched off a number other such obnoxious-looking things using about:config.

Yet it still insists on popping a window that says "Select Your Add-ons." I don't know why, since I have never seen it before. I have a screen shot of the unwanted dialog, but don't see any way to upload it as part of this question.

To standard out, it sends this:

LOG addons.manager: Application has been upgraded

LOG addons.xpi: startup

LOG addons.xpi: checkForChanges

LOG addons.xpi-utils: Opening database

LOG addons.xpi-utils: Migrating data from schema 12

LOG addons.xpi-utils: Opening database

LOG addons.xpi-utils: Creating database schema

.
.
.
and so on.

I search for some of these things (e.g. addons.manager) in about:config, but in vain.

How did it decide the "Application" has been upgraded? I have ALL UPDATES TURNED OFF!!!

How can I get it to stop, and never EVER try to update or pop any unwanted dialogs?

The upper ones were already switched to false. I don't seem to have the browser.microsummary one.

I am not sure what app.update.silent means, but by default it's false. That leads me to believe that switching it to true could make the browser "more silent" by getting rid of a notification. Are these options documented anywhere?

I'm guessing that part of the problem is that it's running as a cron tab, so firefox must be checking some environment variable that tells it to run whatever it's doing to pop the obstructive dialog. I have no idea what it might be checking, though.

The first screenshot seems to be related to extensions that are no longer considered installed.
This can be caused by using the profile with another Firefox version (compatibility.ini) or extensions.ini or prefs.js not getting saved properly.

Yes, if firefox misbehaves (i.e. doesn't close within a timeout period), the application that called it forces firefox to close. (When I invoke firefox, I am giving command line args that tell it to run a plugin, after which it should close.)

I had browser.sessionstore.resume_from_crash set to false when I got this window. Notice that it is not trying to RESTORE my session, but to start up in safe mode.

I'll take a look at the add-on-scope page. I think that's the problem causing the first window, since with the bizarre environment cron is running it in, it probably gets confused. However, it does correctly identify the default profile and thus it should know where the add-on directory is, and realize that the add-ons have been installed.

Another clue: this worked fine when I was using FF 3.0.13 (from 2009), but broke when I upgraded to 13.0.1.

I would upgrade more often, but keeping up to date with undocumented changes to the mozilla API is difficult and time-consuming.

So somewhere between 3.0.13 and 13.0.1 something was added to make it do this unwanted add-on check. I have looked at the mike kaply page, but I find it very confusing. For one thing, he doesn't seem to explain exactly what the numbers signify (5,10,15) except in those specific cases.

I wish I could just make it turn off that check and go back to the way it was in 3.0.13.

Um, the point is that I need the extension. So I can't use a profile without any extensions in it. I may have confused you when I said 'plugin' earlier, but I meant 'extension.' I find the distinction between these two terms confusing, and yes I do know the difference.

So here is what I notice:

if I put the line:

0 * * * * <command>

in the crontab, it fails. However, if I put:

0 * * * * bash -l -c <command>

in the crontab, it works. The -l tells bash to run it as a login shell, hence to set all the environment variables that would ordinarily get set. In an ordinary cron environment, only very few get set. (listed below)

My conclusion is that firefox is relying on some environment variable that only gets set in the login shell, but doesn't get set if you run it straight from cron.

Here are the variables that get set from cron. This set is probably missing whatever firefox is relying on to think that it shouldn't pop the annoying dialog:

HOME='/home/username'

IFS='

'

LANG='en_US.UTF-8'

LOGNAME='username'

OPTIND='1'

PATH='/usr/bin:/bin'

PPID='2558'

PS1='$ '

PS2='> '

PS4='+ '

PWD='/home/username'

SHELL='/bin/sh'

I would list all of the variables that DO get set when you say -l, but it's very long. Too long to go through one by one to try to figure out what is the key. Or maybe there is something else about the login shell that firefox is depending on?

So I've got it working for now, but who knows what will happen if I upgrade? How many more hours will I have to waste chasing down a way to turn off some "helpful" behavior?