Using the new Arduino IDE for ESP8266 and found bugs, report them here

Moderator: igrr

User avatar
By EdF
#84070 When I run the following sketch on a D1 mini and connect to the AP it hosts, it starts sending UDP packets as expected but then randomly crashes. Sometimes in a few seconds, sometimes in a few minutes. This is just using an unmodified D1 mini plugged into my laptop via USB.

What am I doing wrong?

Here's the sketch:
Code: Select all#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

WiFiUDP udp;

void setup()
{
  Serial.begin(9600);
  WiFi.mode(WIFI_AP);
  if (!WiFi.softAP("crash",0,1,false,4))
    Serial.println("WiFi.beginAP failed");
  IPAddress ip = WiFi.softAPIP();
  udp.begin(2000);
}

void loop()
{
  if (WiFi.softAPgetStationNum() == 0){
    Serial.print(".");
    return;
  }
 
  char rgb[500];
  udp.beginPacket(IPAddress(192,168,4,2), 2000);
  udp.write(rgb, 500);
  udp.endPacket();
  Serial.print("x");
}


And here's a typical crash:
Exception 0: Illegal instruction
PC: 0x40230188
EXCVADDR: 0x00000000

Decoding stack results
0x40204b48: check_poison_block(umm_block*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 860
0x40204b96: get_unpoisoned(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 950
0x40218181: ip4_input at core/ipv4/ip4.c line 499
0x40218155: ip4_input at core/ipv4/ip4.c line 466
0x40203cf8: malloc_loc(size_t, char const*, int) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 126
0x40203c55: malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 95
0x40204d8c: umm_malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1685
0x40203c55: malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 95
0x40218ffc: mem_malloc at core/mem.c line 210
0x40204fa8: free(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1764
0x40204880: _umm_free(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1304
0x40210761: ethernet_input_LWIP2 at netif/ethernet.c line 188
0x40210597: esp2glue_ethernet_input at glue-lwip/lwip-git.c line 441
0x4022f32a: ethernet_input at glue-esp/lwip-esp.c line 363
0x4022f33b: ethernet_input at glue-esp/lwip-esp.c line 371
0x40203460: ets_printf_P(char const*, ...) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_postmortem.cpp line 80
0x40203454: ets_printf_P(char const*, ...) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_postmortem.cpp line 80
0x401001bc: vPortFree(void*, char const*, int) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 61
0x40210240: dhcp_start at glue-esp/lwip-esp.c line 423
0x402034ae: print_stack(uint32_t, uint32_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_postmortem.cpp line 197
0x4020365c: __wrap_system_restart_local() at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_postmortem.cpp line 175
0x40201b31: UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip4_addr const*, unsigned short) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WiFi\src/include/UdpContext.h line 475
0x40204b48: check_poison_block(umm_block*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 860
0x40204b96: get_unpoisoned(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 950
0x40218181: ip4_input at core/ipv4/ip4.c line 499
0x40218155: ip4_input at core/ipv4/ip4.c line 466
0x40203cf8: malloc_loc(size_t, char const*, int) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 126
0x40203c55: malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 95
0x40204d8c: umm_malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1685
0x40203c55: malloc(size_t) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\heap.cpp line 95
0x40218ffc: mem_malloc at core/mem.c line 210
0x40204fa8: free(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1764
0x40204880: _umm_free(void*) at C:\Users\edf\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1304
0x40210761: ethernet_input_LWIP2 at netif/ethernet.c line 188
0x40210597: esp2glue_ethernet_input at glue-lwip/lwip-git.c line 441
0x4022f32a: ethernet_input at glue-esp/lwip-esp.c line 363
0x4022f33b: ethernet_input at glue-esp/lwip-esp.c line 371
User avatar
By QuickFix
#84091 I don't have an instant reply at this moment, but it would be worthwhile to test if crashing stops when you use an external power supply (like a USB charger). :idea:
Yesterday @Bram van Oosterhout wrote down some of his findings and discovered he had problems with the power provided by his laptop.