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.


Pycom on Twitter