public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] ASSERT which doesn't make sense
@ 2013-01-30  8:52 Elad Yosef
  2013-02-03  8:35 ` [ECOS] Fwd: " Elad Yosef
  0 siblings, 1 reply; 2+ messages in thread
From: Elad Yosef @ 2013-01-30  8:52 UTC (permalink / raw)
  To: eCos Discussion

Hi all, my application crash with the following asserts

First Crash
*************************************
ASSERT FAIL: <2>thread.inl    [ 106] <nofunc>()
TRACE: <5>thread.cxx          [ 366] <nofunc>()	'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 201] <nofunc>() '<nomsg>'
TRACE: <5>mlqueue.cxx         [ 267] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 390] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 832] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 841] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 366] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 201] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 267] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 390] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 118] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 191] <nofunc>()'<nomsg>'
TRACE: <2>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <2>sched.cxx           [ 140] <nofunc>()'<nomsg>'

Scheduler:

Lock:                1
Current Thread:      COM-TX

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state =      R id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state = S      id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason    DELAY wake reason     NONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state =      R id =   5
                     stack base = 8003c490 ptr = 8003c588 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 8003b670 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state = S      id =   7
                     stack base = 8003cf90 ptr = 8003d788 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e364      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state =      R id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 800337e8      wait info = 00000000
********************************************************
It ASSERT from
    CYG_ASSERT( (cyg_uint32)stack_ptr > (cyg_uint32)stack_base,
"Stack_ptr below base" );
    But checking the Faulty thread as reported by the TRACE dump shows:
     stack base = 80038e90 ptr = 80039710 size = 00000a00

Second Crash
*************************************
ASSERT FAIL: <6>thread.inl          [ 106] <nofunc>()
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 439] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 439] <nofunc>()'<nomsg>'
TRACE: <7>mlqueue.cxx         [ 118] <nofunc>()'<nomsg>'
TRACE: <7>mlqueue.cxx         [ 191] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'

Scheduler:

Lock:                1
Current Thread:      RF1

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state = S      id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e36c      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state = S      id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason    DELAY wake reason     NONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state = S      id =   5
                     stack base = 8003c490 ptr = 8003cc88 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e354      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 8003b670 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state =      R id =   7
                     stack base = 8003cf90 ptr = 8003d088 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state = S      id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e344      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 80033670      wait info = 00000000

********************************************************
It ASSERT from
    CYG_ASSERT( (cyg_uint32)stack_ptr > (cyg_uint32)stack_base,
"Stack_ptr below base" );
    But checking the Faulty thread as reported by the TRACE dump shows:
     stack base = 8003ae90 ptr = 8003b670 size = 00000b00

Third Crash
*************************************
ASSERT FAIL: <6>smp.hxx       [ 445] <nofunc>()
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'

Scheduler:

Lock:                0
Current Thread:      RF1

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state = S      id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e36c      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state =      R id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state = S      id =   5
                     stack base = 8003c490 ptr = 8003cc88 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e354      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 80033860 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state = S      id =   7
                     stack base = 8003cf90 ptr = 8003d788 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e364      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state = S      id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e344      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 800337e8      wait info = 00000000




Must say that I'm mangling the scheduler lock/unlock by:
void cyg_scheduler_lock(void) __THROW;
void cyg_scheduler_unlock(void) __THROW;

From 2 places:
- Flash Driver - locks/unlocks during erase/program.
- I have my own MBOX_Send

XXX_RETCODE MBOX_send_to(UINT32 client_id, void* buffer)
{
	XXX_RETCODE rc = RETCODE_SUCCESS;
	cyg_scheduler_lock();
	if(cyg_mbox_tryput(BY_REQUEST_mbox_handle[client_id],buffer))
	{
		cyg_semaphore_post(&SEMAPHORE_obj[client_id]);
	}
	else
	{
		rc = RETCODE_FAIL;
	}
	cyg_scheduler_unlock();
	return rc;
}

This function sends msg between my app threads.
- uses tryput to avoid blocking
- post semaphore.


Does anyone has good idea who I get this states?

Thanks

Elad

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [ECOS] Fwd: ASSERT which doesn't make sense
  2013-01-30  8:52 [ECOS] ASSERT which doesn't make sense Elad Yosef
@ 2013-02-03  8:35 ` Elad Yosef
  0 siblings, 0 replies; 2+ messages in thread
From: Elad Yosef @ 2013-02-03  8:35 UTC (permalink / raw)
  To: eCos Discussion, ecos-discuss

---------- Forwarded message ----------
From: Elad Yosef <elad.yosef@gmail.com>
Date: Wed, Jan 30, 2013 at 10:52 AM
Subject: ASSERT which doesn't make sense
To: eCos Discussion <ecos-discuss@ecos.sourceware.org>


Hi all, my application crash with the following asserts

First Crash
*************************************
ASSERT FAIL: <2>thread.inl    [ 106] <nofunc>()
TRACE: <5>thread.cxx          [ 366] <nofunc>() '<nomsg>'
TRACE: <5>mlqueue.cxx         [ 201] <nofunc>() '<nomsg>'
TRACE: <5>mlqueue.cxx         [ 267] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 390] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 121] <nofunc>()'<nomsg>'
TRACE: <5>mboxt.inl           [ 599] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 832] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 841] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 366] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 201] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 267] <nofunc>()'<nomsg>'
TRACE: <5>thread.cxx          [ 390] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 118] <nofunc>()'<nomsg>'
TRACE: <5>mlqueue.cxx         [ 191] <nofunc>()'<nomsg>'
TRACE: <2>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <2>sched.cxx           [ 140] <nofunc>()'<nomsg>'

Scheduler:

Lock:                1
Current Thread:      COM-TX

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state =      R id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state = S      id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason    DELAY wake reason     NONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state =      R id =   5
                     stack base = 8003c490 ptr = 8003c588 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 8003b670 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state = S      id =   7
                     stack base = 8003cf90 ptr = 8003d788 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e364      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state =      R id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 800337e8      wait info = 00000000
********************************************************
It ASSERT from
    CYG_ASSERT( (cyg_uint32)stack_ptr > (cyg_uint32)stack_base,
"Stack_ptr below base" );
    But checking the Faulty thread as reported by the TRACE dump shows:
     stack base = 80038e90 ptr = 80039710 size = 00000a00

Second Crash
*************************************
ASSERT FAIL: <6>thread.inl          [ 106] <nofunc>()
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 439] <nofunc>()'<nomsg>'
TRACE: <7>sched.cxx           [ 439] <nofunc>()'<nomsg>'
TRACE: <7>mlqueue.cxx         [ 118] <nofunc>()'<nomsg>'
TRACE: <7>mlqueue.cxx         [ 191] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'

Scheduler:

Lock:                1
Current Thread:      RF1

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state = S      id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e36c      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state = S      id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason    DELAY wake reason     NONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state = S      id =   5
                     stack base = 8003c490 ptr = 8003cc88 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e354      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 8003b670 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state =      R id =   7
                     stack base = 8003cf90 ptr = 8003d088 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state = S      id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e344      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 80033670      wait info = 00000000

********************************************************
It ASSERT from
    CYG_ASSERT( (cyg_uint32)stack_ptr > (cyg_uint32)stack_base,
"Stack_ptr below base" );
    But checking the Faulty thread as reported by the TRACE dump shows:
     stack base = 8003ae90 ptr = 8003b670 size = 00000b00

Third Crash
*************************************
ASSERT FAIL: <6>smp.hxx       [ 445] <nofunc>()
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 140] <nofunc>()'<nomsg>'
TRACE: <6>sched.cxx           [ 298] <nofunc>()'<nomsg>'

Scheduler:

Lock:                0
Current Thread:      RF1

Threads:

         Idle Thread pri =  31 state =      R id =   1
                     stack base = 80045268 ptr = 80045690 size = 00000600
                     sleep reason     NONE wake reason     NONE
                     queue = 00000000      wait info = 00000000

              COM-TX pri =   7 state = S      id =   2
                     stack base = 80038e90 ptr = 80039710 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e36c      wait info = 800397c0

              COM-RX pri =  15 state =      R id =   3
                     stack base = 80039890 ptr = 8003a0c8 size = 00000a00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                 CLI pri =  20 state =      R id =   4
                     stack base = 8003da90 ptr = 8003e610 size = 00000e00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM1 pri =   9 state = S      id =   5
                     stack base = 8003c490 ptr = 8003cc88 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e354      wait info = 00000000

                 RF1 pri =   9 state =      R id =   6
                     stack base = 8003ae90 ptr = 80033860 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

              MODEM2 pri =   9 state = S      id =   7
                     stack base = 8003cf90 ptr = 8003d788 size = 00000a00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e364      wait info = 00000000

                 RF2 pri =   9 state =      R id =   8
                     stack base = 8003b990 ptr = 8003c170 size = 00000b00
                     sleep reason     NONE wake reason     DONE
                     queue = 00000000      wait info = 00000000

                MIRS pri =  11 state = S      id =   9
                     stack base = 8003a290 ptr = 8003acf0 size = 00000c00
                     sleep reason     WAIT wake reason     NONE
                     queue = 8004e344      wait info = 8003ada0

                 TCP pri =   7 state = S      id =  10
                     stack base = 8004b5bc ptr = 8004bbf0 size = 00000800
                     sleep reason  TIMEOUT wake reason     NONE
                     queue = 8004b4b8      wait info = 00000000

                 ETH pri =   6 state = S      id =  11
                     stack base = 8004bdbc ptr = 8004c448 size = 00000800
                     sleep reason     WAIT wake reason     NONE
                     queue = 800337e8      wait info = 00000000




Must say that I'm mangling the scheduler lock/unlock by:
void cyg_scheduler_lock(void) __THROW;
void cyg_scheduler_unlock(void) __THROW;

From 2 places:
- Flash Driver - locks/unlocks during erase/program.
- I have my own MBOX_Send

XXX_RETCODE MBOX_send_to(UINT32 client_id, void* buffer)
{
        XXX_RETCODE rc = RETCODE_SUCCESS;
        cyg_scheduler_lock();
        if(cyg_mbox_tryput(BY_REQUEST_mbox_handle[client_id],buffer))
        {
                cyg_semaphore_post(&SEMAPHORE_obj[client_id]);
        }
        else
        {
                rc = RETCODE_FAIL;
        }
        cyg_scheduler_unlock();
        return rc;
}

This function sends msg between my app threads.
- uses tryput to avoid blocking
- post semaphore.


Does anyone has good idea who I get this states?

Thanks

Elad

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-02-03  8:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-30  8:52 [ECOS] ASSERT which doesn't make sense Elad Yosef
2013-02-03  8:35 ` [ECOS] Fwd: " Elad Yosef

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).