- Notifications
You must be signed in to change notification settings - Fork 13.3k
Closed
Description
Basic Infos
- [x ] This issue complies with the issue POLICY doc.
- [x ] I have read the documentation at readthedocs and the issue is not addressed there.
- [x ] I have tested that the issue is present in current master branch (aka latest git).
- [x ] I have searched the issue tracker for a similar issue.
- [x ] If there is a stack dump, I have decoded it.
- [x ] I have filled out all fields below.
Platform
- Hardware: any ESP8266
- Core Version: 2.6.3
- Development Env: Arduino IDE 1.8.10
- Operating System: Windows7
Settings in IDE not relevant, occurs on many boards
Problem Description
Calling MDNS.end() when already closed causes exception 28. Yes, I know it's not a normal thing to do, but if your code gets "out of step" for some other reason, an exception is a heavy punishment! Can we change it to just silently do nothing, as most other APIs do? For example calling WiFi.disconnect() when already disconnected causes no ill effects
MCVE Sketch
#include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266mDNS.h> #include <ArduinoOTA.h> void setup() { Serial.begin(115200); Serial.println("Booting"); WiFi.mode(WIFI_STA); WiFi.begin("XXXXXXXX", "XXXXXXXX"); WiFi.waitForConnectResult(); ArduinoOTA.begin(); Serial.println("Ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Close MDNS OK\n"); MDNS.end(); Serial.print("Close Again\n"); MDNS.end(); Serial.print("You will never see this message\n"); } void loop() { ArduinoOTA.handle(); }
Debug Messages
Booting Ready IP address: 192.168.1.106 Close MDNS OK Close Again Exception (28): epc1=0x40207a2b epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 >>>stack>>> ctx: cont sp: 3ffffd30 end: 3fffffc0 offset: 01a0 3ffffed0: 3ffe86b7 0000204a 00000000 00000000 3ffffee0: 4020c438 00000000 0000019d 401009a0 3ffffef0: 000008a0 00000000 3ffee48c 40207ac2 3fffff00: 00000ca0 00000194 00000194 3ffee708 3fffff10: 3fffdad0 3ffee48c 3ffee48c 40206341 3fffff20: 3ffe866b 00000000 3ffee48c 40203650 3fffff30: 3ffe0000 00000000 01010003 40010001 3fffff40: 40200000 00000000 3ffee48c 40202fd0 3fffff50: 00000000 00000000 3ffe865f 3ffee708 3fffff60: 3fffdad0 3ffee48c 3ffee48c 40202ff6 3fffff70: 3fffdad0 3ffee48c 3ffee5c0 40203020 3fffff80: 3fffdad0 3ffee470 3ffee5c0 402010d4 3fffff90: 4020c438 6a01a8c0 feefeffe feefeffe 3fffffa0: feefeffe 00000000 3ffee6c8 4020a634 3fffffb0: feefeffe feefeffe 3ffe84f8 40100eed <<<stack<<<
Decoded Stack Trace
Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads PC: 0x40207a2b: esp8266::MDNSImplementation::MDNSResponder::_sendMDNSMessage_Multicast(esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 125 EXCVADDR: 0x00000000 Decoding stack results 0x401009a0: umm_free_core(void*) at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266\umm_malloc\umm_malloc.cpp line 316 0x40207ac2: esp8266::MDNSImplementation::MDNSResponder::_sendMDNSMessage(esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 96 0x40206341: esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter::stcMDNSSendParameter() at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS_Structs.cpp line 2375 0x40203650: esp8266::MDNSImplementation::MDNSResponder::_announce(bool, bool) at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1607 0x40202fd0: std::__shared_ptr ::reset() at c:\users\phil\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2\bits/shared_ptr_base.h line 882 0x40202ff6: esp8266::MDNSImplementation::MDNSResponder::close() at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 223 0x40203020: esp8266::MDNSImplementation::MDNSResponder::end() at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 243 0x402010d4: setup() at C:\Users\phil\Documents\Arduino\mdnsbug/mdnsbug.ino line 21 0x4020a634: loop_wrapper() at C:\Users\phil\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266\core_esp8266_main.cpp line 177
Metadata
Metadata
Assignees
Labels
No labels