- Notifications
You must be signed in to change notification settings - Fork 13.3k
Closed
Description
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
- Hardware: ESP-01
- Core Version: 3.0.0
- Development Env: Arduino IDE
- Operating System: Windows
Settings in IDE
- Module: Generic ESP8266 Module
- Flash Mode: dio
- Flash Size: 1M
- lwip Variant: v2 Lower Memory
- Reset Method: ck
- Flash Frequency: 40Mhz
- CPU Frequency: 80Mhz
- Upload Using: SERIAL
- Upload Speed: 115200
Problem Description
Immediately after connecting to a WPA2 Enterprise encrypted network I receive an exception. This seems to be related to the way free is called from a function in eap.c (which seems to be part of the SDK). I am not sure if this is a bug here or in the SDK, but apparently an address that is unmapped was passed to free. I am not sure if maybe the stack got corrupted somewhere as that function hierarchy doesn't really make sense to me.....
I have everything working on the super old version 2.3.0 (which uses completely different functions for setting WPA Enterprise up) but I want to update.
I have reproduced this on all Espressif Firmware Versions that are available.
MCVE Sketch
void setup() { Serial.begin(115200); Serial.println("Startup!"); Serial.print("Heap Free: "); Serial.println(system_get_free_heap_size()); enableWiFiAtBootTime(); wifi_set_opmode_current(STATION_MODE); struct station_config wifi_config; memset(&wifi_config, 0, sizeof(wifi_config)); strcpy((char*)wifi_config.ssid, ssid); wifi_station_set_config_current(&wifi_config); wifi_station_set_wpa2_enterprise_auth(1); wifi_station_set_enterprise_identity((uint8_t*)identity, strlen(identity)); wifi_station_set_enterprise_cert_key(esp_cert_pem, esp_cert_pem_len, esp_key_pem, esp_key_pem_len, NULL, 1); wifi_station_disconnect(); wifi_station_connect(); Serial.println(F("Waiting for connection...")); while (WiFi.status() != WL_CONNECTED) { if (millis() > 60000) { Serial.println(F("Took wayyy to long. Restarting...")); ESP.restart(); } delay(1000); } } void loop() { Serial.println("Connected!"); }
Debug Messages
No poison after block at: 0x406e4a2f, actual data: 0x0 0x0 0x80 0x0 User exception (panic/abort/assert) --------------- CUT HERE FOR EXCEPTION DECODER --------------- Error :?:::0x4024b080:etharp_output :?:::0x40201a52:raise_exception :?:::0x40201aaf:__panic_func 0x40100e54 get_unpoisoned_check_neighbors 0x401012f2 umm_free :\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc/umm_malloc.cpp:574 0x4010130d umm_poison_free_fl :?:::0x4024c4e0:etharp_output :?:::0x40229979:wpa_set_bss 0x40100827 HeapSelectDram :\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266/heap.cpp:370 :?:::0x4022aac7:wpabuf_free :?:::0x4022bb92:wpa2_sm_rx_eapol :?:::0x4022bba6:wpa2_sm_rx_eapol :?:::0x4022bbe1:wpa2_sm_rx_eapol :?:::0x4022b7ac:wpa2_sm_rx_eapol :?:::0x40223129:sta_input :?:::0x40240ccf:pp_tx_idle_timeout :?:::0x4024058f:ppPeocessRxPktHdr : ?? ??:0 : ?? ??:0 :?:::0x40105b88:call_user_start_local :?:::0x40105b8e:call_user_start_local :?:::0x4010000d:call_user_start 0x40235458 cont_ret 0x40235411 cont_continue