Hi, maybe I found a problem in schedulers code....
For debugging purposes I enabled some options: - CYGVAR_KERNEL_THREADS_LIST - CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT On application startup some threads should be created, but I am running in an exception. The reason of exception is located here: inline void Cyg_Thread::add_to_list( void ) { // Add thread to housekeeping list Cyg_Scheduler::lock(); if( thread_list == 0 ) list_next = this; else { Cyg_Thread *prev = thread_list; do { if ( this == prev ) break; // found it already! prev = prev->list_next; } while ( prev != thread_list ); if ( this != prev ) { // insert it in the list: list_next = thread_list->list_next; thread_list->list_next = this; } } thread_list = this; Cyg_Scheduler::unlock(); } In this loop prev becomes NULL, but there is no test on NULL, so the statement <NULL>->list_next causes an exception! Should there a test on NULL pointer only? I do not understand the reason for while loop condition: while (prev != thread_list). Should I compare to NULL here or is it more complex? Thanks Richard ITR GmbH web: http://www.itrgmbh.com email: i...@itrgmbh.com -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss