I am SOMETIMES getting exception 28
when running a web upload (over a very unstable rural internet CPE link - wifi is fine, but feed goes on and off):
Decoding stack results
0x40213b8c: dns_gethostbyname at core/dns.c line 1472
0x40204d95: ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, unsigned int) at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp line 468
0x40208d7c: HardwareSerial::write(unsigned char const*, unsigned int) at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/cores/esp8266/HardwareSerial.h line 159
0x4020519c: WiFiClient::connect(char const*, unsigned short) at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/libraries/ESP8266WiFi/src/WiFiClient.cpp line 98
0x40208fe0: Print::println(char const*) at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/cores/esp8266/Print.cpp line 190
0x402040c4: uploadAgrigis(char const*) at /home/tony/Arduino/sketches/tempo1_vs12b_Master_NodeMCU_Rain_Wind/tempo1_vs12b_Master_NodeMCU_Rain_Wind.ino line 360
0x40208f41: Print::write(char const*) at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/cores/esp8266/Print.h line 60
0x40208f6c: Print::println() at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/cores/esp8266/Print.cpp line 178
0x40204a2b: loop() at /home/tony/Arduino/sketches/tempo1_vs12b_Master_NodeMCU_Rain_Wind/tempo1_vs12b_Master_NodeMCU_Rain_Wind.ino line 258
0x402074f0: TwoWire::endTransmission() at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/libraries/Wire/Wire.cpp line 151
0x40203a04: BH1750_Init(int) at /home/tony/Arduino/sketches/tempo1_vs12b_Master_NodeMCU_Rain_Wind/tempo1_vs12b_Master_NodeMCU_Rain_Wind.ino line 1121
0x40209d3c: loop_wrapper() at /home/tony/.arduino15/packages/esp8266/hardware/esp8266/2.4.2/cores/esp8266/core_esp8266_main.cpp line 125
My code at line 360 is
if (client.connect(serverName,80)) {
My current strategy is to keep the wifi connection open all the time. Should I test for connection before attempting to connect to the server?
1 Answer 1
Exception 28 is, according to the exception list document:
Access to invalid address
The most common cause is trying to read or write from/to a NULL pointer.
It could be because you have debugging turned on, and that debugging is trying to print something that didn't get returned properly from another function call (the call failed) - most likely looking up a host name (hostByName()
) due to your intermittent internet connection.
This may sound counter intuitive, but try turning off debugging to see if that helps reduce the number of crashes.
-
counterintuitive makes sense. lemme give a couple of days' benchmarking and I'll get back. UPVOTED, pending ACCEPTANCE.tony gil– tony gil2019年07月29日 22:25:08 +00:00Commented Jul 29, 2019 at 22:25
-
didnt solve the issue. trying
lwIP
level change to1.4
as per github.com/esp8266/Arduino/issues/4078tony gil– tony gil2019年08月05日 09:50:17 +00:00Commented Aug 5, 2019 at 9:50 -
that didnt help either... stumpedtony gil– tony gil2019年08月05日 18:40:29 +00:00Commented Aug 5, 2019 at 18:40
-
1@tonygil You should cut your program down to the absolute minimum and add in different parts until it starts failing.Majenko– Majenko2019年08月05日 18:42:40 +00:00Commented Aug 5, 2019 at 18:42
-
tks. will do. will run separate rigs with different levels of complexity.tony gil– tony gil2019年08月05日 18:48:05 +00:00Commented Aug 5, 2019 at 18:48