This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]