I finally found the problem. I was mis-setting a queue entry size.
Code: Select all
m_queueScanDone = xQueueCreate(10, sizeof (system_event_t *));
was incorrectly coded as:
Code: Select all
m_queueScanDone = xQueueCreate(10, sizeof (system_event_t));
I'm not sure precisely how this caused the problem, but I believe that when an entry was placed into the queue, it overran an area expecting a pointer, but receiving a block the size of the struct itself. General hilarity ensued...
Thanks to all who looked at this with me. Good learning experience (what I always say after great pains to discover a dumb mistake)...