Closed
Description
Platform
- Core Version: [arduino 1.8.13 core esp8266 2.7.4]
- Development Env: [Arduino IDE]
- Operating System: [Windows]
Settings in IDE
- Module: [Nodemcu]
- Flash Size: [4MB]
- lwip Variant: [v2 Lower Memory]
- Reset Method: [nodemcu]
- CPU Frequency: [80Mhz]
- Upload Using: [SERIAL]
- Upload Speed: [115200]
Problem Description
Crash occurs when I try to execute MDNS.removeService
If MDNS. end or MDNS.removeService has already been executed before, this causes a crash
MCVE Sketch
if (WiFi.status() == WL_CONNECTED && lastStatus != WL_CONNECTED ){
Serial.printf("Connected, IP is: %s\n", WiFi.localIP().toString().c_str());
MDNS.end(); //завершаем.
MDNS.removeService(DNS_NAME, "http", "tcp");
MDNS.removeService(DNS_NAME, "ws", "tcp");
delay(80);
Serial.printf("MDNS begin 1 \n");
if (!MDNS.begin(DNS_NAME,WiFi.localIP()))
{
Serial.printf("Cannot restart mDNS responder\n");
}
else
{
Serial.printf("mDNS responder restarted\n");
}
Serial.printf("MDNS addService 2 \n");
MDNS.addService("http", "tcp", 80); yield();
MDNS.addService("ws", "tcp", 81); yield();
Debug Messages
13:01:18.835 ->
13:01:18.835 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
13:01:18.835 ->
13:01:18.835 -> Exception (28):
13:01:18.835 -> epc1=0x40210ff3 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
13:01:18.835 ->
13:01:18.835 -> >>>stack>>>
13:01:18.835 ->
13:01:18.835 -> ctx: cont
13:01:18.835 -> sp: 3ffffd00 end: 3fffffc0 offset: 0190
13:01:18.835 -> 3ffffe90: 3fffff40 3fffff10 00000008 0000000c
13:01:18.835 -> 3ffffea0: 3ffefa90 00000008 3ffffec0 402133c0
13:01:18.869 -> 3ffffeb0: 402207d8 00000000 0000000a 4021380c
13:01:18.869 -> 3ffffec0: 534e444d 3fff1534 3ffef5b0 4021108a
13:01:18.869 -> 3ffffed0: 3931203a 36312e32 31332e38 0a33382e
13:01:18.869 -> 3ffffee0: 3fffff00 3fff1534 3fff1534 4020fa9d
13:01:18.869 -> 3ffffef0: 000001f0 0000003e 00000000 4020cf22
13:01:18.869 -> 3fffff00: 3fff0000 00000000 01010000 3f010001
13:01:18.869 -> 3fffff10: 3fff0000 00000000 00000080 00000080
13:01:18.903 -> 3fffff20: 3fff08e8 00000000 3fffff60 3ffef5b0
13:01:18.903 -> 3fffff30: 3ffe8b40 3ffef5b0 3fff1534 4020c63f
13:01:18.903 -> 3fffff40: 3ffe8b40 3ffefa90 3ffef5b0 4020c670
13:01:18.903 -> 3fffff50: 3fffdad0 3ffefa90 3ffef889 40205a75
13:01:18.903 -> 3fffff60: 3fff0400 000d000f 80000001 402207d8
13:01:18.903 -> 3fffff70: 531fa8c0 00000000 3ffefb9c 3ffefbdc
13:01:18.903 -> 3fffff80: 3fffdad0 00000000 3ffefb9c 3ffefbdc
13:01:18.903 -> 3fffff90: 3fffdad0 00000000 3ffefb9c 40206b2c
13:01:18.937 -> 3fffffa0: 3fffdad0 00000000 3ffefb9c 40215da0
13:01:18.937 -> 3fffffb0: feefeffe feefeffe 3ffe85b4 40101445
13:01:18.937 -> <<<stack<<<
13:01:18.937 ->
13:01:18.937 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
13:01:18.937 ->
13:01:18.937 -> ets Jan 8 2013,rst cause:2, boot mode:(3,6)
13:01:18.972 ->
13:01:18.972 -> load 0x4010f000, len 3584, room 16
13:01:18.972 -> tail 0
13:01:18.972 -> chksum 0xb0
13:01:18.972 -> csum 0xb0
13:01:18.972 -> v2843a5ac
13:01:18.972 -> ~ld
13:01:19.042 ->
13:01:20.677 ->
Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
PC: 0x40210ff3: esp8266::MDNSImplementation::MDNSResponder::_sendMDNSMessage_Multicast(esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 125
EXCVADDR: 0x00000000
Decoding stack results
0x402133c0: HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266/HardwareSerial.h line 165
0x4021380c: Print::printf(char const*, ...) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\Print.cpp line 74
0x4021108a: esp8266::MDNSImplementation::MDNSResponder::_sendMDNSMessage(esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 96
0x4020fa9d: esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter::stcMDNSSendParameter() at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS_Structs.cpp line 2375
0x4020cf22: esp8266::MDNSImplementation::MDNSResponder::_announceService(esp8266::MDNSImplementation::MDNSResponder::stcMDNSService&, bool) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1641
0x4020c63f: esp8266::MDNSImplementation::MDNSResponder::removeService(void const*) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 343
0x4020c670: esp8266::MDNSImplementation::MDNSResponder::removeService(char const*, char const*, char const*) at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 362
0x40205a75: CheckConnect() at D:\YandexDisk\Нужное\Arduino\b1_CLOCK_v1.4NEW/a1_1wifi_init.ino line 398
0x40206b2c: loop() at D:\YandexDisk\Нужное\Arduino\b1_CLOCK_v1.4NEW/b1_CLOCK_v1.4NEW.ino line 314
0x40215da0: loop_wrapper() at C:\Users\oao-a\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_main.cpp line 197