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]

Re: problem in thread creation


> 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.

Sounds like your stack is too small and you are overwriting the thread
structures.

        Andrew

-- 
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]