Flash wear using H4P_PersistentStorage ?
Closed this issue · 0 comments
HamzaHajeir commented
Hi @philbowles
I'm running my device all the day using H4P, and it's working good.
Until I Unplugged the device last night.
After re-power it : I get continuous reboots with Exception(28) with log & decoded stack as following :
H4 version 0.5.4
Exception (28):
epc1=0x4024dfbb epc2=0x00000000 epc3=0x00000000 excvaddr=0x01e001e0 depc=0x00000000
LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
epc1=0x4024dfbb in std::string::_Rep::_M_grab(std::allocator<char> const&, std::allocator<char> const&) at /workdir/arena.x86_64/gcc/xtensa-lx106-elf/libstdc++-v3/include/bits/basic_string.h:231
0x40202354 in std::__detail::_Map_base<std::string, std::pair<std::string const, std::string>, std::allocator<std::pair<std::string const, std::string> >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::string const&) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable_policy.h:498
0x4024d609 in operator delete(void*) at /workdir/repo/gcc/libstdc++-v3/libsupc++/del_op.cc:48
0x4021fdea in H4P_PersistentStorage::_hookIn() at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/stl_vector.h:418
(inlined by) H4P_PersistentStorage::_hookIn() at lib\h4plugins-dev\src/H4P_PersistentStorage.cpp:41
0x4021c714 in H4P_AsyncWebServer::_hookIn() at lib\h4plugins-dev\src/H4P_AsyncWebServer.cpp:38 (discriminator 1)
0x4022746d in h4StartPlugins() at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/stl_iterator.h:748
(inlined by) h4StartPlugins() at lib\h4plugins-dev\src/H4Plugins.cpp:40
0x40228b34 in HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/HardwareSerial.h:162
0x40229209 in Print::print(char const*) at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/Print.cpp:130
0x40229228 in Print::println() at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/Print.cpp:186
0x40206adf in std::_Function_handler<void (), std::_Bind<H4::H4(unsigned int, unsigned int)::{lambda(unsigned int)#1} (unsigned int)>
>::_M_invoke(std::_Any_data const&) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2073
0x401001b1 in std::function<void ()>::operator()() const at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2465
0x4020f29f in setup at .pio\libdeps\nodemcuv2\H4\src/H4.cpp:275
0x4022bb64 in loop_wrapper() at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/core_esp8266_main.cpp:194
0x40102075 in cont_wrapper at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/cont.S:81
What I've tested then ?
- Tested Blinking LED, worked fine.
- H4Plugins with WiFi , AsyncMQTT (Pangolin) : worked fine.
But this MCVE represents the error :
#include <H4Plugins.h>
H4_USE_PLUGINS(115200,20,false) // Serial baud rate, Q size, SerialCmd autostop
H4P_PersistentStorage h4ps;
void h4setup(){
Serial.println("h4setup");
}
With log & decoded stack as following :
H4 version 0.5.4
Exception (9):
epc1=0x4021d143 epc2=0x00000000 epc3=0x00000000 excvaddr=0x013f013f depc=0x00000000
LoadStoreAlignmentCause: Load or store to an unaligned address
epc1=0x4021d143 in std::_Function_handler<void (AsyncWebServerRequest*), H4P_AsyncWebServer::_start()::{lambda(AsyncWebServerRequest*)#3}>::_M_invoke(std::_Any_data const&, AsyncWebServerRequest*) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/unordered_map.h:600
(inlined by) operator() at lib\h4plugins-dev\src/H4P_AsyncWebServer.cpp:126
(inlined by) _M_invoke at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2071
>>>stack>>>
ctx: cont
sp: 3ffffd00 end: 3fffffc0 offset: 0190
3ffffe90: 3ffefcc4 0e3b53b9 3ffeea08 402045c0
3ffffea0: 00000001 3ffefcc4 3ffefc98 4021cad9
3ffffeb0: 00000000 00000000 00000000 3ffef8b4
3ffffec0: 3fffdad0 3ffefc9c 3ffefc98 40204702
3ffffed0: 4020c660 4020c644 4020c628 000fa000
3ffffee0: 00300000 00001000 3fff01c0 3ffef848
3ffffef0: 3ffefcc4 3ffefcc8 3ffefcc8 3ffef8b4
3fffff00: 3ffef8c4 3ffef8c4 00000000 3ffeed24
3fffff10: 3ffee9a8 3ffef8c4 3ffeeda0 40215f19
3fffff20: 3fffdad0 3ffefc9c 3ffefc94 3ffeed24
3fffff30: 3fffdad0 3ffefc9c 3ffefc98 4020a3dd
3fffff40: 4020ab68 3ffeec04 3ffe88b8 4020aebd
3fffff50: 3fffdad0 00000005 3ffeec04 4020aedc
3fffff60: 3fffdad0 00000000 3ffeec04 3ffeed24
3fffff70: 3fffdad0 00000000 3ffeec04 40201143
3fffff80: feefeffe feefeffe 3ffe84e4 401000e1
3fffff90: feefeffe feefeffe feefeffe 402023ef
3fffffa0: feefeffe feefeffe feefeffe 4020b8cc
3fffffb0: feefeffe feefeffe feefeffe 40100e55
<<<stack<<<
0x402045c0 in std::_Hashtable<std::string, std::pair<std::string const, command>, std::allocator<std::pair<std::string const, command> >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, false> >::_M_rehash_aux(unsigned int, std::integral_constant<bool, false>) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable.h:1815
0x4021cad9 in H4P_AsyncWebServer::_hookIn() at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/stl_vector.h:909
(inlined by) ?? at lib\h4plugins-dev\src/H4PCommon.h:269
(inlined by) H4P_AsyncWebServer::_hookIn() at lib\h4plugins-dev\src/H4P_AsyncWebServer.cpp:36
0x40204702 in std::__detail::_Node_iterator<std::pair<std::string const, command>, false, true> std::_Hashtable<std::string, std::pair<std::string const, command>, std::allocator<std::pair<std::string const, command> >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, false> >::_M_insert<std::pair<std::string const, command> const&>(std::pair<std::string const, command> const&, std::integral_constant<bool, false>) at ??:?
0x4020c660 in PangolinMQTT::_onData(unsigned char*, unsigned int) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:318
0x4020c644 in PangolinMQTT::_packetReassembler(mb) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:316
0x4020c628 in PangolinMQTT::_packetReassembler(mb) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/basic_string.h:247
(inlined by) ?? at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/basic_string.h:541
(inlined by) ?? at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/mb.h:7
(inlined by) PangolinMQTT::_packetReassembler(mb) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:313
0x40215f19 in AsyncFileResponse::_sourceValid() const at .pio\libdeps\nodemcuv2\ESP Async WebServer\src/WebResponseImpl.h:78
0x4020a3dd in __static_initialization_and_destruction_0(int, int) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2029
(inlined by) ?? at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2174
(inlined by) __static_initialization_and_destruction_0 at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:23
0x4020ab68 in PangolinMQTT::connect() at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:355
0x4020aebd in PangolinMQTT::publish(char const*, unsigned char, bool, unsigned char*, unsigned int, bool) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:383
0x4020aedc in PangolinMQTT::publish(char const*, unsigned char, bool, unsigned char*, unsigned int, bool) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:385
0x40201143 in floatDisplayString(double, int*) at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/WString.h:301
(inlined by) ?? at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/WString.h:80
(inlined by) floatDisplayString(double, int*) at src/Display_Code.cpp:285
0x401000e1 in std::function<void (signed char)>::operator()(signed char) const at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2/functional:2464
0x402023ef in std::_Hashtable<std::string, std::pair<std::string const, std::string>, std::allocator<std::pair<std::string const, std::string> >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node<std::pair<std::string const, std::string>, true>*) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable_policy.h:347
(inlined by) ?? at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable_policy.h:1110
(inlined by) ?? at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable.h:593
(inlined by) std::_Hashtable<std::string, std::pair<std::string const, std::string>, std::allocator<std::pair<std::string const, std::string> >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node<std::pair<std::string const, std::string>, true>*) at c:\users\hamza\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\bits/hashtable.h:1336
0x4020b8cc in PangolinMQTT::_onPoll(AsyncClient*) at .pio\libdeps\nodemcuv2\Pangolin MQTT Client\src/PangolinMQTT.cpp:335
0x40100e55 in cont_check at C:\Users\Hamza\.platformio\packages\framework-arduinoespressif8266@3.20701.0\cores\esp8266/cont_util.cpp:46 (discriminator 2)
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3456, room 16
tail 0
chksum 0x84
csum 0x84
va5432625
~ld
Note : It's fully working after :
- Fully erasing the flash memory
- Re-upload SPIFFS
- Re-upload code
with the following log :
H4 version 0.5.4
H4P Version 0.5.7
h4setup
I knew this solution at the beginning.
But what could reproduce it ?
What could prevent it to happen again ?
As it would worry users in the future.
Thanks