ESP8266 Developer Zone The Official ESP8266 Forum 2020-05-21T15:03:36+08:00 https://bbs.espressif.com:443/feed.php?f=7&t=24449 2020-05-21T15:03:36+08:00 2020-05-21T15:03:36+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=78910#p78910 <![CDATA[Re: exception at 4000df2f (memcmp)]]> Statistics: Posted by blubb — Thu May 21, 2020 3:03 pm


]]>
2020-05-19T02:35:40+08:00 2020-05-19T02:35:40+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=78793#p78793 <![CDATA[Re: exception at 4000df2f (memcmp)]]>
fixed here https://github.com/nabovarme/esp-open-l ... ff35ce1ada

Statistics: Posted by st0ff3r — Tue May 19, 2020 2:35 am


]]>
2020-03-24T03:15:51+08:00 2020-03-24T03:15:51+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=74569#p74569 <![CDATA[Re: exception at 4000df2f (memcmp)]]>
The reason in my case seems to be a timer which can fire during this short moment. I check for WiFi disconnection regularly and since system_upgrade_reboot() disconnects, the timer then tries to reconnect...
Root cause may be something inside wifi_station_connect() calling memcpy() with invalid parameters. That would be a task for Espressif...
https://github.com/espressif/ESP8266_NO ... -602231845

As for system_restart() I am not sure (did not try that often enough). But my guess is, it's exactly the same (since the disconnect happens there, too).

Statistics: Posted by blubb — Tue Mar 24, 2020 3:15 am


]]>
2020-03-24T02:06:38+08:00 2020-03-24T02:06:38+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=74568#p74568 <![CDATA[Re: exception at 4000df2f (memcmp)]]>
blubb wrote:
Any news on this exception?

I keep getting it, too, sometimes when rebooting after an OTA update. Is there a way to find out what is at address 0x33?


does it only happens after reboot by system_restart() or also after power-on?

With sdk 3.0.3 I see some exceptions to after calling system_restart(), but I guess its normal? It does not happen randomly after power on at least.

Statistics: Posted by st0ff3r — Tue Mar 24, 2020 2:06 am


]]>
2020-03-24T02:00:28+08:00 2020-03-24T02:00:28+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=74567#p74567 <![CDATA[Re: exception at 4000df2f (memcmp)]]> Statistics: Posted by st0ff3r — Tue Mar 24, 2020 2:00 am


]]>
2020-03-19T22:08:16+08:00 2020-03-19T22:08:16+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=74416#p74416 <![CDATA[Re: exception at 4000df2f (memcmp)]]>
I keep getting it, too, sometimes when rebooting after an OTA update. Is there a way to find out what is at address 0x33?

I noticed other people having the same issues, e.g.
https://bbs.espressif.com/viewtopic.php?t=2934
https://bbs.espressif.com/viewtopic.php?t=5784
https://www.esp8266.com/viewtopic.php?p=83491
It even happens in Arduino:
https://www.bountysource.com/issues/554 ... ot-esp8266
https://www.gitmemory.com/issue/esp8266 ... /491462561
https://groups.google.com/forum/#!topic ... Te2T-ZhF-U

Statistics: Posted by blubb — Thu Mar 19, 2020 10:08 pm


]]>
2019-09-26T18:45:36+08:00 2019-09-26T18:45:36+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=66135#p66135 <![CDATA[Re: exception at 4000df2f (memcmp)]]>
First, memcmp() and os_memcmp()/est_memcmp() are de-facto the same from point of brom, since the implementation of ets_memcmp() is something like below:

int ets memcmp(void *addr1, void *addr2, size_t n)
{
memcmp(addr1, addr2, n);
}
#define os_memcmp ets_memcmp

Similar the case is memcpy() and os_memcpy()/ets_memcpy(). Therefore, if an exception occurs at an address inside/following memcpy(), it might be caused by a call of os_memcpy()/ets_memcpy().

Second, 0x4000df2f is a branch address neither by/inside memcmp() nor by/inside ets_memcmp(), But is an address related to memcpy() or ets_memcpy/os_memcpy() de-facto which is called.

1. 0x4000df2f is a branch address when the brom code memcpy(dest_addr, src_addr, length)/os_memcpy()/ets_memcpy() is called
2, Exception 28 caused at 0x4000df2f with excvaddr=0x00000033 indicates below:
(1) excvaddr=0x00000033 indicates that memcpy(dest_addr, src_addr, length) is called with src_addr=0x00000033, which is an address load prohibited.
(2) exception cause at 0x4000df2f indicates that memcpy(dest_addr, src_addr, length), or os_memcpy(), or ets_memcpy() is called with dest_addr of 2-byte aligned but not 4-byte aligned (e.g. dest_dest = 0x3fff2014), and the length >= 6.

So, please check your code with all memcpy() or os_memcpy() or ets_memcpy(), especially with those possible src_addr=0x33 and length>=6 (ignoring thoese calling with length=4 for an example), and dest_addr is 2-bytes aligned(ignore those calling with odd dest_addr or 4-byte aligned dest_addr).

Hope it would be helpful for you!

------------------------------
ALK8266WIFI Module Extends MCU Capabilities to Tranceive in an efective speed of 1+MBytes/s
English: https://www.ebay.com/itm/283536362871
中文: https://item.taobao.com/item.htm?id=576141575067

Statistics: Posted by Guest — Thu Sep 26, 2019 6:45 pm


]]>
2018-11-17T20:49:40+08:00 2018-11-17T20:49:40+08:00 https://bbs.espressif.com:443/viewtopic.php?t=24449&p=35547#p35547 <![CDATA[exception at 4000df2f (memcmp)]]>
anyone know why app.map contains both

PROVIDE (ets_memcmp, 0x400018d4)
and
PROVIDE (memcmp, 0x4000dea8)

are those not the same?

include/platform.h says
#define memcmp(a, b, c) os_memcmp(a, b, c)

my code is at https://github.com/nabovarme/MeterLogge ... pto.c#L109

Statistics: Posted by st0ff3r — Sat Nov 17, 2018 8:49 pm


]]>