Regular Expresion - REPL - Guru Meditation Error
-
Hi Team,
I was trying to execute a RegEx using REPL in PyMakr and got the Meditation ErrorEnv : (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":"0.0.0.0","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 Rebooting... ets Jun 8 2016 00:22:57 rst:0x3 (SW_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:QIO, clock div:2 load:0x3fff9010,len:8 load:0x3fff9018,len:248 load:0x40078000,len:4072 load:0x4009f000,len:940 entry 0x4009f1ec
Thanks & regards,
Hari
-
@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:
https://github.com/micropython/micropython/issues/2451
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.