Last Comment Bug 782413 - b2g fails to initialize widget starting with m-c commit 75cdb3f932c6
: b2g fails to initialize widget starting with m-c commit 75cdb3f932c6
Status: RESOLVED FIXED
:
Product: Core
Classification: Components
Component: Widget: Gonk (show other bugs)
: unspecified
: All Gonk (Firefox OS)
: -- blocker (vote)
: ---
Assigned To: Matt Woodrow (:mattwoodrow)
:
Mentors:
Depends on: 783449
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-13 14:05 PDT by Jonathan Griffin (:jgriffin)
Modified: 2012-08-17 22:12 PDT (History)
5 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
+


Attachments
full logcat (8.98 KB, text/plain)
2012-08-13 14:06 PDT, Jonathan Griffin (:jgriffin)
no flags Details
Only paint widgets that have a layer manager (2.21 KB, patch)
2012-08-13 18:15 PDT, Matt Woodrow (:mattwoodrow)
cjones.bugs: review+
Details | Diff | Review

Description Jonathan Griffin (:jgriffin) 2012-08-13 14:05:08 PDT
Beginning with m-c commit 75cdb3f932c6 (https://hg.mozilla.org/mozilla-central/pushloghtml?startID=23268&endID=23269), the emulator fails to boot.  It shows only a white screen, and B2G never loads.

Logcat shows:

I/ServiceManager(   42): Waiting for service batteryinfo...
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Idle
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Checking
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Idle
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Checking
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Idle
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Checking
I/nsVolumeService(   42): UpdateVolumeRunnable::Run 'sdcard' state Idle
I/ServiceManager(   42): Waiting for service batteryinfo...
I/Gecko   (   42): Logging GL tracing output to /system/b2g/firefox.trace
I/Gecko   (   42): Attempting load of /data/local/egltrace.so
I/Gecko   (   42): Attempting load of libEGL.so
D/libEGL  (   42): loaded /system/lib/egl/libEGL_emulation.so
D/        (   42): HostConnection::get() New Host Connection established 0x9c8370, tid 82
D/libEGL  (   42): loaded /system/lib/egl/libGLESv1_CM_emulation.so
D/libEGL  (   42): loaded /system/lib/egl/libGLESv2_emulation.so
I/ServiceManager(   42): Waiting for service batteryinfo...
E/EGL_emulation(   42): tid 82: eglCreatePbufferSurface(682): error 0x3009 (EGL_BAD_MATCH)
E/GeckoConsole(   42): OpenGL LayerManager Initialized Succesfully.
E/GeckoConsole(   42): Version: OpenGL ES 2.0 (2.1 Mesa 7.11)
E/GeckoConsole(   42): Vendor: Google (Mesa Project)
E/GeckoConsole(   42): Renderer: Android Emulator OpenGL ES Translator (Software Rasterizer)
E/GeckoConsole(   42): FBO Texture Target: TEXTURE_2D
I/GeckoDump(   42): Opened socket on 9999
I/ServiceManager(   42): Waiting for service batteryinfo...
I/Gecko   (   42): RIL Worker: DateTimeZone string 12/08/13:21:01:42-28:1:America!Los_Angeles
W/AudioFlinger(   37): Thread AudioOut_1 cannot connect to the power manager service

This blocks all CI testing.
Comment 1 Jonathan Griffin (:jgriffin) 2012-08-13 14:06:02 PDT
Created attachment 651529 [details]
full logcat
Comment 2 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2012-08-13 16:46:19 PDT
This affects all b2g builds, not just the emulator.
Comment 3 Matt Woodrow (:mattwoodrow) 2012-08-13 18:15:54 PDT
Created attachment 651600 [details] [diff] [review]
Only paint widgets that have a layer manager

So, this makes me kinda sad.

It appears that the gonk widget code only tracks the widget that was most recently invalidated, and then only paints that. This seems horribly fragile, since any changes in the way we flush invalidates to widgets could result in us attempting to draw the wrong one?

In this case, we now attempt to paint at the same time as we flush the invalidates, so we were painting all the widgets, not just one. Attempting to create multiple compositors doesn't work at all, but the widget code doesn't really stop or warn us.

Anyway, this patch just lets the first paint continue as it used to, so we just one of the widgets set up with a LayerManager. Then it uses that to determine which widget we actually want to paint from then on.
Comment 4 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2012-08-13 18:30:56 PDT
The gonk widget backend really only supports one toplevel widget.  We should stop pretending otherwise and fix up the things causing us to create more than one.
Comment 5 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2012-08-13 19:16:25 PDT
Comment on attachment 651600 [details] [diff] [review]
Only paint widgets that have a layer manager

Let's get this landed on m-c, statim.
Comment 6 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2012-08-13 19:41:51 PDT
Emergency bustage fix that needed to go directly to m-c.

https://hg.mozilla.org/mozilla-central/rev/22f6adf8685b

Note You need to log in before you can comment on or make changes to this bug.