Menu

#292 QP-C-C++ on 64 Bit Linux - Setting of Current-Obj - AO_Obj from QView raises segmentation fault

QP
closed
None
1
2024-08-01
2021-01-22
Anonymous
No

in qs_rx.c:735
typecast must be to uint64_t, not uint32_t
case WAIT4_OBJ_ADDR: {
l_rx.var.obj.addr |= ((uint64_t)b << l_rx.var.obj.idx);

Discussion

  • Anonymous

    Anonymous - 2021-01-22

    Correction: Not the setting of the AO_Obj raises the segment violation, but a subsequent posting of an event (qview - events - post).

     
  • Quantum Leaps

    Quantum Leaps - 2021-01-22

    Thanks for reporting. The following changes will be released on GitHub, see:

     @ -732,7 +732,7 @@ static void QS_rxParseData_(uint8_t b) {
                break;
            }
            case WAIT4_OBJ_ADDR: {
    
    -   l_rx.var.obj.addr |= ((uint32_t)b << l_rx.var.obj.idx);
    +   l_rx.var.obj.addr |= ((QSObj)b << l_rx.var.obj.idx);
                l_rx.var.obj.idx += 8U;
                if (l_rx.var.obj.idx == (uint8_t)(8*QS_OBJ_PTR_SIZE)) {
                    QS_RX_TRAN_(WAIT4_OBJ_FRAME);
    @ -849,7 +849,7 @@ static void QS_rxParseData_(uint8_t b) {
                break;
            }
            case WAIT4_TEST_PROBE_ADDR: {
     -   l_rx.var.tp.addr |= ((uint32_t)b << l_rx.var.tp.idx);
     +   l_rx.var.tp.addr |= ((QSFun)b << l_rx.var.tp.idx);
                l_rx.var.tp.idx += 8U;
                if (l_rx.var.tp.idx == (uint8_t)(8U * QS_FUN_PTR_SIZE)) {
                    QS_RX_TRAN_(WAIT4_TEST_PROBE_FRAME);
    

    The changes will be included in the next official QP/C/C++ release.

    --MMS

     

    Last edit: Quantum Leaps 2021-01-22
  • Quantum Leaps

    Quantum Leaps - 2021-04-21

    Fixed in QP/C/C++ 6.9.3.
    --MMS

     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB