#143 QACTIVE_POST_LIFO() on initial transition asserts on QXK

QP-C
closed
None
1
2016-12-02
2016-11-01
No

One recommended pattern to do initialization steps of Active Objects is to postLIFO() an initial signal to self.

In QXK scheduler (QP/C 5.7.3a) this causes assert in QXK_sched() because scheduler is still locked in this phase. Calling QActive_postLifo() causes scheduling via QACTIVE_EQUEUE_SIGNAL_().

Call stack:
QActive_start
QMsm_init
QMsm_execTatbl_
AO_init_e
QACTIVE_POST_LIFO((QActive *) me, &ao_initial_sig);
QXK_sched_
Q_onAssert

Workaround:

Add following code to start of QXK_sched_()

if (QXK_attr_.lockPrio == (uint_fast8_t)(QF_MAX_ACTIVE + 1))
{
return 0;
}

Discussion

  • Quantum Leaps

    Quantum Leaps - 2016-12-02
    • status: open --> closed
     
  • Quantum Leaps

    Quantum Leaps - 2016-12-02

    This bug has been fixed in QP/C 5.8.0 and QP/C++ 5.8.0.

     


Anonymous

Cancel  Add attachments





Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks