Skip to content

Crash occurs when I try to execute MDNS.removeService #7856

Closed
@whakru

Description

@whakru

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions