Hi All,
I hit what I think is a bug with the CoRoutine Scheduler.
The bug is this.
Place vCoRoutineSchedule() in vApplicationIdleHook().
Create one task, that calls while (1) vTaskDelay(10);
Watch the board crash.
The problem with this arcitecture is that a co-routine must be created
before calling vCoRoutineSchedule(). This is because vCoRoutineSchedule()
depends on prvInitialiseCoRoutineLists(), which is only called by xCoRoutineCreate().
However from the code in xCoRoutineCreate() I can see no need for it calling
prvInitialiseCoRoutineLists(), instead I think that prvInitialiseCoRoutineLists() should be called by vTaskStartScheduler().
The reason I have the architecure above is so that I can initialise hardware
with the use a vTaskDelay() when waiting for hardware to come up.
After hardware is initialised I then start worker tasks, and in this case
I start a watchdog worker co-routine.
Richard what do you think of the problem & solution? If you don’t really like the solution I am open to other ideas. Alternatively could you please place a mention somewhere in the API documentation that a co-routine must be created BEFORE calling vCoRoutineSchedule().
Regards Paul
Bug with vCoRoutineSchedule()
Bug with vCoRoutineSchedule()
I will have to take a look at it. Co-routines don’t get used that often, and I think all the examples create the co-routines before the scheduler is started. I would be grateful if you could open a bug tracker (in SourceForge) for this so it doesn’t get lost until I get time to look at it.
Regards.
Bug with vCoRoutineSchedule()
Richard,
You are correct saying all the examples create co-routines before starting the scheduler. So hopefully not many people have hit this bug.
I’ll post it on the bug tracker and place a link here so the two can be married up.
Bug with vCoRoutineSchedule()
Bug is on the tracker here:
https://sourceforge.net/tracker/?func=detail&aid=3396255&group_id=111543&atid=659633
https://sourceforge.net/tracker/?func=detail&aid=3396255&group_id=111543&atid=659633