From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 889 invoked by alias); 3 Feb 2013 08:35:36 -0000 Received: (qmail 767 invoked by uid 22791); 3 Feb 2013 08:35:35 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BD X-Spam-Check-By: sourceware.org Received: from mail-ob0-f176.google.com (HELO mail-ob0-f176.google.com) (209.85.214.176) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 03 Feb 2013 08:35:27 +0000 Received: by mail-ob0-f176.google.com with SMTP id v19so5412329obq.35 for ; Sun, 03 Feb 2013 00:35:26 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.60.32.134 with SMTP id j6mr14264203oei.15.1359880526801; Sun, 03 Feb 2013 00:35:26 -0800 (PST) Received: by 10.76.168.36 with HTTP; Sun, 3 Feb 2013 00:35:26 -0800 (PST) In-Reply-To: References: Date: Sun, 03 Feb 2013 08:35:00 -0000 Message-ID: From: Elad Yosef To: eCos Discussion , ecos-discuss@sources.redhat.com Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: [ECOS] Fwd: ASSERT which doesn't make sense X-SW-Source: 2013-02/txt/msg00002.txt.bz2 ---------- Forwarded message ---------- From: Elad Yosef Date: Wed, Jan 30, 2013 at 10:52 AM Subject: ASSERT which doesn't make sense To: eCos Discussion Hi all, my application crash with the following asserts First Crash ************************************* ASSERT FAIL: <2>thread.inl [ 106] () TRACE: <5>thread.cxx [ 366] () '' TRACE: <5>mlqueue.cxx [ 201] () '' TRACE: <5>mlqueue.cxx [ 267] ()'' TRACE: <5>thread.cxx [ 390] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 121] ()'' TRACE: <5>mboxt.inl [ 599] ()'' TRACE: <5>mlqueue.cxx [ 832] ()'' TRACE: <5>mlqueue.cxx [ 841] ()'' TRACE: <5>thread.cxx [ 366] ()'' TRACE: <5>mlqueue.cxx [ 201] ()'' TRACE: <5>mlqueue.cxx [ 267] ()'' TRACE: <5>thread.cxx [ 390] ()'' TRACE: <5>mlqueue.cxx [ 118] ()'' TRACE: <5>mlqueue.cxx [ 191] ()'' TRACE: <2>sched.cxx [ 298] ()'' TRACE: <2>sched.cxx [ 140] ()'' 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] () TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 298] ()'' TRACE: <7>sched.cxx [ 140] ()'' TRACE: <7>sched.cxx [ 439] ()'' TRACE: <7>sched.cxx [ 439] ()'' TRACE: <7>mlqueue.cxx [ 118] ()'' TRACE: <7>mlqueue.cxx [ 191] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' 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] () TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' TRACE: <6>sched.cxx [ 140] ()'' TRACE: <6>sched.cxx [ 298] ()'' 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