microWebSrv2



  • Hello all,
    I released a fully new version (v2.0) of my web server here : https://github.com/jczic/MicroWebSrv2.
    Open source MIT, fully asynchronous, more robust, more fast and more efficient on Pycom modules.
    It is delivered with a good documentation.
    Thank you for your support and feedback. ☺️



  • @pigamonte I took two wipy's and let them run over night. Both in station mode connected to same wifi as the laptop. both running microWebSrv2 example and Firefox browser on my laptop requesting the websites repeatedly using a browser extension (Tab Reloader) to refresh every 5 seconds. Neither Wipy core dumped. They served 3000+ GET's each until approx 21:15, which means probably 2h or so of runtime until both of them stopped with an uncaught micropython exception. Probably running out of memory

    Unhandled exception in thread started by <bound_method>
    Traceback (most recent call last):
      File "MicroWebSrv2/libs/XAsyncSockets.py", line 141, in _processWaitEvents
      File "MicroWebSrv2/libs/XAsyncSockets.py", line 125, in _processWaitEvents
      File "MicroWebSrv2/libs/XAsyncSockets.py", line 88, in _socketListAdd
    MemoryError: memory allocation failed, allocating 16384 bytes
    
    • How exactly are you erasing/flashing? With the Firmware Updater application https://docs.pycom.io/updatefirmware/device/ ? Makefile? Self compiled? Please elaborate
    • Please show the ...on_boot settings as per my last post
    • How do you supply power to the Wipy? USB from laptop? Anything else connected?
    • Do you have multiple Wipy's and Expansion boards to try? How many? Is the behaviour different?
    • Is it a Wipy2 or Wipy3 (printed on the bottom)
    • Can you try other usb ports/ cables/ power supplies?


  • @peterp, Thanks for testing. I set my test up again to see how you got yours to work for 230+ gets. It appears the problem isn't linked to MicroWebSrv2 at all.

    I erased the wipy and reloaded fw 1.20.2.r4. Then, without loading any code or making any configuration, I connect to the default access point. Within a minute or two the wipy crashes. My PC must be sending some traffic that causes the crash.

    Here are more dumps as requested by @Gijs

    Guru Meditation Error: Core  0 panic'ed (IllegalInstruction). Exception was unhandled.
    Memory dump at 0x4017b314: 00000099 03064000 80145070
    Core 0 register dump:
    PC      : 0x4017b319  PS      : 0x00060a30  A0      : 0x8017f804  A1      : 0x3ffbaee0
    A2      : 0x3fbc1674  A3      : 0x3ffdfa8c  A4      : 0x00000004  A5      : 0xffffffff
    A6      : 0x3fbc1622  A7      : 0x00000045  A8      : 0x80175d83  A9      : 0x3ffbaed0
    A10     : 0x00000000  A11     : 0x0001003c  A12     : 0x00000000  A13     : 0x00000000
    A14     : 0x3ffb9f88  A15     : 0x00000001  SAR     : 0x00000019  EXCCAUSE: 0x00000000
    EXCVADDR: 0x00000000  LBEG    : 0x40092834  LEND    : 0x40092862  LCOUNT  : 0xffffffff
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x4017b319:0x3ffbaee0 0x4017f801:0x3ffbaf10 0x4016fe1d:0x3ffbaf30
    
    Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
    Core 0 register dump:
    PC      : 0x4011fd46  PS      : 0x00060c30  A0      : 0x00000011  A1      : 0x3ffb41c0
    A2      : 0x3fbc195c  A3      : 0x00000000  A4      : 0x00000001  A5      : 0x00000001
    A6      : 0x00000000  A7      : 0x00000008  A8      : 0x00124040  A9      : 0x3ffb41c0
    A10     : 0x3ffb420e  A11     : 0x3ffe28f4  A12     : 0x00000004  A13     : 0x3ffb4214
    A14     : 0x777749d2  A15     : 0x777749d2  SAR     : 0x00000010  EXCCAUSE: 0x0000001c
    EXCVADDR: 0x00000026  LBEG    : 0x40092834  LEND    : 0x40092862  LCOUNT  : 0xffffffff
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x4011fd46:0x3ffb41c0 0x0000000e:0x3ffb41f0 0x4014b02d:0x3ffb4290
    
    Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
    Core 0 register dump:
    PC      : 0xc1250358  PS      : 0x00060c30  A0      : 0xc1250358  A1      : 0x3ffb4210
    A2      : 0x00000001  A3      : 0x00000000  A4      : 0x3ffb4518  A5      : 0x3ffcc558
    A6      : 0x77a00000  A7      : 0x3ffb4518  A8      : 0x40087d1c  A9      : 0x0003ff00
    A10     : 0x00000000  A11     : 0x00000000  A12     : 0x00000000  A13     : 0x3ffc0d4c
    A14     : 0x000000fe  A15     : 0x00000001  SAR     : 0x0000001c  EXCCAUSE: 0x00000014
    EXCVADDR: 0xc1250358  LBEG    : 0x40092834  LEND    : 0x40092862  LCOUNT  : 0xffffffff
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x41250358:0x3ffb4210 0x41250355:0x3ffb4290
    
    Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
    Core 0 register dump:
    PC      : 0x4014ff7b  PS      : 0x00060e30  A0      : 0x8014b079  A1      : 0x3ffb4210
    A2      : 0x00000079  A3      : 0x00000018  A4      : 0x3ffb450c  A5      : 0x3ffcc558
    A6      : 0x3fbc1e74  A7      : 0x3ffb4588  A8      : 0x8014ff60  A9      : 0x3fbc1ea4
    A10     : 0x3fbc1e74  A11     : 0x3ffc0e38  A12     : 0x3ffc0460  A13     : 0x0000001c
    A14     : 0x00000001  A15     : 0x0000009d  SAR     : 0x00000019  EXCCAUSE: 0x0000001c
    EXCVADDR: 0x8014b079  LBEG    : 0x400919b4  LEND    : 0x400919bf  LCOUNT  : 0x00000000
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x4014ff7b:0x3ffb4210 0x4014b076:0x3ffb4290
    


  • @pigamonte Ok, I let this run for a while (230 GET's). No problem so far. How quickly do you get a crash? How stable is the reproduction? Does it happen regularly, or is it very random? Do you think that Access Point is critical for the reproduction? Or can you also reproduce the problem with Station mode? It would be easier for me to let it run a long time if I could use station mode.

    Edit: Also, which FW are you using? And please post the output of

            import pycom
            print('heartbeat', pycom.heartbeat_on_boot())
            print('lte', pycom.lte_modem_en_on_boot())
            print('pybytes', pycom.pybytes_on_boot())
            print('smart_config', pycom.smart_config_on_boot())
            print('wdt', pycom.wdt_on_boot())
            print('wifi', pycom.wifi_on_boot())
    

    Did you notice any difference between WiPy's if you have multiple? Some crash (more often) than others?



  • @pigamonte
    I am little surprised that it run now without frozen modules :)
    Previous versions require to froze code to optimize memory usage



  • @peterp Please download from here . I changed one line in the index.html inside the head tag in order to reproduce easily.

    <meta http-equiv="Refresh" content="4; url=/index.html" />
    

    The head tag will look like this

    <head>
            <meta charset="UTF-8" />
            <title>MicroWebSrv2</title>
            <link rel="stylesheet" href="style.css" />
            <meta http-equiv="Refresh" content="4; url=/index.html" />
        </head>
    

    The hardware setup is just the wipy on the pycom Expansion board powered via USB.

    To see it fail, connect your device to the default access point on the wipy, then open a browser at 192.168.4.1 and wait a few moments.



  • I have decoded the backtraces using the Pybytes firmware version of the Wipy (1.20.2.r4), in order, we get:

    wdevProcessRxSucDataAll
    ??:?
    ppTask
    ??:?
    

    ,

    pbuf_header_impl
    /home/peter/docs/pycom-esp-idf/components/lwip/lwip/src/core/pbuf.c:1331
    pbuf_header
    /home/peter/docs/pycom-esp-idf/components/lwip/lwip/src/core/pbuf.c:1331
    ethernet_input
    /home/peter/docs/pycom-esp-idf/components/lwip/lwip/src/netif/ethernet.c:176
    tcpip_thread
    /home/peter/docs/pycom-esp-idf/components/lwip/lwip/src/api/tcpip.c:483
    

    and

    ieee80211_crypto_decap
    ??:?
    ieee80211_crypto_encap
    ??:?
    ieee80211_output_process
    ??:?
    ppTask
    ??:?
    

    There seems to be no commonality between the three unfortunately, and two of them are related to the esp-idf part, which is outside the pycom firmware. Do you perhaps have any more that we could look at?

    Note that coredumps could also be related to transients on the power supply and memory allocation. I dont know anything about the size of your program, but if we're reaching the memory limit, the StoreProhibited error could be related to that.



  • @pigamonte could you share your python code?



  • @Gijs The dumps are different every time. Here are 3 for example.

    Core 0 register dump:: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
    PC      : 0x4014ff7b  PS      : 0x00060e30  A0      : 0x8014b079  A1      : 0x3ffb4210
    A2      : 0xb6000000  A3      : 0x00000018  A4      : 0x3ffb4548  A5      : 0x3ffcc558
    A6      : 0xbfbcff6c  A7      : 0x3ffde18c  A8      : 0x8014ff60  A9      : 0x3ffb41d0
    A10     : 0x3fbc2b6c  A11     : 0x3ffc0e38  A12     : 0x3ffc0460  A13     : 0x00000000
    A14     : 0x00000001  A15     : 0x0000019c  SAR     : 0x00000010  EXCCAUSE: 0x0000001c  
    EXCVADDR: 0x8014b079  LBEG    : 0x400919b4  LEND    : 0x400919bf  LCOUNT  : 0x00000000
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x4014ff7b:0x3ffb4210 0x4014b076:0x3ffb4290
    
    Guru Meditation Error: Core  0 panic'ed (IllegalInstruction). Exception was unhandled.
    Memory dump at 0x40175d1c: 2af6f4a0 0083d41c 070518a2
    Core 0 register dump:
    PC      : 0x40175d21  PS      : 0x00060e30  A0      : 0x80175d83  A1      : 0x3ffbaed0
    A2      : 0x0000000e  A3      : 0xfffffff2  A4      : 0x00000000  A5      : 0x00000000
    A6      : 0x3ffb9f74  A7      : 0x00000001  A8      : 0x3fbc24fc  A9      : 0x3fbc13bc
    A10     : 0x00000001  A11     : 0x00000000  A12     : 0xffffffff  A13     : 0x00000001
    A14     : 0x000000fe  A15     : 0x00000000  SAR     : 0x00000019  EXCCAUSE: 0x00000000
    EXCVADDR: 0x00000000  LBEG    : 0x40092834  LEND    : 0x40092862  LCOUNT  : 0xffffffff
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x40175d21:0x3ffbaed0 0x40175d80:0x3ffbaef0 0x4017f7f8:0x3ffbaf10 0x4016fe1d:0x3ffbaf30
    
    Guru Meditation Error: Core  0 panic'ed (StoreProhibited). Exception was unhandled.
    Core 0 register dump:
    PC      : 0x4011fe4c  PS      : 0x00060a30  A0      : 0x8011fd80  A1      : 0x3ffb41a0
    A2      : 0x3fbc1ea8  A3      : 0x3ffe2cd4  A4      : 0x00000000  A5      : 0x3ffb4214
    A6      : 0x777749d2  A7      : 0x777749d2  A8      : 0x3ffe2d4e  A9      : 0x3fbc1ea8
    A10     : 0x0000003c  A11     : 0x000007c6  A12     : 0x00000001  A13     : 0x000007c5
    A14     : 0x3ffe2d04  A15     : 0x00000000  SAR     : 0x00000010  EXCCAUSE: 0x0000001d
    EXCVADDR: 0x00000005  LBEG    : 0x40092834  LEND    : 0x40092862  LCOUNT  : 0xffffffff
    
    ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000
    
    Backtrace: 0x4011fe4c:0x3ffb41a0 0x4011fd7d:0x3ffb41c0 0x4012c876:0x3ffb41f0 0x4014b02d:0x3ffb4290
    


  • @pigamonte Perhaps you could take the problem up with them, or check their Github issues for similar problems. Seeing as this topic is over a year old, you might not get a response from them.

    If you believe the issue is related to the pycom firmware, could you have a look at this page (https://docs.pycom.io/advance/coredump/) and see if you can decode the coredumps. Let me know what you get, and if it is the same everytime

    Best,
    Gijs



  • MicroWebSrv2 its not running well on wipy. After refreshing the home page a few times wipy will crash with guru meditation error. I tried it with v1.20.2.r4.


Log in to reply
 

Pycom on Twitter