tracking the elusive adafruit.io error

Moderators: adafruit_support_bill, adafruit

Forum rules
If you're posting code, please make sure your code does not include your Adafruit IO Active Key or WiFi network credentials.
Locked
User avatar
flounder
 
Posts: 494
Joined: Wed Sep 18, 2013 9:10 pm

tracking the elusive adafruit.io error

Post by flounder »

Well, more progress. I have found that the cur_cb pointer in the loop starts at 0xFEFEFEFE. My experience with allocators is that some allocators initialize new objects to nonsense values (e.g., 0xCDCDCDCD, 0xCCCCCCCC, 0xFEEEFEEE in Microsoft C/C++ debug runtime) to catch uninitialized variable errors. This seems to me to be what is happening here. But I don't understand why.

Here is the analysis of the error

Code: Select all

PC: 0x400d3da5: AdafruitIO_Group::call(AdafruitIO_Data*) at /Users/flounder/Documents/Arduino/libraries/arduino_283704/src/AdafruitIO_Group.cpp line 218
EXCVADDR: 0xfefefefe

Decoding stack results
0x400d3da5: AdafruitIO_Group::call(AdafruitIO_Data*) at /Users/flounder/Documents/Arduino/libraries/arduino_283704/src/AdafruitIO_Group.cpp line 218
0x400d3e45: AdafruitIO_Group::subCallback(char*, unsigned short) at /Users/flounder/Documents/Arduino/libraries/arduino_283704/src/AdafruitIO_Group.cpp line 263
0x400d4470: Adafruit_MQTT::processPackets(short) at /Users/flounder/Documents/Arduino/libraries/Adafruit_MQTT_Library/Adafruit_MQTT.cpp line 444
0x400d39c6: AdafruitIO::run(unsigned short) at /Users/flounder/Documents/Arduino/libraries/arduino_283704/src/AdafruitIO.cpp line 171
0x400d2181: loop() at /Users/flounder/BANNED/Projects/inout/inout_group/inout_group.ino line 401
0x4013fd9e: loopTask(void*) at /Users/flounder/Library/Arduino15/packages/esp32/hardware/esp32/1.0.0-rc3/cores/esp32/main.cpp line 17
From AdafruitIO_Group.cpp:

Code: Select all

void AdafruitIO_Group::call(AdafruitIO_Data *d)
{
  // uint8_t i;   // jmn

  if(_groupCallback == NULL) {
    return;
  }

  AdafruitIOGroupCallback *cur_cb = _groupCallback;

  while(cur_cb) {
    Serial.print("AdafruitIO_Group::call(...) cur_cb=0x");  // jmn
    Serial.print((uint32_t)cur_cb, HEX);                    // jmn
    Serial.println();                                       // jmn

    if(strcmp(cur_cb->feed, d->feedName()) == 0 || cur_cb->feed == NULL) { // <===== Error occurs on this line
      cur_cb->dataCallback(d);
    }
which gives me the output

Code: Select all

setup complete
sending info: inout.FlounderIsIn -> 0
sending info: inout.KatelyIsIn -> 0
sending info: inout.MaryIsIn -> 0
AdafruitIO_Group::call(...) cur_cb=0xFEFEFEFE
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400d3da5  PS      : 0x00060030  A0      : 0x800d3e48  A1      : 0x3ffb1ed0  
A2      : 0xfefefefe  A3      : 0x3ffbe38c  A4      : 0x3ffc43b0  A5      : 0x00000000  
A6      : 0x00000000  A7      : 0x00000000  A8      : 0x800d3da3  A9      : 0x3ffb1eb0  
A10     : 0x3ffbe38c  A11     : 0xfefefefe  A12     : 0x00000010  A13     : 0x00000000  
A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x00000008  EXCCAUSE: 0x0000001c  
EXCVADDR: 0xfefefefe  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffd  

Backtrace: 0x400d3da5:0x3ffb1ed0 0x400d3e45:0x3ffb1ef0 0x400d4470:0x3ffb1f40 0x400d39c6:0x3ffb1f60 0x400d2181:0x3ffb1f80 0x4013fd9e:0x3ffb1fa0

Rebooting...
I tried running the Adafruit IO example adafruitio_11_group_pub, unmodified except for the necessary changes in config.h, and got the same result:

Code: Select all

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:808
load:0x40078000,len:6084
load:0x40080000,len:6696
entry 0x400802e4
Connecting to Adafruit IOAdafruitIO::connect()
.........
Adafruit IO connected.
sending example.count-1 -> 0
sending example.count-2 -> 0
AdafruitIO_Group::call(...) cur_cb=0xFEFEFEFEGuru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400d2395  PS      : 0x00060e30  A0      : 0x800d2438  A1      : 0x3ffb1ed0  
A2      : 0xfefefefe  A3      : 0x3ffbfe40  A4      : 0x3ffc3ee0  A5      : 0x00000000  
A6      : 0x00000000  A7      : 0x00000000  A8      : 0x800d2393  A9      : 0x3ffb1eb0  
A10     : 0x3ffbfe40  A11     : 0xfefefefe  A12     : 0x00000010  A13     : 0x00000000  
A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x0000000a  EXCCAUSE: 0x0000001c  
EXCVADDR: 0xfefefefe  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffd  

Backtrace: 0x400d2395:0x3ffb1ed0 0x400d2435:0x3ffb1ef0 0x400d2a60:0x3ffb1f40 0x400d1fda:0x3ffb1f60 0x400d1cc8:0x3ffb1f80 0x4013cc22:0x3ffb1fa0

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:808
load:0x40078000,len:6084
load:0x40080000,len:6696
entry 0x400802e4
Connecting to Adafruit IOAdafruitIO::connect()
...

User avatar
flounder
 
Posts: 494
Joined: Wed Sep 18, 2013 9:10 pm

Re: tracking the elusive adafruit.io error

Post by flounder »

The problem was that _groupCallback was not set to NULL by the constructor in AdafruitIO_Group.cpp

Locked
Forum rules
If you're posting code, please make sure your code does not include your Adafruit IO Active Key or WiFi network credentials.

Return to “Internet of Things: Adafruit IO and Wippersnapper”