Skip to content

mDNS seems to cause trouble with ArduinoOTA #5656

Description

@milkpirate

I am having trouble with ArduinoOTA which seems to be caused by mDNS:

Minimal example - Arduini IDE 1.8.8:

#include <ArduinoOTA.h>
#include <Streaming.h>

void setup()
{
  Serial.begin(74880);
  delay(1);   // esp doesnt like writing to serial right away

  Serial<<endl<<endl;
  Serial<<F("Build date/time:         " __DATE__ " / " __TIME__)<<endl;
  Serial<<F("Reset info:              ")<<ESP.getResetInfo()<<endl;
  Serial<<F("Boot mode:               ")<<ESP.getBootMode()<<endl;
  Serial<<F("Boot version:            ")<<ESP.getBootVersion()<<endl;
  Serial<<F("Reset cause:             ")<<ESP.getResetReason()<<endl;
  Serial<<F("CPU frequency (MHz):     ")<<ESP.getCpuFreqMHz()<<endl;
  Serial<<F("Core version:            ")<<ESP.getCoreVersion()<<endl;
  
  Serial<<F("SDK version:             ")<<ESP.getSdkVersion()<<endl;
  Serial<<F("Flash chip mode:         ")<<ESP.getFlashChipMode()<<endl;
  Serial<<F("Flash size (by SDK):     ")<<ESP.getFlashChipSize()<<endl;
  Serial<<F("Flash size (by chip ID): ")<<ESP.getFlashChipRealSize()<< endl;
  Serial<<F("Flash speed (MHz):       ")<<ESP.getFlashChipSpeed()/1000000<<endl;
  
  Serial<<F("Sketch size/left:        ")<<ESP.getSketchSize()<<F(" / ") << ESP.getFreeSketchSpace()<<endl;
  Serial<<F("Sketch usage:            ")<<(ESP.getFreeSketchSpace()+ESP.getSketchSize())/ESP.getSketchSize()<<F("%")<<endl;
  Serial<<F("Sketch MD5:              ")<<ESP.getSketchMD5()<<endl;
  Serial<<F("Free heap:               ")<<ESP.getFreeHeap()<<endl; 

  Serial<<endl<<"start ota";
  
  ArduinoOTA.setHostname("espOTA");  // Hostname defaults
  ArduinoOTA.begin();
}


void loop() {
  ArduinoOTA.handle();
}

Serial:


 ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld


Build date/time:         Jan 21 2019 / 20:08:24
Reset info:              Fatal exception:0 flag:6 (EXT_SYS_RST) epc1:0x00000000 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000
Boot mode:               1
Boot version:            31
Reset cause:             External System
CPU frequency (MHz):     80
Core version:            2_5_0_BETA2
SDK version:             3.0.0-dev(c0f7b44)
Chip ID:                 0xE3232C
Flash ID:                0x1640E0
Flash chip mode:         0
Flash size (by SDK):     4194304
Flash size (by chip ID): 4194304
Flash speed (MHz):       40
Sketch size/left:        361008 / 3829760
Sketch usage:            11%
Sketch MD5:              6fb3b7badf1313bcb2d3276daed7dcd8
Free heap:               48760

start ota
...

Stack trace:

its not always the same it differs from boot to boot but its always related to some mDNS methods:


Exception 9: LoadStoreAlignmentCause: Load or store to an unaligned address
PC: 0x4020689f: esp8266::MDNSImplementation::MDNSResponder::_parseMessage() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 119
EXCVADDR: 0x40206977: esp8266::MDNSImplementation::MDNSResponder::_process(bool) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 74

Decoding stack results
0x40206998: esp8266::MDNSImplementation::MDNSResponder::_callProcess() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Helpers.cpp line 175
0x4020b9af: std::_Function_handler    (esp8266::MDNSImplementation::MDNSResponder*)> >::_M_invoke(std::_Any_data const&) at c:\users\<user>\documents\arduinodata\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 2073
0x40202e5e: std::function ::operator()() const at c:\users\<user>\documents\arduinodata\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 2465
0x40202ea4: UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip4_addr const*, unsigned short) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266WiFi\src/include/UdpContext.h line 423
0x401002b0: pvPortMalloc at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\heap.c line 153
0x4021afcc: udp_input at core/udp.c line 404
0x401007fc: malloc at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\umm_malloc\umm_malloc.c line 1673
0x40220000: raw_input at core/raw.c line 187
0x4021f0c0: ip4_input at core/ipv4/ip4.c line 704
0x401005ac: _umm_free at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\umm_malloc\umm_malloc.c line 1300
0x40217041: ethernet_input_LWIP2 at netif/ethernet.c line 188
0x40216e77: esp2glue_ethernet_input at glue-lwip/lwip-git.c line 422
0x40236442: ethernet_input at glue-esp/lwip-esp.c line 363
0x40236453: ethernet_input at glue-esp/lwip-esp.c line 371
0x40208b8c: esp8266::MDNSImplementation::MDNSResponder::_udpAppendBuffer(unsigned char const*, unsigned int) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1036
0x40208bba: esp8266::MDNSImplementation::MDNSResponder::_udpAppend8(unsigned char) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1048
0x40208cfd: esp8266::MDNSImplementation::MDNSResponder::_write8(unsigned char, esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1176
0x40208f39: esp8266::MDNSImplementation::MDNSResponder::_writeMDNSHostDomain(char const*, bool, esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1289
0x40208c0e: esp8266::MDNSImplementation::MDNSResponder::_udpAppend32(unsigned int) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1066
0x40208d29: esp8266::MDNSImplementation::MDNSResponder::_write16(unsigned short, esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1186
0x4020920d: esp8266::MDNSImplementation::MDNSResponder::_writeMDNSAnswer_PTR_IP4(IPAddress, esp8266::MDNSImplementation::MDNSResponder::stcMDNSSendParameter&) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Transfer.cpp line 1421
0x40216a31: glue2esp_linkoutput at glue-esp/lwip-esp.c line 299
0x40216cb3: new_linkoutput at glue-lwip/lwip-git.c line 233
0x402170c8: ethernet_output at netif/ethernet.c line 312
0x4021e7f9: etharp_output_LWIP2 at core/ipv4/etharp.c line 896
0x4020b535: loop_wrapper() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\core_esp8266_main.cpp line 124
0x4020b524: loop_wrapper() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\core_esp8266_main.cpp line 120
0x4020b518: loop_wrapper() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\core_esp8266_main.cpp line 117
0x401005ac: _umm_free at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\umm_malloc\umm_malloc.c line 1300
0x401009f0: free at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\umm_malloc\umm_malloc.c line 1760
0x4021fdf0: mem_free at core/mem.c line 237
0x40206964: esp8266::MDNSImplementation::MDNSResponder::_process(bool) at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 84
0x40204efc: esp8266::MDNSImplementation::MDNSResponder::update() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 1077
0x402038b6: ArduinoOTAClass::handle() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\ArduinoOTA\ArduinoOTA.cpp line 366
0x4020b4ad: esp_schedule() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\core_esp8266_main.cpp line 95
0x4020b53e: loop_wrapper() at C:\Users\<user>\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\cores\esp8266\core_esp8266_main.cpp line 127

Stack dump:

Exception (9):
epc1=0x4020689f epc2=0x00000000 epc3=0x00000000 excvaddr=0x40206977 depc=0x00000000

>>>stack>>>

ctx: sys
sp: 3fffec60 end: 3fffffb0 offset: 01a0
3fffee00:  72616843 69646279 3ffe0073 00000000  
3fffee10:  00000001 00000000 4000050c 00000000  
3fffee20:  40223a0d 0000001f 4010508d 4000050c  
3fffee30:  401051d0 006261b9 3fff0344 00000000  
3fffee40:  3ffee260 3ffef1f4 00000000 402283db  
3fffee50:  00000000 0045c581 40228446 3fff05bc  
3fffee60:  3fff05ee 00000000 3fff0344 40206998  
3fffee70:  00000011 00000001 00000020 4020b9af  
3fffee80:  00000000 10310606 00640100 40202e5e  
3fffee90:  3fff05ee 00000000 3fff038c 40202ea4  
3fffeea0:  00000065 401002b0 3fff038c 4021afcc  
3fffeeb0:  000014e9 3ffeef94 3ffeef94 401007fc  
3fffeec0:  40220000 00000065 3fffef30 3ffeef94  
3fffeed0:  3ffef03c 3fff05bc 3fff05da 4021f0c0  
3fffeee0:  00000014 00000000 3ffeef94 401005ac  
3fffeef0:  3fffdc80 3ffef5a4 3fff04fc 3ffef5ec  
3fffef00:  00000008 3ffeef94 3fff05bc 40217041  
3fffef10:  3fffdc80 3ffef5a4 3fff04fc 40216e77  
3fffef20:  40236442 3ffef5a4 3fff04fc 40236453  
3fffef30:  3fff05cc 3fff05bc 00000002 3ffe85e8  
3fffef40:  4023112f 00000000 3fff04fc 402380bf  
3fffef50:  40000f49 3fffdab0 3fffdab0 40000f49  
3fffef60:  40000e19 40001878 00000004 3fffffb0  
3fffef70:  3fffff10 aa55aa55 000000ba 401048b4  
3fffef80:  401048ba 00000004 3fffffb0 40104424  
3fffef90:  4010000d 00000002 00000000 b94f2195  
3fffefa0:  00000000 3fffef3c 00000000 3fffff58  
3fffefb0:  3fffffc0 00000000 00000000 feefeffe  
3fffefc0:  feefeffe feefeffe feefeffe feefeffe
...
3ffffa50:  feefeffe feefeffe feefeffe feefeffe  
3ffffa60:  00000001 feefeffe feefeffe feefeffe  
3ffffa70:  feefeffe feefeffe feefeffe 0000000c  
3ffffa80:  3ffef6ec 3ffee92c 00000001 40208b8c  
3ffffa90:  feefeffe feefeffe 3fffff00 40208bba  
3ffffaa0:  feef020c feefeffe feefeffe feefeffe  
3ffffab0:  feefeffe feefeffe 3fffff00 40208cfd  
3ffffac0:  feefeffe feefeffe 3fffff00 40208f39  
3ffffad0:  00000000 00000000 00000000 00000000  
3ffffae0:  00000000 00000000 00000000 00000000  
3ffffaf0:  00000000 00000000 00000000 00000000  
3ffffb00:  00000000 00000000 00000000 00000000  
3ffffb10:  00000000 00000000 00000000 00000000  
3ffffb20:  00000000 00000000 00000000 00000000  
3ffffb30:  00000000 00000000 00000000 00000000  
3ffffb40:  00000000 00000000 00000000 00000000  
3ffffb50:  00000000 00000000 00000000 00000000  
3ffffb60:  00000000 00000000 00000000 00000000  
3ffffb70:  00000000 00000000 00000000 00000000  
3ffffb80:  00000000 00000000 00000000 00000000  
3ffffb90:  00000000 00000000 00000000 00000000  
3ffffba0:  00000000 00000000 00000000 00000000  
3ffffbb0:  00000000 00000000 00000000 00000000  
3ffffbc0:  00000000 00000000 00000000 00000000  
3ffffbd0:  00320000 00000000 3ffee92c 40208c0e  
3ffffbe0:  00000001 3fffff00 3fffff00 40208d29  
3ffffbf0:  00000000 00000000 3fffff00 3ffffe6c  
3ffffc00:  00000102 3ffee92c 3fffff00 4020920d  
3ffffc10:  00000000 00000000 00000000 00000000  
3ffffc20:  00000000 00000000 00000000 00000000  
3ffffc30:  00000000 00000000 00000000 00000000  
3ffffc40:  00000000 00000000 00000000 00000000  
3ffffc50:  00000000 00000000 00000000 00000000  
3ffffc60:  00000000 00000000 4023228b 00000001  
3ffffc70:  ffffffff 00000000 3ffe90a1 00000008  
3ffffc80:  402322da 3ffec6c0 3ffef1dc 00000001  
3ffffc90:  402323e6 3ffec6c0 3ffef1dc 3ffec6c0  
3ffffca0:  00000002 00000000 00000020 401013a6  
3ffffcb0:  3ffe8f52 40231397 3ffec6c0 3fff0a90  
3ffffcc0:  00000000 40224647 3ffedb78 00000000  
3ffffcd0:  00000000 00000002 00000001 3ffec6c0  
3ffffce0:  3fff0af6 40104e33 3fff0a90 3ffef5a4  
3ffffcf0:  3fff0ab4 00000000 00000000 00000000  
3ffffd00:  00000000 40216a31 3ffeeb74 3ffef5a4  
3ffffd10:  3fff0af6 0000007b 36310337 39310338  
3ffffd20:  6e690732 6464612d 72610472 00000000  
3ffffd30:  3ffeefcc 3ffeef94 3fff0ab4 40216cb3  
3ffffd40:  00000000 3ffeef94 3fff0ab4 402170c8  
3ffffd50:  3ffffd80 00000000 00000000 00000000  
3ffffd60:  00000000 00000000 00000020 401013a6  
3ffffd70:  3ffe8f50 40104790 3ffec800 4021e7f9  
3ffffd80:  00000005 00000000 00000020 401013a6  
3ffffd90:  3ffe8f55 401047ab 3ffec918 40102292  
3ffffda0:  00000005 00000000 00000020 401013a6  
3ffffdb0:  3ffe8f55 401047ab 3ffec918 40102292  
3ffffdc0:  401020c1 3ffec918 3ffed0d0 401013a6  
3ffffdd0:  00007fff 00dfa387 3ffed3ec 40102292  
3ffffde0:  3ffe97e8 00000000 00000000 00000001  
3ffffdf0:  00007fff 00dfa387 401026d2 00000100  
3ffffe00:  00000005 00000000 00000020 401013a6  
3ffffe10:  3ffe8f55 401047ab 3ffec918 00000022  
3ffffe20:  401020c1 3ffec918 00000000 4000050c  
3ffffe30:  00000000 00dfa5b5 3ffed3ec 40102292  
3ffffe40:  3ffe97f4 00000000 00000000 00000000  
3ffffe50:  00000000 00dfa5b5 401026d2 00000100  
3ffffe60:  7fffffff 3ffe97f4 3ffe97f4 00000001  
3ffffe70:  00000001 00006208 00000000 00000001  
3ffffe80:  ffffffff 00dfa5b5 00000000 4000050c  
3ffffe90:  3fffc278 4010246c 3fffc200 00000022  
3ffffea0:  3ffe9800 3fffc6fc 00000001 3ffeea8c  
3ffffeb0:  4020b535 00000030 0000001e ffffffff  
3ffffec0:  4020b524 00000001 4020b518 00000000  
3ffffed0:  00000000 00000000 00000000 fffffffe  
3ffffee0:  ffffffff 3fffc6fc 00000001 3ffeea8c  
3ffffef0:  00000000 3fffdad0 3ffeeac0 00000030  
3fffff00:  3ffeeb40 000002a3 000002a3 401005ac  
3fffff10:  3ffee92c 00000000 3fff05bc 401009f0  
3fffff20:  00000002 3fff03cc 3ffee92c 4021fdf0  
3fffff30:  4020bef8 00000000 4020bef8 00000000  
3fffff40:  00000001 3ffee92c 3fff0344 40206964  
3fffff50:  00000000 00000000 3ffee880 3ffeeac0  
3fffff60:  00000000 3ffee92c 3ffee880 3ffeeac0  
3fffff70:  3fffdad0 00000000 3ffee880 40204efc  
3fffff80:  003ff230 3ffee990 3ffee880 402038b6  
3fffff90:  00000000 00000000 00000001 4020b4ad  
3fffffa0:  3fffdad0 00000000 3ffeea8c 4020b53e  
<<<stack<<<
  • Hardware: [ESP-12F]
  • Development Env: [Arduino IDE]
  • Operating System: [Windows]

Settings in IDE

  • Module: [Generic ESP8266 Module]
  • Flash Mode: [qio]
  • Flash Size: [4MB]
  • lwip Variant: [v2 Lower Memory]
  • Reset Method: [nodemcu]
  • Flash Frequency: [40Mhz]
  • CPU Frequency: [80Mhz]
  • Upload Using: [SERIAL]
  • Upload Speed: [74880]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions