Unexpectedly no ContextGetter in GeckoApplication.onConfigurationChanged

RESOLVED FIXED in Firefox 31

Status

()

Firefox for Android
General
RESOLVED FIXED
4 years ago
10 months ago

People

(Reporter: aaronmt, Assigned: rnewman)

Tracking

(Blocks: 2 bugs, {reproducible})

29 Branch
Firefox 31
All
Android
reproducible
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments, 1 obsolete attachment)

(Reporter)

Description

4 years ago
Sounds like bug 945832 although I'm on Nightly (12/12). When I rotate my device this spits out to console:

D/GeckoApplication( 9258): onConfigurationChanged: en_US, background: false
W/GeckoApplication( 9258): Couldn't correct locale.
W/GeckoApplication( 9258): java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
W/GeckoApplication( 9258): 	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
W/GeckoApplication( 9258): 	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:176)
W/GeckoApplication( 9258): 	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
W/GeckoApplication( 9258): 	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:46)
W/GeckoApplication( 9258): 	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3845)
W/GeckoApplication( 9258): 	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3921)
W/GeckoApplication( 9258): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
W/GeckoApplication( 9258): 	at android.os.Handler.dispatchMessage(Handler.java:102)
W/GeckoApplication( 9258): 	at android.os.Looper.loop(Looper.java:136)
W/GeckoApplication( 9258): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
W/GeckoApplication( 9258): 	at java.lang.reflect.Method.invokeNative(Native Method)
W/GeckoApplication( 9258): 	at java.lang.reflect.Method.invoke(Method.java:515)
W/GeckoApplication( 9258): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
W/GeckoApplication( 9258): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
W/GeckoApplication( 9258): 	at dalvik.system.NativeStart.main(Native Method)
W/GeckoApplication( 9258): Caused by: java.lang.RuntimeException: No prefs.
Assignee: nobody → rnewman
Status: NEW → ASSIGNED
That's the expected result of Bug 945832:

        // Otherwise, correct the locale. This catches some cases that GeckoApp
        // doesn't get a chance to.
        try {
            LocaleManager.correctLocale(getResources(), config);
        } catch (IllegalStateException ex) {
            // GeckoApp hasn't started, so we have no ContextGetter in LocaleManager.
            Log.w(LOG_TAG, "Couldn't correct locale.", ex);
        }

=>

W/GeckoApplication( 9258): Couldn't correct locale.
W/GeckoApplication( 9258): java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.

Note that Firefox no longer crashes when this happens!


Morphing this bug to be "why hasn't GeckoApp set the ContextGetter, and thus why are we hitting our error handling code?".
Hardware: ARM → All
Summary: On device rotation - java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs → Unexpectedly no ContextGetter in GeckoApplication.onConfigurationChanged
Aaron, I'm going to need STR. I can't reproduce this on my device.

Alternatively, could you give me a log starting from launching Fennec from this APK:

http://people.mozilla.com/~rnewman/log.apk

I have a hypothesis, but it's not something I can easily reproduce.
Flags: needinfo?(aaron.train)
(Reporter)

Comment 3

4 years ago
I can not reproduce with the above build, however I can still reproduce on Nightly (12/17, multi-ARMv7 APK). All I need to reproduce on Nightly is rotate my device on any site. System language is English (United States).
Flags: needinfo?(aaron.train)
(Reporter)

Comment 4

4 years ago
12-17 10:33:39.675 D/GeckoApp( 9031): onConfigurationChanged: en_US
12-17 10:33:39.705 D/PhoneStatusBar(  775): mSettingsPanelGravity = 55
12-17 10:33:39.715 D/GeckoApplication( 9189): onConfigurationChanged: en_US, background: false
12-17 10:33:39.725 D/GeckoApplication( 9121): onConfigurationChanged: en_US, background: false
12-17 10:33:39.725 W/GeckoApplication( 9121): Couldn't correct locale.
12-17 10:33:39.725 W/GeckoApplication( 9121): java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:176)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:46)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3845)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3921)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.os.Handler.dispatchMessage(Handler.java:102)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.os.Looper.loop(Looper.java:136)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-17 10:33:39.725 W/GeckoApplication( 9121): 	at dalvik.system.NativeStart.main(Native Method)
12-17 10:33:39.725 W/GeckoApplication( 9121): Caused by: java.lang.RuntimeException: No prefs.
12-17 10:33:39.725 W/GeckoApplication( 9121): 	... 15 more
12-17 10:33:39.735 W/GeckoApplication( 9189): Couldn't correct locale.
12-17 10:33:39.735 W/GeckoApplication( 9189): java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:176)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:46)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3845)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3921)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.os.Handler.dispatchMessage(Handler.java:102)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.os.Looper.loop(Looper.java:136)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-17 10:33:39.735 W/GeckoApplication( 9189): 	at dalvik.system.NativeStart.main(Native Method)
12-17 10:33:39.735 W/GeckoApplication( 9189): Caused by: java.lang.RuntimeException: No prefs.
12-17 10:33:39.735 W/GeckoApplication( 9189): 	... 15 more
12-17 10:33:39.815 W/GeckoGLController( 9031): GLController::serverSurfaceChanged(768, 1134)
12-17 10:33:39.815 D/GeckoLayerClient( 9031): Screen-size changed to (768,1184)
12-17 10:33:39.815 D/GeckoLayerClient( 9031): Window-size changed to (768,1134)
(Reporter)

Comment 5

4 years ago
Created attachment 8348907 [details]
Nightly (12/17) - startup log
I have a patch for this. Along the way I cleaned up how Fennec as a whole manages references to contexts.

It does the following:

* Moves the specifier for GeckoApp's prefs to GeckoApplication.
* Eliminates sAppContext. Whenever GeckoApp needs to return a context, it just returns itself, rather than some historical GeckoApp instance.
* Introduces a singleton GeckoApplication. It's a singleton already, but not every caller has a context available (chicken-egg).
* Passes the calling intent directly to GeckoLoader, rather than having GeckoLoader expect that the context is an Activity.
* Cleans up GeckoScreenOrientationListener a little -- coding style, layout, and a few tweaks for efficiency. This class is one of the worst offenders for context misuse, so eventually we should eliminate it. (Bug 951959.)
* Simplifies the context access of GeckoThread, which was whack (two call paths to compute the same thing!).

It ought to eliminate this bug by:

* Using the Application, not GeckoApp, as LocaleManager's ContextGetter. (No leaking of activities.)
* Having GeckoApplication pass itself into LocaleManager, just in case the activity didn't run yet.

No chance of a null ContextGetter, because the Application itself is a ContextGetter.

It does *not* fix:

* GeckoAppShell's assumption that its context is an Activity. There are places in the code (GSOL, for example) that expect this, and are too tangled for me to unwind right now.
Created attachment 8350393 [details] [diff] [review]
Rework context handling.
Attachment #8350393 - Flags: review?(mark.finkle)
Comment on attachment 8350393 [details] [diff] [review]
Rework context handling.

I have done a review pass yet, but one thing I initially thought about is how this would affect GeckoView. I don't think GeckoView can assume GeckoApplication exists, so we just need to keep that in mind.
I have NOT done a review pass yet...
Blocks: 956079
Comment on attachment 8350393 [details] [diff] [review]
Rework context handling.

>diff --git a/mobile/android/base/CrashReporter.java b/mobile/android/base/CrashReporter.java

>         SharedPreferences prefs =
>-            getSharedPreferences(GeckoApp.PREFS_NAME, 0);
>+            getSharedPreferences(GeckoApplication.PREFS_NAME, 0);
>         SharedPreferences.Editor editor = prefs.edit();
>         editor.putBoolean(GeckoApp.PREFS_WAS_STOPPED, true);

It seems odd to me that the PREFS_NAME is in GeckoApplication but the PREFS_WAS_STOPPED is in GeckoApp. Am I being silly?

I think CrashReporter is active with GeckoView, for now, so I wonder if the lack of a GeckoApplication breaks this.

Does a Try run look OK? Once GeckoView is unbroken, we need to make sure this does not break it again.
Attachment #8350393 - Flags: review?(mark.finkle) → review+
(In reply to Mark Finkle (:mfinkle) from comment #10)

> It seems odd to me that the PREFS_NAME is in GeckoApplication but the
> PREFS_WAS_STOPPED is in GeckoApp. Am I being silly?

Kinda.

PREFS_NAME is used all over the application for access to prefs.

PREFS_WAS_STOPPED (should really be PREF_WAS_STOPPED) is the particular pref key that GeckoApp uses to look up whether it was stopped, and CrashReporter writes it.

Constants have to live somewhere :/


> I think CrashReporter is active with GeckoView, for now, so I wonder if the
> lack of a GeckoApplication breaks this.

It quite possibly does break, but I'll verify before I land.
Status update: I'm waiting on Bug 951865 so I can test GeckoView.
Depends on: 951865
For the record, I see this when testing against android-sync.apk: that is, *Fennec* hasn't run but parts of Gecko are loaded to service the Passwords ContentProvider.
(In reply to Nick Alexander :nalexander from comment #13)
> For the record, I see this when testing against android-sync.apk: that is,
> *Fennec* hasn't run but parts of Gecko are loaded to service the Passwords
> ContentProvider.

Yup. This change should address that by making the Application object the default context, rather than the Activity.
Duplicate of this bug: 958553
Blocks: 891634
Created attachment 8400311 [details] [diff] [review]
Rework context handling. v2

Rebased and reworked to (as far as I can tell) not screw up GeckoView. I still need to decide whether to take the hit of making locale prefs per-profile. Try is green with this change:

https://tbpl.mozilla.org/?tree=Try&rev=763a1c5d2395
Attachment #8350393 - Attachment is obsolete: true
Two questions for mfinkle.

1. Does this patch break GeckoView? I don't think it does, because there's no longer any coupling to GeckoApplication.

2. In the course of making these changes, I'm being 'encouraged' to address which SharedPreferences we use for locales.

We currently get a free ride, because the per-app preferences are already loaded by the time we hit locale switching. If we instead make locales per-profile, we'll be accessing a different prefs file, which will incur a disk read (albeit in the background thread), but of course we'll trivially allow each profile to have a different locale.

I'm disinclined to have us pay that price for no reason. Instead, we could take three different avenues in the future:

  (x) Don't allow Firefox to use more than one locale.

  (a) If two profiles both use locale switching, and choose different locales, leave a sentinel in the main prefs file saying "please look in the expensive files". The small minority pays the cost.

  (b) Do the lookup when *switching* profiles, not on launch, and do the locale switch then (or write the correct locale into the main prefs).

Let me know if you're happy with those ways forward.
Flags: needinfo?(mark.finkle)
Didn't want this to bitrot, so here goes.

https://hg.mozilla.org/integration/fx-team/rev/6fd2049abc51
https://hg.mozilla.org/mozilla-central/rev/6fd2049abc51
Status: ASSIGNED → RESOLVED
Last Resolved: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 31
Passing the request to see if GeckoView is broken to Mike or Nick. My setup will take some time to get working again, and either of those two might have a functional GeckoView setup.
Flags: needinfo?(nalexander)
Flags: needinfo?(michael.l.comella)
Flags: needinfo?(mark.finkle)
(In reply to Mark Finkle (:mfinkle) from comment #20)
> Passing the request to see if GeckoView is broken to Mike or Nick. My setup
> will take some time to get working again, and either of those two might have
> a functional GeckoView setup.

I downloaded the latest GeckoView libs and assets from http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android/ and dropped them into mfinkle's geckobrowser.  I get the same startup crash:

E GeckoAppShell(316)          >>> REPORTING UNCAUGHT EXCEPTION FROM THREAD 15905 ("Gecko")
E GeckoAppShell(316)          java.lang.NullPointerException
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoNetworkManager.getNetworkType(GeckoNetworkManager.java:221)
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoNetworkManager.updateNetworkType(GeckoNetworkManager.java:180)
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoNetworkManager.enableNotifications(GeckoNetworkManager.java:204)
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoAppShell.enableNetworkNotifications(GeckoAppShell.java:2458)
E GeckoAppShell(316)          	at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method)
E GeckoAppShell(316)          	at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method)
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoAppShell.runGecko(GeckoAppShell.java:347)
E GeckoAppShell(316)          	at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:178)
E GeckoAppShell(316)          Main thread stack:
E GeckoAppShell(316)          android.os.MessageQueue.nativePollOnce(Native Method)
E GeckoAppShell(316)          android.os.MessageQueue.next(MessageQueue.java:125)
E GeckoAppShell(316)          android.os.Looper.loop(Looper.java:124)
E GeckoAppShell(316)          android.app.ActivityThread.main(ActivityThread.java:4745)
E GeckoAppShell(316)          java.lang.reflect.Method.invokeNative(Native Method)
E GeckoAppShell(316)          java.lang.reflect.Method.invoke(Method.java:511)
E GeckoAppShell(316)          com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E GeckoAppShell(316)          com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E GeckoAppShell(316)          dalvik.system.NativeStart.main(Native Method)
E Gecko(316)                  mozalloc_abort: Redirecting call to abort() to mozalloc_abort
F libc(316)                   Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 339 (Gecko)

All the bugs I see that might track this (Bug 927253, Bug 979623) are RESO FIXED.  So I'm going to say I can't verify this is fixed (since it might just happen after the above crash), and redirect to blassey to actually make GeckoNetworkManager work.  (For the record, I looked at geckoview_example (but did not run it) and see no GNM initialization.)
Flags: needinfo?(nalexander)
blassey, what's the state of GeckoNetworkManager and geckoview_example?  I see tickets you landed to stop crashers like the above, but no love today.
Flags: needinfo?(blassey.bugs)
Sounds like your bits are little stale. There has been some churn in GNM over the last week and the end result is that getNetworkType() is no longer a method (it was removed in bug 960426).
Flags: needinfo?(blassey.bugs)
Flags: needinfo?(michael.l.comella)
(In reply to Brad Lassey [:blassey] (use needinfo?) from comment #23)
> Sounds like your bits are little stale. There has been some churn in GNM
> over the last week and the end result is that getNetworkType() is no longer
> a method (it was removed in bug 960426).

Aha!  The bits were stale, due to a badly configured Eclipse workspace.  With correct bits, GeckoBrowser is working well, but I do still get a non-fatal dump when I rotate the device:

E Sensors(431)                Error while trying to enable 9 axis sensor fusion : 1
I MPL-mldl_cfg_mpu:(431)      inv_mpu_resume(,,,,0070) -> 0070
V Sensors(431)                setDelay - sensor Accelerometer (handle 4), rate 200 ms (5.00 Hz)
V Sensors(431)                set fifo rate - divider : 39, delay : 200 ms (5.00 Hz)
I MPL-fifo(431)               Actual ODR: 25000 mHz
V Sensors(431)                setDelay - sensor Accelerometer (handle 4), rate 66 ms (15.00 Hz)
V Sensors(431)                set fifo rate - divider : 13, delay : 66 ms (15.00 Hz)
I MPL-fifo(431)               Actual ODR: 25000 mHz
D GeckoApplication(1799)      onConfigurationChanged: en_US, background: false
D GeckoApplication(2296)      onConfigurationChanged: en_US, background: false
W GeckoApplication(2296)      Couldn't correct locale.
W GeckoApplication(2296)      java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
W GeckoApplication(2296)      	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
W GeckoApplication(2296)      	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:211)
W GeckoApplication(2296)      	at org.mozilla.gecko.LocaleManager.getCurrentLocale(LocaleManager.java:160)
W GeckoApplication(2296)      	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
W GeckoApplication(2296)      	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:47)
W GeckoApplication(2296)      	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3618)
W GeckoApplication(2296)      	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3746)
W GeckoApplication(2296)      	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
W GeckoApplication(2296)      	at android.os.Handler.dispatchMessage(Handler.java:99)
W GeckoApplication(2296)      	at android.os.Looper.loop(Looper.java:137)
W GeckoApplication(2296)      	at android.app.ActivityThread.main(ActivityThread.java:4745)
W GeckoApplication(2296)      	at java.lang.reflect.Method.invokeNative(Native Method)
W GeckoApplication(2296)      	at java.lang.reflect.Method.invoke(Method.java:511)
W GeckoApplication(2296)      	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W GeckoApplication(2296)      	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W GeckoApplication(2296)      	at dalvik.system.NativeStart.main(Native Method)
W GeckoApplication(2296)      Caused by: java.lang.RuntimeException: No prefs.
W GeckoApplication(2296)      	... 16 more
W GeckoGLController(2218)     GLController::serverSurfaceDestroyed() with mCompositorCreated=true
W GeckoApplication(1799)      Couldn't correct locale.
W GeckoApplication(1799)      java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
W GeckoApplication(1799)      	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
W GeckoApplication(1799)      	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:211)
W GeckoApplication(1799)      	at org.mozilla.gecko.LocaleManager.getCurrentLocale(LocaleManager.java:160)
W GeckoApplication(1799)      	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
W GeckoApplication(1799)      	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:46)
W GeckoApplication(1799)      	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3618)
W GeckoApplication(1799)      	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3746)
W GeckoApplication(1799)      	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
W GeckoApplication(1799)      	at android.os.Handler.dispatchMessage(Handler.java:99)
W GeckoApplication(1799)      	at android.os.Looper.loop(Looper.java:137)
W GeckoApplication(1799)      	at android.app.ActivityThread.main(ActivityThread.java:4745)
W GeckoApplication(1799)      	at java.lang.reflect.Method.invokeNative(Native Method)
W GeckoApplication(1799)      	at java.lang.reflect.Method.invoke(Method.java:511)
W GeckoApplication(1799)      	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W GeckoApplication(1799)      	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W GeckoApplication(1799)      	at dalvik.system.NativeStart.main(Native Method)
W GeckoApplication(1799)      Caused by: java.lang.RuntimeException: No prefs.
W GeckoApplication(1799)      	... 16 more
W GeckoGLController(2218)     done GLController::serverSurfaceDestroyed()
(In reply to Nick Alexander :nalexander from comment #24)

> Aha!  The bits were stale, due to a badly configured Eclipse workspace. 

Looks like they're still stale:


> W GeckoApplication(2296)      Couldn't correct locale.
> W GeckoApplication(2296)      java.lang.IllegalStateException: No
> ContextGetter; cannot fetch prefs.
> W GeckoApplication(2296)      	at
> org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)

LocaleManager#getSharedPreferences is at line 209 after this patch, and doesn't use a ContextGetter.

Could you please check again with a current checkout and a cleaner build?
Flags: needinfo?(nalexander)
(In reply to Richard Newman [:rnewman] from comment #25)
> (In reply to Nick Alexander :nalexander from comment #24)
> 
> > Aha!  The bits were stale, due to a badly configured Eclipse workspace. 
> 
> Looks like they're still stale:
> 
> 
> > W GeckoApplication(2296)      Couldn't correct locale.
> > W GeckoApplication(2296)      java.lang.IllegalStateException: No
> > ContextGetter; cannot fetch prefs.
> > W GeckoApplication(2296)      	at
> > org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
> 
> LocaleManager#getSharedPreferences is at line 209 after this patch, and
> doesn't use a ContextGetter.
> 
> Could you please check again with a current checkout and a cleaner build?

I can't explain this, but with geckoview_library fetched a minute ago, from

http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android/geckoview_library.zip

and with hash

MD5 (geckoview_library.zip) = b2ad1cd78ad8925122f1fa209784f1c8

I still see this building mfinkle's GeckoBrowser.  Bad line number and all:

D GeckoApplication(19205)     onConfigurationChanged: en_US, background: false
D AwesomePlayer(119)          Failed to open file, all profile flags have to set through setprop method.
I AwesomePlayer(119)          Profile flag is set to 0
W GeckoApplication(19205)     Couldn't correct locale.
W GeckoApplication(19205)     java.lang.IllegalStateException: No ContextGetter; cannot fetch prefs.
W GeckoApplication(19205)     	at org.mozilla.gecko.LocaleManager.getSharedPreferences(LocaleManager.java:79)
W GeckoApplication(19205)     	at org.mozilla.gecko.LocaleManager.getPersistedLocale(LocaleManager.java:211)
W GeckoApplication(19205)     	at org.mozilla.gecko.LocaleManager.getCurrentLocale(LocaleManager.java:160)
W GeckoApplication(19205)     	at org.mozilla.gecko.LocaleManager.correctLocale(LocaleManager.java:89)
W GeckoApplication(19205)     	at org.mozilla.gecko.GeckoApplication.onConfigurationChanged(GeckoApplication.java:46)
W GeckoApplication(19205)     	at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3618)
W GeckoApplication(19205)     	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3746)
W GeckoApplication(19205)     	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
W GeckoApplication(19205)     	at android.os.Handler.dispatchMessage(Handler.java:99)
W GeckoApplication(19205)     	at android.os.Looper.loop(Looper.java:137)
W GeckoApplication(19205)     	at android.app.ActivityThread.main(ActivityThread.java:4745)
W GeckoApplication(19205)     	at java.lang.reflect.Method.invokeNative(Native Method)
W GeckoApplication(19205)     	at java.lang.reflect.Method.invoke(Method.java:511)
W GeckoApplication(19205)     	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W GeckoApplication(19205)     	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W GeckoApplication(19205)     	at dalvik.system.NativeStart.main(Native Method)
W GeckoApplication(19205)     Caused by: java.lang.RuntimeException: No prefs.
W GeckoApplication(19205)     	... 16 more
D AwesomePlayer(119)          Failed to open file, all profile flags have to set through setprop method.
I AwesomePlayer(119)          Profile flag is set to 0
Flags: needinfo?(nalexander)
You need to log in before you can comment on or make changes to this bug.