Closed Bug 713056 Opened 13 years ago Closed 13 years ago

IllegalStateException because AwesomeBarCursorAdapter modified in background thread

Categories

(Firefox for Android Graveyard :: General, defect, P2)

All
Android
defect

Tracking

(firefox11 affected, firefox12 affected, blocking-fennec1.0 +, fennec11+)

RESOLVED FIXED
Firefox 13
Tracking Status
firefox11 --- affected
firefox12 --- affected
blocking-fennec1.0 --- +
fennec 11+ ---

People

(Reporter: kats, Assigned: lucasr)

References

Details

(Keywords: crash, Whiteboard: [native-crash])

Attachments

(2 files)

I had Fennec running for a bit on my tablet and I wasn't doing anything with it. Later I came back to it, tapped in the URL bar and started typing a URL - it crashed and came back up almost immediately and the following exception was in the log. D/GeckoLayerController(31555): setViewportMetrics: v=RectF(173.5428, 0.0, 973.5428, 1176.0) p=(543.3212,543.3212) z=0.55440944 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(203.24303, 0.0, 1003.24304, 1176.0) p=(636.13446,636.13446) z=0.6491168 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(231.22496, 0.0, 1031.225, 1176.0) p=(723.578,723.578) z=0.7383449 o=0.0,0.0 E/GeckoConsole(31555): [JavaScript Warning: "reference to undefined property cache.directories" {file: "jar:jar:file:///data/app/org.mozilla.fennec_kats-1.apk!/omni.ja!/components/nsSearchService.js" line: 2567}] W/GeckoGlobalHistory(31555): Rebuilding visited link set... D/GeckoLayerController(31555): setViewportMetrics: v=RectF(257.4359, 0.0, 1057.4359, 1176.0) p=(805.48724,805.48724) z=0.8219257 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(281.66162, 0.0, 1081.6616, 1176.0) p=(881.1925,881.1925) z=0.899176 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(303.78543, 0.0, 1103.7854, 1176.0) p=(950.3295,950.3295) z=0.96972394 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(323.61945, 0.0, 1123.6194, 1176.0) p=(1012.3107,1012.3107) z=1.0329701 o=0.0,0.0 D/GeckoLayerController(31555): setViewportMetrics: v=RectF(340.84775, 0.0, 1140.8478, 1176.0) p=(1066.1493,1066.1493) z=1.0879073 o=0.0,0.0 I/Gecko (31555): void mozilla::AndroidBridge::HandleGeckoMessage(const nsAString_internal&, nsAString_internal&) I/Gecko (31555): leaving void mozilla::AndroidBridge::HandleGeckoMessage(const nsAString_internal&, nsAString_internal&) I/Gecko (31555): void mozilla::AndroidBridge::HandleGeckoMessage(const nsAString_internal&, nsAString_internal&) D/GeckoSoftwareLayerClient(31555): Received viewport update from gecko D/GeckoLayerController(31555): setViewportMetrics: v=RectF(0.0, 0.0, 800.0, 1176.0) p=(1.0,1.0) z=0.0010204081 o=0.0,0.0 D/dalvikvm(31555): GC_CONCURRENT freed 301K, 5% free 7751K/8135K, paused 2ms+3ms I/Gecko (31555): leaving void mozilla::AndroidBridge::HandleGeckoMessage(const nsAString_internal&, nsAString_internal&) E/GeckoApp(31555): top level exception E/GeckoApp(31555): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131492881, class android.widget.ListView) with Adapter(class org.mozilla.gecko.AwesomeBarTabs$AwesomeBarCursorAdapter)] E/GeckoApp(31555): at android.widget.ListView.layoutChildren(ListView.java:1555) E/GeckoApp(31555): at android.widget.AbsListView.onLayout(AbsListView.java:1976) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) E/GeckoApp(31555): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) E/GeckoApp(31555): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) E/GeckoApp(31555): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) E/GeckoApp(31555): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) E/GeckoApp(31555): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) E/GeckoApp(31555): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) E/GeckoApp(31555): at android.view.View.layout(View.java:9593) E/GeckoApp(31555): at android.view.ViewGroup.layout(ViewGroup.java:3877) E/GeckoApp(31555): at android.view.ViewRoot.performTraversals(ViewRoot.java:1256) E/GeckoApp(31555): at android.view.ViewRoot.handleMessage(ViewRoot.java:2020) E/GeckoApp(31555): at android.os.Handler.dispatchMessage(Handler.java:99) E/GeckoApp(31555): at android.os.Looper.loop(Looper.java:132) E/GeckoApp(31555): at org.mozilla.gecko.GeckoApp$33.run(GeckoApp.java:1517) E/GeckoApp(31555): at android.os.Handler.handleCallback(Handler.java:587) E/GeckoApp(31555): at android.os.Handler.dispatchMessage(Handler.java:92) E/GeckoApp(31555): at android.os.Looper.loop(Looper.java:132) E/GeckoApp(31555): at android.app.ActivityThread.main(ActivityThread.java:4028) E/GeckoApp(31555): at java.lang.reflect.Method.invokeNative(Native Method) E/GeckoApp(31555): at java.lang.reflect.Method.invoke(Method.java:491) E/GeckoApp(31555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) E/GeckoApp(31555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) E/GeckoApp(31555): at dalvik.system.NativeStart.main(Native Method)
Assignee: nobody → lucasr.at.mozilla
Priority: -- → P2
tracking-fennec: --- → 11+
Severity: normal → critical
I wasn't able to reproduce this at all. Kats or anyone testing this, are you still able to reproduce this? How?
I haven't seen this happen since then. I'll mark it as WFM for now and re-open if I ever see it again.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → WORKSFORME
... and it just happened again, this time while I was running a robocop test. in this case i wasn't even interacting with the device myself, it was just a script running the test. Attaching new log.
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
When we set the list of search engines the number of items in the adapter changes straight away. We were updating the list in a background thread which means that the notifyDataSetChanged() call would happen a bit later causing ListView to get confused about the number of items.
Attachment #599951 - Flags: review?(blassey.bugs)
Attachment #599951 - Flags: review?(blassey.bugs) → review+
Status: REOPENED → RESOLVED
Closed: 13 years ago13 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 13
blocking-fennec1.0: --- → +
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: