On Tue, Jul 19, 2011 at 8:12 PM, test name <tuks...@gmail.com> wrote:
> Hi,
>
> I'm trying to get directfb and gtk going on an Atmel AT91SAM9263
> buildroot and directfb-1.4.11/13. Some dfb examples work fine (df_neo,
> df_palette), although the colours are off. Other examples (like
> df_fire and df_particle) SIGSEG or SIGILL.
>
> The demos start up fine with:
>
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.4.13 |~~~~~~~~~~~~~~~~~~~~~~~~~~
>        (c) 2001-2010  The world wide DirectFB Open Source Community
>        (c) 2000-2004  Convergence (integrated media) GmbH
>      ----------------------------------------------------------------
>
> (*) DirectFB/Core: Single Application Core. (2011-07-19 17:38)
> (*) Direct/Memcpy: Using armasm_memcpy()
> (*) Direct/Thread: Started 'VT Switcher' (-1) [CRITICAL OTHER/OTHER
> 0/0] <8388608>...
> (*) Direct/Thread: Started 'VT Flusher' (-1) [DEFAULT OTHER/OTHER 0/0]
> <8388608>...
> (*) DirectFB/FBDev: Found '' (ID 0) with frame buffer at 0x23940000,
> 150k (MMIO 0x00700000, 4k)
> (*) Direct/Thread: Started 'Keyboard Input' (-1) [INPUT OTHER/OTHER
> 0/0] <8388608>...
> (*) DirectFB/Input: Keyboard 0.9 (directfb.org)
> (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0]
> <8388608>...
> (*) DirectFB/Input: gpio-keys (1) 0.1 (directfb.org)
> (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0]
> <8388608>...
> (*) DirectFB/Input: Microsoft Microsoft 5-Button Mo (2) 0.1 (directfb.org)
> (*) Direct/Thread: Started 'Hotplug with Linux Input' (-1) [INPUT
> OTHER/OTHER 0/0] <8388608>...
> (*) DirectFB/Input: Hot-plug detection enabled with Linux Input Driver
> (*) DirectFB/Graphics: Generic Software Rasterizer 0.6 (directfb.org)
> (*) DirectFB/Core/WM: Default 0.3 (directfb.org)
> (*) FBDev/Mode: Setting 320x240 RGB16
> (*) FBDev/Mode: Switched to 320x240 (virtual 320x240) at 16 bit
> (RGB16), pitch 640
> (*) FBDev/Mode: Setting 320x240 RGB16
> (*) FBDev/Mode: Switched to 320x240 (virtual 320x240) at 16 bit
> (RGB16), pitch 640
>
> then they fail for some reason.
>
> For df_fire gdb reports:
>
> Program received signal SIGSEGV, Segmentation fault.
> memset () at libc/string/arm/memset.S:89
> 89              stmia   a4!, {a2, ip}
> (gdb) bt
> #0  memset () at libc/string/arm/memset.S:89
> #1  0x40247f9c in Cop_to_Aop_8 (gfxs=0x31a28) at generic.c:391
> #2  0x40272dd8 in gFillRectangle (state=0x1c0dc, rect=0xbe8b0a18) at
> generic_fill_rectangle.c:96
> #3  0x401be7e4 in dfb_gfxcard_fillrectangles (rects=0x1c074, num=1,
> state=0x1c0dc) at gfxcard.c:1053
> #4  0x401f1d8c in IDirectFBSurface_Clear (thiz=0x1bf30, r=0 '\000',
> g=0 '\000', b=0 '\000', a=255 '\377') at idirectfbsurface.c:729
> #5  0x00009608 in init_application (argc=0xbe8b0b54, argv=0xbe8b0b50)
> at df_fire.c:405
> #6  0x000087f8 in main (argc=1, argv=0xbe8b0db4) at df_fire.c:88
> (gdb) up
> #1  0x40247f9c in Cop_to_Aop_8 (gfxs=0x31a28) at generic.c:391
> 391          memset( gfxs->Aop[0], gfxs->Cop, gfxs->length );
> (gdb) print *gfxs
> $1 = {funcs = {0x40247f64 <Cop_to_Aop_8>, 0 <repeats 31 times>},
> length = 320, Slen = 0, Dlen = 0, dst_org = {0x4005e800, 0x0, 0x0},
> src_org = {0x0, 0x0, 0x0}, dst_pitch = 640, src_pitch = 0,
>  dst_bpp = 1, src_bpp = 0, dst_caps = 20, src_caps = DSCAPS_NONE,
> src_format = DSPF_UNKNOWN, dst_format = DSPF_LUT8, dst_height = 240,
> src_height = 0, dst_field_offset = 76800,
>  src_field_offset = 0, color = {a = 255 '\377', r = 0 '\000', g = 0
> '\000', b = 0 '\000'}, Aop = {0x4005ef80, 0x0, 0x0}, Bop = {0x0, 0x0,
> 0x0}, Cop = 0, Astep = 1, Bstep = 1, YCop = 0 '\000',
>  CbCop = 0 '\000', CrCop = 0 '\000', Aop_field = 0, Bop_field = 0,
> AopY = 3, BopY = 0, s = 0, t = 0, Dkey = 0, Skey = 0, Alut = 0x1a170,
> Blut = 0x0, ABstart = 0x0, ABsize = 0, Aacc = 0x0,
>  Bacc = 0x0, Tacc = 0x0, Cacc = {RGB = {b = 0, g = 0, r = 0, a = 0},
> YUV = {u = 0, v = 0, y = 0, a = 0}}, SCacc = {RGB = {b = 0, g = 0, r =
> 0, a = 0}, YUV = {u = 0, v = 0, y = 0, a = 0}},
>  Xacc = 0x0, Yacc = 0x0, Dacc = 0x0, Sacc = 0x0, Sop = 0x0, Slut =
> 0x0, Ostep = 1, SperD = 0, TperD = 0, Xphase = 0, need_accumulator =
> false, trans = 0x0, num_trans = 0}
>
> For df_particle:
>
> Program received signal SIGILL, Illegal instruction.
> 0x402aa04c in Cop_to_Aop_16 (gfxs=0x429d8) at generic.c:413
> 413               --w;
> (gdb) bt
> #0  0x402aa04c in Cop_to_Aop_16 (gfxs=0x429d8) at generic.c:413
> #1  0x402d4dd8 in gFillRectangle (state=0x42794, rect=0xbeb08940) at
> generic_fill_rectangle.c:96
> #2  0x402207e4 in dfb_gfxcard_fillrectangles (rects=0x4272c, num=1,
> state=0x42794) at gfxcard.c:1053
> #3  0x40253d8c in IDirectFBSurface_Clear (thiz=0x425e8, r=255 '\377',
> g=255 '\377', b=255 '\377', a=255 '\377') at idirectfbsurface.c:729
> #4  0x00009108 in main (argc=1, argv=0xbeb08da4) at df_particle.c:185
> (gdb) print *gfxs
> $1 = {funcs = {0x402a9fa4 <Cop_to_Aop_16>, 0 <repeats 31 times>},
> length = 320, Slen = 0, Dlen = 0, dst_org = {0x1cde0, 0x0, 0x0},
> src_org = {0x0, 0x0, 0x0}, dst_pitch = 640, src_pitch = 0,
>  dst_bpp = 2, src_bpp = 0, dst_caps = 20, src_caps = DSCAPS_NONE,
> src_format = DSPF_UNKNOWN, dst_format = DSPF_RGB16, dst_height = 240,
> src_height = 0, dst_field_offset = 76800,
>  src_field_offset = 0, color = {a = 255 '\377', r = 255 '\377', g =
> 255 '\377', b = 255 '\377'}, Aop = {0x263e0, 0x0, 0x0}, Bop = {0x0,
> 0x0, 0x0}, Cop = 65535, Astep = 1, Bstep = 1,
>  YCop = 0 '\000', CbCop = 0 '\000', CrCop = 0 '\000', Aop_field = 0,
> Bop_field = 0, AopY = 60, BopY = 0, s = 0, t = 0, Dkey = 0, Skey = 0,
> Alut = 0x0, Blut = 0x0, ABstart = 0x0, ABsize = 0,
>  Aacc = 0x0, Bacc = 0x0, Tacc = 0x0, Cacc = {RGB = {b = 0, g = 0, r =
> 0, a = 0}, YUV = {u = 0, v = 0, y = 0, a = 0}}, SCacc = {RGB = {b = 0,
> g = 0, r = 0, a = 0}, YUV = {u = 0, v = 0, y = 0,
>      a = 0}}, Xacc = 0x0, Yacc = 0x0, Dacc = 0x0, Sacc = 0x0, Sop =
> 0x0, Slut = 0x0, Ostep = 1, SperD = 0, TperD = 0, Xphase = 0,
> need_accumulator = false, trans = 0x0, num_trans = 0}
>
> For gtk-demo:
> Program received signal SIGSEGV, Segmentation fault.
> 0x406a5058 in Cop_to_Aop_16 (gfxs=0xf9310) at generic.c:414
> 414               ++D;
> (gdb) bt
> #0  0x406a5058 in Cop_to_Aop_16 (gfxs=0xf9310) at generic.c:414
> #1  0x406cfdd8 in gFillRectangle (state=0xf2fa4, rect=0xbe825578) at
> generic_fill_rectangle.c:96
> #2  0x4061b7e4 in dfb_gfxcard_fillrectangles (rects=0xbe82563c, num=1,
> state=0xf2fa4) at gfxcard.c:1053
> #3  0x4065032c in IDirectFBSurface_FillRectangle (thiz=0xf2df8, x=256,
> y=30, w=340, h=366) at idirectfbsurface.c:1314
> #4  0x4017cd84 in gdk_window_impl_directfb_begin_paint_region
> (paintable=0x79910, window=0x1458b0, region=0x171b80) at
> gdkwindow-directfb.c:2814
> #5  0x401543d0 in IA__gdk_window_begin_paint_region (window=0x1458b0,
> region=0x171b80) at gdkwindow.c:2959
> #6  0x4032e364 in IA__gtk_main_do_event (event=0xbe825758) at gtkmain.c:1608
> #7  0x40159420 in _gdk_window_process_updates_recurse
> (window=0x1458b0, expose_region=0x171b80) at gdkwindow.c:5429
> #8  0x401592fc in _gdk_window_process_updates_recurse
> (window=0x145800, expose_region=0xf1260) at gdkwindow.c:5402
> #9  0x401592fc in _gdk_window_process_updates_recurse (window=0x766e0,
> expose_region=0x171a80) at gdkwindow.c:5402
> #10 0x401592fc in _gdk_window_process_updates_recurse (window=0x76160,
> expose_region=0xf12e0) at gdkwindow.c:5402
> #11 0x4017cf5c in _gdk_windowing_window_process_updates_recurse
> (window=0x76160, region=0xf12e0) at gdkwindow-directfb.c:2939
> #12 0x40159718 in gdk_window_process_updates_internal (window=0x76160)
> at gdkwindow.c:5588
> #13 0x401599c0 in IA__gdk_window_process_all_updates () at gdkwindow.c:5696
> #14 0x40281fcc in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:1360
> #15 0x4012abc4 in gdk_threads_dispatch (data=0xee4b0) at gdk.c:512
> #16 0x40a67928 in g_idle_dispatch (source=0xee8e0, callback=0x4012ab44
> <gdk_threads_dispatch>, user_data=0xee4b0) at gmain.c:4545
> #17 0x40a62c64 in g_main_dispatch (context=0x7f3d8) at gmain.c:2440
> #18 0x40a64580 in g_main_context_dispatch (context=0x7f3d8) at gmain.c:3013
> #19 0x40a64a90 in g_main_context_iterate (context=0x7f3d8, block=1,
> dispatch=1, self=0x3f3d0) at gmain.c:3091
> #20 0x40a653c0 in g_main_loop_run (loop=0x1504c8) at gmain.c:3299
> #21 0x4032d81c in IA__gtk_main () at gtkmain.c:1256
> #22 0x0002d8d0 in main (argc=1, argv=0xbe825da4) at main.c:1010
> (gdb) print *gfxs
> $1 = {funcs = {0x406a4fa4 <Cop_to_Aop_16>, 0 <repeats 31 times>},
> length = 340, Slen = 0, Dlen = 0, dst_org = {0x42087008, 0x0, 0x0},
> src_org = {0x0, 0x0, 0x0}, dst_pitch = 1200, src_pitch = 0,
>  dst_bpp = 2, src_bpp = 0, dst_caps = DSCAPS_SYSTEMONLY, src_caps =
> DSCAPS_NONE, src_format = DSPF_UNKNOWN, dst_format = DSPF_RGB16,
> dst_height = 400, src_height = 0, dst_field_offset = 240000,
>  src_field_offset = 0, color = {a = 255 '\377', r = 255 '\377', g =
> 255 '\377', b = 255 '\377'}, Aop = {0x420a25f8, 0x0, 0x0}, Bop = {0x0,
> 0x0, 0x0}, Cop = 65535, Astep = 1, Bstep = 1,
>  YCop = 0 '\000', CbCop = 0 '\000', CrCop = 0 '\000', Aop_field = 0,
> Bop_field = 0, AopY = 93, BopY = 0, s = 0, t = 0, Dkey = 0, Skey = 0,
> Alut = 0x0, Blut = 0x0, ABstart = 0x0, ABsize = 0,
>  Aacc = 0x0, Bacc = 0x0, Tacc = 0x0, Cacc = {RGB = {b = 0, g = 0, r =
> 0, a = 0}, YUV = {u = 0, v = 0, y = 0, a = 0}}, SCacc = {RGB = {b = 0,
> g = 0, r = 0, a = 0}, YUV = {u = 0, v = 0, y = 0,
>      a = 0}}, Xacc = 0x0, Yacc = 0x0, Dacc = 0x0, Sacc = 0x0, Sop =
> 0x0, Slut = 0x0, Ostep = 1, SperD = 0, TperD = 0, Xphase = 0,
> need_accumulator = false, trans = 0x0, num_trans = 0}
>
> The common denominator here seems to me to be the Cop_to_Aop_*
> functions. Can anyone point me in a direction in order to debug this
> further?
>
> Thanks
>

Well, this is interesting. After some more digging in df_fire I found
what appears to be some stack corruption happening when calling
dfb_gfxcard_fillrectangles from IDirectFBSurface_Clear. The stack
looks as follows:

(gdb) bt
#0  dfb_gfxcard_fillrectangles (rects=0x2eed8, num=2, state=0x12888)
at gfxcard.c:995
#1  0x401f0d8c in IDirectFBSurface_Clear (thiz=0x1bb28, r=0 '\000',
g=0 '\000', b=0 '\000', a=255 '\377') at idirectfbsurface.c:729
#2  0x00009608 in init_application (argc=0xbec75b24, argv=0xbec75b20)
at df_fire.c:405
#3  0x000087f8 in main (argc=1, argv=0xbec75d84) at df_fire.c:88

but dfb_gfxcard_fillrectangles's parameters somehow magically gets
transformed from this:

(gdb) up
#1  0x401f0d8c in IDirectFBSurface_Clear (thiz=0x1bb28, r=0 '\000',
g=0 '\000', b=0 '\000', a=255 '\377') at idirectfbsurface.c:729
729          dfb_gfxcard_fillrectangles( &data->area.current, 1, &data->state );
(gdb) print &data->area.current
$16 = (DFBRectangle *) 0x1bc6c
(gdb) print data->area.current
$17 = {x = 0, y = 0, w = 320, h = 240}

into this:

(gdb) down
#0  dfb_gfxcard_fillrectangles (rects=0x2eed8, num=2, state=0x12888)
at gfxcard.c:995
995          dfb_state_start_drawing( state, card );
(gdb) print *rects
$18 = {x = 0, y = 9881, w = 0, h = 0}

WTF?  gcc version 4.5.3 (Buildroot 2011.05). Compiler bug? Maybe I
should move this discussion to the devel list.
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to