This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
infinite loop in cyg_thread_create() function
- From: "Vijay Padiyar" <vijaypadiyar at hotmail dot com>
- To: "eCos Support" <ecos-discuss at sources dot redhat dot com>
- Date: Thu, 28 Oct 2004 19:59:00 +0530
- Subject: [ECOS] infinite loop in cyg_thread_create() function
Hi Arvind
You wrote about this problem on the eCos mailing list:
----------------------------------------------------------------------------
--
> Thanks for ur kind reply
> After debugging i found that problem is in following code fragment in
> file thread.cxx:
>
> Cyg_Thread::add_to_list( void )
> - 127 {
> 128 // Add thread to housekeeping list
> 129 Cyg_Scheduler::lock();
> 130
> - 131 if( thread_list == 0 )
> 132 list_next = this;
> 133 else {prev != thread_list
> 134 Cyg_Thread *prev = thread_list;
> - 135 do {
> - 136 if ( this == prev )
> 137 break; // found it already!
> - 138 prev = prev->list_next;
> - 139 } while ( prev != thread_list );
> - 140 if ( this != prev ) {
> 141 // insert it in the list:
> - 142 list_next = thread_list->list_next;
> - 143 thread_list->list_next = this;
> 144 }
> 145 }
>
> the control is in the while loop forever as prev == thread_list ( line
> 139 )ie prev has become NULL.
----------------------------------------------------------------------------
--
Well we are facing the EXACT SAME problem now. Please tell us more about how
you solved it. We are calling the cyg_thread_create() function from a
function inside a class. It gets stuck the second time in the same while()
loop.
Please tell us how exactly you modified the stack allocation.
This is our function call:
----------------------------------------------------------------------------
--
static char tskstack[STACK_SIZE]; //Stack size is 5632 bytes
cyg_thread_create(10, (cyg_thread_entry_t
*)&contextStart,(cyg_addrword_t)this,
tasknm,&tskstack[STACK_SIZE],STACK_SIZE, &id1,
&id);
----------------------------------------------------------------------------
--
Please help us out here.
Regards
Vijay
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss