- Notifications
You must be signed in to change notification settings - Fork13.3k
Closed
Description
Basic Infos
- This issue complies with theissue POLICY doc.
- I have read the documentation atreadthedocs 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
voidsetup() {Serial.begin(115200);Serial.println("Startup!");Serial.print("Heap Free:");Serial.println(system_get_free_heap_size());enableWiFiAtBootTime();wifi_set_opmode_current(STATION_MODE);structstation_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);}}voidloop() { Serial.println("Connected!");}
Debug Messages
No poison after block at: 0x406e4a2f, actual data: 0x0 0x0 0x80 0x0User 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