Skip to content

No Poison after the block Error in Smartconfig #3494

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
romuye123 opened this issue Aug 4, 2017 · 8 comments · Fixed by #8914
Closed

No Poison after the block Error in Smartconfig #3494

romuye123 opened this issue Aug 4, 2017 · 8 comments · Fixed by #8914

Comments

@romuye123
Copy link

Basic Infos

Hardware

Hardware: ESP-12E
Core Version: 2.1.0-rc2

Description

Downloaded the latest Smartconfig SDK on iOS/android. The smartconfig works perfectly fine for the first few times. During the testing i was repeatedly trying the smartconfig even if it is connected to WIFI and the ESP got a crash with poison block error mentioned below after 4th or 5th attempt. It happens randomly. Is it not advisable to repeatedly use smartconfig even if the device is connected to WIFI ? or is there any workaround for this ?

Settings in IDE

Module: Generic ESP8266 Module
Flash Size: 4MB/1MB
CPU Frequency: 80Mhz
Flash Mode: qio
Flash Frequency: 40Mhz
Upload Using: SERIAL
Reset Method: ck

Sketch

void setup()
{
Serial.begin(115200);
startSmartConfig();
}
void startSmartConfig(){

    WiFi.mode(WIFI_STA);
    WiFi.beginSmartConfig();
    delay(200);
  
    //Wait for SmartConfig packet from mobile
    Serial.println("Waiting for SmartConfig.");
    while (!WiFi.smartConfigDone()) {
      delay(500);
      Serial.print(".");
    }
  
    Serial.println("");
    Serial.println("SmartConfig received.");
  
    //Wait for WiFi to connect to AP
    int counter = 0;
    Serial.println("Waiting for WiFi");
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      counter++;
      if(counter == 60){
        break;  
      } 
    }
    counter = 0;

    if(WiFi.status() != WL_CONNECTED)
    {
      Serial.println("WiFi not Connected.");      
    }
    else
    {
      Serial.println("WiFi Connected.");
      Serial.print("IP Address: ");
      Serial.println(WiFi.localIP());
    }
}
void loop(){}

Debug Messages

Smart config activated...
Waiting for SmartConfig...................there is no poison after the block. Expected poison address: 0x3fff6e91, actual data: 0xa5 0xa5 0xa5 0x0
block start: 3fff6ab4
@romuye123
Copy link
Author

@me-no-dev need your help on this.

@tablatronix
Copy link
Contributor

tablatronix commented Sep 28, 2017

I got this a few times, I also get wdt resets using 2.4.0

Waiting for SmartConfig.
scandone
scandone
20:b3:99:aa:3e:49: 583
20:b3:99:a9:f5:49: 583
20:b3:99:aa:6e:39: 639
20:b3:99:aa:69:89: 639
20:b3:99:aa:6e:39: 585

 ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v00000000
~ld
system_get_rst_info() reset reason: REASON_WDT_RST

and release

mode : sta(5c:cf:7f:06:fa:0e)
SC version: V2.5.4
f r0, Waiting for SmartConfig.
scandone
f r0, scandone
20:b3:99:aa:3e:39: 597
there is no poison after the block. Expected poison address: 0x3fff07e6, actual data: 0x0 0x0 0x0 0x0
block start: 3fff0564

@JimmyTai
Copy link

JimmyTai commented Oct 1, 2017

I got this error message too. Could anyone help us?

@Khizer-Jan
Copy link

this error is probably caused due to corrupt flash memory. In order to completely format flash use following code.
https://github.com/kentaylor/EraseEsp8266Flash/blob/master/EraseFlash.ino

Hope it will solve your problem.

@romuye123
Copy link
Author

romuye123 commented Dec 6, 2017

@Khizer-Jan it did not solved the problem.
Still the same.

there is no poison after the block. Expected poison address: 0x3fff0325, actual data: 0x0 0x0 0x0 0x0
block start: 3fff024c

 ets Jan  8 2013,rst cause:4, boot mode:(1,6)


wdt reset

@Khizer-Jan
Copy link

Well! it did for me. If you find any other solution ,kindly tell me about that.

@earlephilhower
Copy link
Collaborator

Smartconfig is delivered by Espressif as a binary blob from the SDK. There's nothing in our current code base which produces the error message quoted, so I would have to guess it's coming from inside that blob. Nothing for us to do here.

@yuanminglove
Copy link

我也遇到了这个问题,相同的代码使用linux可行,windows11不行
编译和上传环境都是使用 vscode+platformIO 太神奇了

tart...
No poison after block at: 0x3fff183c, actual data: 0xde
【2023-52-16 14:52:09 946】0xff 0xa5 0xa5
User exception (panic/abort/assert)----------
【2023-52-16 14:52:10 012】----- CUT HERE FOR EXCEPTION DECODER ---------------

Abort cal

mcspr pushed a commit that referenced this issue Apr 28, 2023
The umm_poison logic runs outside the UMM_CRITICAL_* umbrella. When interrupt routines do alloc calls, it is possible to interrupt an in-progress allocation just before the poison is set, with a new alloc request resulting in a false "poison check fail" against the in-progress allocation. The SDK does mallocs from ISRs.

SmartConfig can illustrate this issue, see
#3494 (comment)

Other Sketches built with Debug: "Serial," that use the SDK's Promiscuous callbacks are also likely to encounter problems.
The SDK support for "Promiscuous Receive" allocates memory from an ISR context, occasionally interrupting the poison wrapper code before it finishes setting the poison fences resulting in a false poison failed event.
hasenradball pushed a commit to hasenradball/Arduino that referenced this issue Nov 18, 2024
The umm_poison logic runs outside the UMM_CRITICAL_* umbrella. When interrupt routines do alloc calls, it is possible to interrupt an in-progress allocation just before the poison is set, with a new alloc request resulting in a false "poison check fail" against the in-progress allocation. The SDK does mallocs from ISRs.

SmartConfig can illustrate this issue, see
esp8266#3494 (comment)

Other Sketches built with Debug: "Serial," that use the SDK's Promiscuous callbacks are also likely to encounter problems.
The SDK support for "Promiscuous Receive" allocates memory from an ISR context, occasionally interrupting the poison wrapper code before it finishes setting the poison fences resulting in a false poison failed event.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants