Queue not created, RtOs freezes?

willywortel wrote on Monday, January 26, 2009:


I have a readHardwareTask that passes the value from hardware switches to a queue. This same task also generate the queue upon start/init.

There are other tasks, for example the lcdMenuTask, that reads out the data from this queue. This menu gets entered when the next loop breaks:

while( xQueuePeek( keypadQueue, &keypadActivity, portMAX_DELAY ) != pdPASS ) ; // just a peek, if there exists data, continue executing

Now for some reason I forgot to boot the readHardwareTask, so the queue wasn’t created. But now i notice, that when the lcdMenuTasks tries to execute the above function, it freezes the whole OS. (i’ve other tasks that are running at a much higher priority).

When debugging with the real ice, I see that is stalls with opcode 1000FFFF on a address that I cannot find in my disassembly listing.

When I just re-enable the readHardwareTask, everything works like charm. But I find this quite frighting, that it can stall my whole OS. How can i secure this from happening?

rtel wrote on Saturday, January 31, 2009:

Yes - you can check that a queue has been created before trying to use it.  If you try writing to a null queue then anything can happen.