Regular Expresion - REPL - Guru Meditation Error

  • Hi Team,
    I was trying to execute a RegEx using REPL in PyMakr and got the Meditation Error

    Env : (sysname='LoPy', nodename='LoPy', release='1.2.2.b1', version='v1.8.6-317-g9ab243e on 2017-01-10', machine='LoPy with ESP32')
    >>> import ure
    >>> ure.match(b'^INFO( )+(.+)$','INFO {"server_id":"1ec445b504f4edfb4cf7927c707dd717","version":"0.6.6","go":"go1.4.2","host":"","port":4222,"auth_required":false,"ssl_required":false,"max_payload":1048576}').group(0)
    Guru Meditation Error of type StoreProhibited occurred on core  0. Exception was unhandled.
    Register dump:
    PC      : 0x4008832d  PS      : 0x00060031  A0      : 0x80086fff  A1      : 0x3ffc0790  
    A2      : 0x3ffc5105  A3      : 0x3ffec2e0  A4      : 0x00000001  A5      : 0x3ffec250  
    A6      : 0x000000aa  A7      : 0x3ffec200  A8      : 0x25000000  A9      : 0x00000000  
    A10     : 0x0a000000  A11     : 0x00060023  A12     : 0x00060021  A13     : 0xb33f0000  
    A14     : 0xb33fffff  A15     : 0x3ffec1e0  SAR     : 0x00000020  EXCCAUSE: 0x0000001d  
    EXCVADDR: 0x00000008  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0x00000000  
    Backtrace: 0x4008832d:0x3ffc0790 0x40086fff:0x3ffc07b0 0x4008591e:0x3ffc07d0 0x40087d90:0x3ffc07f0 0x400812dd:0x3ffc0800
    ets Jun  8 2016 00:22:57
    rst:0x3 (SW_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0x00
    mode:QIO, clock div:2
    entry 0x4009f1ec

    Thanks & regards,

  • @pod32, this was just a minimalistic example that triggers the guru. Unfortunately, we've been busy dealing with other parts of the firmware, and unable to find the root cause of this bug.

  • Have you tried to replace it by something like "\s{30}"?

  • @robert-hh @abilio When can we expect a fix for this issue ?

  • A similar error was discussed in the original Micropython community here:
    The problem is not solved yet, as far as I know.

  • @mkharibalaji, I narrowed it down to this test:

    The next example will make it break:

    import ure
    ure.match(b'^( )+$','                                                   ') # this will break

    But this won't: (I just removed a whitespace)

    import ure
    ure.match(b'^( )+$','                                                  ')

    It seems it has something to do with the length of the parameter.

    Thank you very much for you're report. We'll be looking into it.

Log in to reply

Pycom on Twitter