Niels, After directfb.c:193, the core_dfb looks like this in a GTK program: (gdb) print *core_dfb->shared $2 = {magic = 641074236, lock = {multi = {id = 0, shared = 0x0, builtin = { locked = 0, *owner = 0*, waiting = 0x0, requested = false, destroyed = false}}, single = {lock = {__m_reserved = 0, __m_count = 0, __m_owner = 0x0, *__m_kind = 0*, __m_lock = { __status = 0, __spinlock = 0}}, cond = {__c_lock = {__status = 0, __spinlock = 0}, __c_waiting = 0x0}, count = 0}}, active = false, layer_context_pool = 0x44a658, layer_region_pool = 0x44a6c0, palette_pool = 0x44a740, surface_pool = 0x44a7c0, window_pool = 0x44a840, shmpool = 0x445330, shmpool_data = 0x44a600}
In the dfbtest_window test program, at the same point: (gdb) print *core_dfb->shared $1 = {magic = 641074236, lock = {multi = {id = 0, shared = 0x0, builtin = { locked = 0,* owner = 1*, waiting = 0x0, requested = false, destroyed = false}}, single = {lock = {__m_reserved = 0, __m_count = 0, __m_owner = 0x0, *__m_kind = 1*, __m_lock = { __status = 0, __spinlock = 0}}, cond = {__c_lock = {__status = 0, __spinlock = 0}, __c_waiting = 0x0}, count = 0}}, active = false, layer_context_pool = 0x448988, layer_region_pool = 0x4497d0, palette_pool = 0x449838, surface_pool = 0x4498a0, window_pool = 0x449908, shmpool = 0x449720, shmpool_data = 0x448930} What do the differences in owner and kind represent? At this point in the programs, I don't see why they would differ. Stack traces up to this point are identical. I admit I don't understand the architect behind this system yet so spotting differences in data structures is largely the only way I can debug right now. On Wed, Feb 11, 2009 at 2:23 AM, Niels Roest <ni...@directfb.org> wrote: > the SIGTRAP is a result of the ASSERT. > This is not a 'deadly' assert, it signals there is something wrong with the > internal locking counter. > Since it doesn't reach the counter check, something seems to be wrong with > the lock itself. > Having code without locking safety will of course work only about 9 times > out of a 10 :) > > What do you mean with 'terminate normally and get past this statement'? > To me 'terminate' is the opposite of 'get past the statement'.. > > Also, core->shared will be different in memory addresses, obviously, so I > need you to specify a bit more if you have spotted significant differences. > > You may want to try "fatal-level=none" in your directfbrc, to skip asserts > and check for similarities in GTK/nonGTK cases. > > hth > Niels > > eccamacho wrote: > >> I've compiled DirectFB to mips on a Broadcom box. I'm encountering a >> weird >> situation where I'm getting a SIGTRAP in wm.c. >> >> (-) [Main Thread 30.487] (19949) Core/WM: >> dfb_wm_init_stack( >> 0x44e888 ) >> (!) [Main Thread 30.487] (19949) *** Assertion >> [fusion_skirmish_lock_count( &stack->context->lock, &lock_count ) == >> DR_OK] >> failed *** [wm.c:540 in dfb_wm_init_stack()] >> (-) [Main Thread 30.487] (19949) - - : >> Direct/Assertion: >> Raising SIGTRAP... >> >> When I run the directfb tests (dfbtest_window), I can terminate normally >> and >> get past this statement. In GTK programs, I crash here. >> I'm noticing differences in objects such as core->shared when I go through >> dfb_core_create between GTK programs and the DFB test programs, but I >> don't >> understand how they are initialized differently. >> >> Anyone encountered this or have any ideas? >> >> > > > -- > > .------------------------------------------. > | DirectFB - Hardware accelerated graphics | > | http://www.directfb.org/ | > "------------------------------------------" >
_______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev