surfaceflinger keeps restarting - fb buffer 0 allocation failed err=Out of memory

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

surfaceflinger keeps restarting - fb buffer 0 allocation failed err=Out of memory

4,969 Views
varsmolta
Contributor V

I am porting android 4.0.4 (based on freescale 13.4-ga release) to a custom board and surfaceflinger keeps shutting down and restarting. Here is the error I get:

I/ServiceManager( 2477): Waiting for service SurfaceFlinger...

I/ServiceManager( 2477): Waiting for service SurfaceFlinger...

I/SurfaceFlinger( 2499): SurfaceFlinger is starting

I/SurfaceFlinger( 2499): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...

I/imx6.gralloc( 2499): primary display name lcd

I/        ( 2499): XmlTool()

I/imx6.gralloc( 2499): colordepth is 0

I/imx6.gralloc( 2499): disp_mode is

W/imx6.gralloc( 2499): using (fd=12)

W/imx6.gralloc( 2499): id           = DISP3 BG

W/imx6.gralloc( 2499): xres         = 480 px

W/imx6.gralloc( 2499): yres         = 272 px

W/imx6.gralloc( 2499): xres_virtual = 480 px

W/imx6.gralloc( 2499): yres_virtual = 1152 px

W/imx6.gralloc( 2499): bpp          = 16

W/imx6.gralloc( 2499): r            = 11:5

W/imx6.gralloc( 2499): g            =  5:6

W/imx6.gralloc( 2499): b            =  0:5

W/imx6.gralloc( 2499): width        = 76 mm (160.421051 dpi)

W/imx6.gralloc( 2499): height       = 43 mm (160.669769 dpi)

W/imx6.gralloc( 2499): refresh rate = 179.54 Hz

E/FramebufferNativeWindow( 2499): fb buffer 0 allocation failed w=480, h=272, err=Out of memory

E/FramebufferNativeWindow( 2499): fb buffer 1 allocation failed w=480, h=272, err=Out of memory

E/FramebufferNativeWindow( 2499): fb buffer 2 allocation failed w=480, h=272, err=Out of memory

D/libEGL  ( 2499): loaded /system/lib/egl/libGLES_android.so

D/libEGL  ( 2499): loaded /system/lib/egl/libEGL_VIVANTE.so

D/libEGL  ( 2499): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so

D/libEGL  ( 2499): loaded /system/lib/egl/libGLESv2_VIVANTE.so

W/SurfaceFlinger( 2499): ro.sf.lcd_density not defined, using 160 dpi by default.

E/libagl  ( 2499): connect() failed to lock buffer 0x1786548 (480x272)

E/libEGL  ( 2499): eglMakeCurrent:680 error 3002 (EGL_BAD_ACCESS)

E/SurfaceFlinger( 2499): Couldn't create a working GLES context. check logs. exiting...

I/ServiceManager( 2288): service 'power' died

I/ServiceManager( 2288): service 'entropy' died

I/ServiceManager( 2288): service 'sensorservice' died

My kernel command line is:

enable_wait_mode=off console=ttymxc0,115200 vmalloc=400M consoleblank=0 rootdelay=3 video=mxcfb0:dev=lcd,DTECH,if=RGB666 fbmem=28M androidboot.bootdev=sdhci-esdhc-imx.0 androidboot.hardware=freescale androidboot.console=ttymxc0

The kernel boot lines of interest are:

MIPI DSI driver module loaded

mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver lcd

pwm_config: pwm freq = 32786, clk_select=2 clock_rate=6000000

pwm_config: pwm freq = 20000, clk_select=2 clock_rate=6000000

mxc_sdc_fb mxc_sdc_fb.1: register mxc display driver lcd

mxc_sdc_fb mxc_sdc_fb.1: ipu0-di0 already in use

mxc_sdc_fb: probe of mxc_sdc_fb.1 failed with error -16

mxc_sdc_fb mxc_sdc_fb.2: register mxc display driver ldb

_regulator_get: get() with no identifier

imx-ipuv3 imx-ipuv3.1: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)

pwm_config: pwm freq = 32786, clk_select=2 clock_rate=6000000

pwm_config: pwm freq = 20000, clk_select=2 clock_rate=6000000

mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb

and here is the repeated logs of surfaceflinger shutting down and restarting:

root@android:/ # init: starting 'surfaceflinger'

init: waitpid returned pid 2470, status = 00000000

init: process 'surfaceflinger', pid 2470 exited

init: process 'surfaceflinger' killing any children in process group

init: service 'zygote' is being killed

init: starting 'zygote'

init: waitpid returned pid 2445, status = 00000009

init: Created socket '/dev/socket/zygote' with mode '666', user '0', group '0'

init: untracked pid 2445 exited

init: waitpid returned pid 2453, status = 00000009

init: untracked pid 2453 exited

init: starting 'surfaceflinger'

init: waitpid returned pid 2499, status = 00000000

init: process 'surfaceflinger', pid 2499 exited

init: process 'surfaceflinger' killing any children in process group

init: service 'zygote' is being killed

init: starting 'zygote'

init: waitpid returned pid 2473, status = 00000009

init: Created socket '/dev/socket/zygote' with mode '666', user '0', group '0'

init: untracked pid 2473 exited

init: waitpid returned pid 2477, status = 00000009

init: untracked pid 2477 exited

Can anyone please help? Thanks

Labels (6)
0 Kudos
4 Replies

954 Views
igorpadykov
NXP Employee
NXP Employee

Hi varsmolta

please apply latest GPU fixes on link below

Upgrade GPU to p13 and include some other critical fixes for ICS R13.4.1 release

In general seems there is no sufficient memory, please check optimization

hints below

Memory Management on i.MX6 Android

Also it is highly recommended to migrate to latest Android, since

it has already all GPU fixes implemented and older kernels have some memory

management issues unresolved.

IMX6_JB43_110_ANDROID_SOURCE_BSP : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite,

i.MX 6Solo and i.MX 6Sololite Android jb4.3_1.1.0 0 BSP, Documentation and Source Code for BSP and Codecs.

Best regards

chip

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos

954 Views
varsmolta
Contributor V

Thanks for the response. I am using boundary devices 4.0.4 build and all I did was tweaked the u-boot, kernel, and init.rc scripts to bring up Android on my custom board. The boundary devices build works on the sabrelite board (I don't get the SurfaceFlinger error on the sabrelite board), so I feel like I am missing a step when porting this to my custom board. When I do lsmod, I don't see any kernel modules loaded on my custom board. Shouldn't the vivante drivers be loaded as kernel modules?

0 Kudos

954 Views
igorpadykov
NXP Employee
NXP Employee

Hi varsmolta

I think better to post this to Boundary Devices

http://boundarydevices.com/community/

Best regards

chip

0 Kudos

954 Views
varsmolta
Contributor V

Update: This error got fixed when I moved to boundary devices android 4.2.2 JB build. Thanks

0 Kudos