We just updated from eCos (pro) 2.0.91 to 3.0.9.1. What I'm seeing is
that during cyg_user_start(), as soon as we create a thread and
cyg_thread_resume() it the kernel asserts in
Cyg_Scheduler_Implementation::add_thread().
The assert it is hitting is "Idle thread vanished!!!" but I believe it
is due to the queue_map member of the scheduler not being initialized
(it's a null pointer). I'm admittedly a little confused as to how
exactly the kernel starts up and constructs the scheduler.
After some googling I became confused about whether I needed to call
cyg_scheduler_start() and if so, where. I tried calling this prior to
resuming the thread but it failed in a very similar way (different
assert, but same root cause). I don't believe there is anything wrong
with our application code but thought perhaps we had been doing
something wrong all along and the newer eCos version enforces something
now... but I haven't found any evidence of that.
Any ideas? Thanks in advance.