There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible. When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails: OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff ELF file SHA256: 94a8e191baae33a5 Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40 Rebooting... 0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); *381 m_body.reserve(m_bodysize+1);* 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break; Can we switch back to using the old async client? Regards, Michael -- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
I’ll have a look at it over the weekend. Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); 381 m_body.reserve(m_bodysize+1); 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
Mark, since updating to 3.3.001 my test module again crashes on any ota update attempt. The signature is the same as below, and the code seems to be unchanged…? Regards, Michael Am 17.09.21 um 10:48 schrieb Mark Webb-Johnson:
I’ll have a look at it over the weekend.
Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin <http://ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin> to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); *381 m_body.reserve(m_bodysize+1);* 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com http://lists.openvehicles.com/mailman/listinfo/ovmsdev
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
Damn. I had made the change to roll that back, but forgot to merge my local branch with those changes. I just tried, but got some conflicts. I’ll fix those up, and then commit again. Regards, Mark.
On 23 Nov 2021, at 1:58 AM, Michael Balzer <dexter@expeedo.de> wrote:
Signed PGP part Mark,
since updating to 3.3.001 my test module again crashes on any ota update attempt.
The signature is the same as below, and the code seems to be unchanged…?
Regards, Michael
Am 17.09.21 um 10:48 schrieb Mark Webb-Johnson:
I’ll have a look at it over the weekend.
Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin <http://ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin> to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); 381 m_body.reserve(m_bodysize+1); 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com <mailto:OvmsDev@lists.openvehicles.com> http://lists.openvehicles.com/mailman/listinfo/ovmsdev <http://lists.openvehicles.com/mailman/listinfo/ovmsdev>
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
I have merged in these reverts, and committed, then built a new edge on my server. I ran a few OTA updates with this, and it seems ok. The code now uses the old ovms_http library, based on normal sockets (not mongoose). This should also workaround the ‘ota flash http’ issue we had with ssh client connections. I would prefer to use mongoose (apart from uniformity, this also gave us support for HTTPS), but it is quite tricky to do this in a blocking way with the ssh client also over mongoose. Would need to re-work to be non-blocking for these commands. Sorry, but existing edge users will probably have to re-flash from SD card or USB. Regards, Mark.
On 23 Nov 2021, at 8:24 AM, Mark Webb-Johnson <mark@webb-johnson.net> wrote:
Signed PGP part Damn. I had made the change to roll that back, but forgot to merge my local branch with those changes.
I just tried, but got some conflicts. I’ll fix those up, and then commit again.
Regards, Mark.
On 23 Nov 2021, at 1:58 AM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part Mark,
since updating to 3.3.001 my test module again crashes on any ota update attempt.
The signature is the same as below, and the code seems to be unchanged…?
Regards, Michael
Am 17.09.21 um 10:48 schrieb Mark Webb-Johnson:
I’ll have a look at it over the weekend.
Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin <http://ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin> to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); 381 m_body.reserve(m_bodysize+1); 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com <mailto:OvmsDev@lists.openvehicles.com> http://lists.openvehicles.com/mailman/listinfo/ovmsdev <http://lists.openvehicles.com/mailman/listinfo/ovmsdev>
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
Thanks Mark, fix confirmed. Who ran into the issue already may also be able to switch back to the previous 3.2 boot partition, do a reboot and then update again from there. Regards, Michael Am 23.11.21 um 03:22 schrieb Mark Webb-Johnson:
I have merged in these reverts, and committed, then built a new edge on my server. I ran a few OTA updates with this, and it seems ok.
The code now uses the old ovms_http library, based on normal sockets (not mongoose). This should also workaround the ‘ota flash http’ issue we had with ssh client connections. I would prefer to use mongoose (apart from uniformity, this also gave us support for HTTPS), but it is quite tricky to do this in a blocking way with the ssh client also over mongoose. Would need to re-work to be non-blocking for these commands.
Sorry, but existing edge users will probably have to re-flash from SD card or USB.
Regards, Mark.
On 23 Nov 2021, at 8:24 AM, Mark Webb-Johnson <mark@webb-johnson.net <mailto:mark@webb-johnson.net>> wrote:
Signed PGP part Damn. I had made the change to roll that back, but forgot to merge my local branch with those changes.
I just tried, but got some conflicts. I’ll fix those up, and then commit again.
Regards, Mark.
On 23 Nov 2021, at 1:58 AM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part Mark,
since updating to 3.3.001 my test module again crashes on any ota update attempt.
The signature is the same as below, and the code seems to be unchanged…?
Regards, Michael
Am 17.09.21 um 10:48 schrieb Mark Webb-Johnson:
I’ll have a look at it over the weekend.
Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin <http://ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin> to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); *381 m_body.reserve(m_bodysize+1);* 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com http://lists.openvehicles.com/mailman/listinfo/ovmsdev
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com http://lists.openvehicles.com/mailman/listinfo/ovmsdev
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
Yes, a good idea. The other OTA, or the factory, partition should work. P.S. The new logic seems to work for my rev3 test boards OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from api.openvehicles.com/firmware/ota/v3.3/main/ovms3.bin to ota_0 Expected file size is 3309600 Regards, Mark
On 23 Nov 2021, at 3:00 PM, Michael Balzer <dexter@expeedo.de> wrote:
Thanks Mark,
fix confirmed.
Who ran into the issue already may also be able to switch back to the previous 3.2 boot partition, do a reboot and then update again from there.
Regards, Michael
Am 23.11.21 um 03:22 schrieb Mark Webb-Johnson:
I have merged in these reverts, and committed, then built a new edge on my server. I ran a few OTA updates with this, and it seems ok.
The code now uses the old ovms_http library, based on normal sockets (not mongoose). This should also workaround the ‘ota flash http’ issue we had with ssh client connections. I would prefer to use mongoose (apart from uniformity, this also gave us support for HTTPS), but it is quite tricky to do this in a blocking way with the ssh client also over mongoose. Would need to re-work to be non-blocking for these commands.
Sorry, but existing edge users will probably have to re-flash from SD card or USB.
Regards, Mark.
On 23 Nov 2021, at 8:24 AM, Mark Webb-Johnson <mark@webb-johnson.net <mailto:mark@webb-johnson.net>> wrote:
Signed PGP part Damn. I had made the change to roll that back, but forgot to merge my local branch with those changes.
I just tried, but got some conflicts. I’ll fix those up, and then commit again.
Regards, Mark.
On 23 Nov 2021, at 1:58 AM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part Mark,
since updating to 3.3.001 my test module again crashes on any ota update attempt.
The signature is the same as below, and the code seems to be unchanged…?
Regards, Michael
Am 17.09.21 um 10:48 schrieb Mark Webb-Johnson:
I’ll have a look at it over the weekend.
Regards, Mark.
On 17 Sep 2021, at 4:39 PM, Michael Balzer <dexter@expeedo.de <mailto:dexter@expeedo.de>> wrote:
Signed PGP part There is another fatal issue with OvmsSyncHttpClient besides the issue with running in the mongoose context: OTA updates are no longer possible.
When flashing via HTTP, the OvmsSyncHttpClient tries to allocate memory for a full firmware image, which of course fails:
OVMS# ota flash http Current running partition is: factory Target partition is: ota_0 Download firmware from ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin <http://ovms.dexters-web.de/firmware/ota/v3.1/edge/ovms3.bin> to ota_0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4022438b PS : 0x00060a30 A0 : 0x802245cd A1 : 0x3ffe9c70 A2 : 0x00000000 A3 : 0x3ffe6f5c A4 : 0x00000001 A5 : 0xffffffff A6 : 0x3fabad7c A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffe9c50 A10 : 0x00000000 A11 : 0x3ffe6f5c A12 : 0x00000001 A13 : 0x0000000a A14 : 0x00000037 A15 : 0x00000057 SAR : 0x00000018 EXCCAUSE: 0x0000001d EXCVADDR: 0x00000000 LBEG : 0x4008b179 LEND : 0x4008b19b LCOUNT : 0xffffffff
ELF file SHA256: 94a8e191baae33a5
Backtrace: 0x4022438b:0x3ffe9c70 0x402245ca:0x3ffe9c90 0x40132f93:0x3ffe9cc0 0x40132e51:0x3ffe9d10 0x40133609:0x3ffe9d40 0x402e7472:0x3ffe9d70 0x4010e229:0x3ffe9d90 0x4010fbd5:0x3ffe9dd0 0x40110015:0x3ffe9e00 0x401102de:0x3ffe9e70 0x4010c51a:0x3ffe9ed0 0x400f5a4f:0x3ffe9ef0 0x400f5afd:0x3ffe9f40
Rebooting...
0x4022438b is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/char_traits.h:243). 0x402245ca is in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int) (/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/esp32-psram/libstdc++-v3/include/bits/basic_string.tcc:298). 0x40132f93 is in OvmsSyncHttpClient::ConnectionHeaders(mg_connection*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:381). 376 else 377 { 378 if (header.compare(0,15,"Content-Length:") == 0) 379 { 380 m_bodysize = atoi(header.substr(15).c_str()); 381 m_body.reserve(m_bodysize+1); 382 } 383 else if (header.compare(0,5,"HTTP/") == 0) 384 { 385 size_t space = header.find(' '); 0x40132e51 is in OvmsSyncHttpClient::ConnectionData(mg_connection*, unsigned char*, unsigned int) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:316). 311 data += len; 312 consumed += len; 313 len = 0; 314 } 315 316 ConnectionHeaders(nc); 317 } 318 319 if (! m_inheaders) 320 { 0x40133609 is in OvmsSyncHttpClient::MongooseCallback(mg_connection*, int, void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_http/src/ovms_http.cpp:124). 119 m_mgconn = NULL; 120 } 121 break; 122 123 case MG_EV_RECV: 124 mbuf_remove(&nc->recv_mbuf, ConnectionData(nc,(uint8_t*)nc->recv_mbuf.buf, nc->recv_mbuf.len)); 125 break; 126 127 default: 128 break;
Can we switch back to using the old async client?
Regards, Michael
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com <mailto:OvmsDev@lists.openvehicles.com> http://lists.openvehicles.com/mailman/listinfo/ovmsdev <http://lists.openvehicles.com/mailman/listinfo/ovmsdev>
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com <mailto:OvmsDev@lists.openvehicles.com> http://lists.openvehicles.com/mailman/listinfo/ovmsdev <http://lists.openvehicles.com/mailman/listinfo/ovmsdev>
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26 _______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com http://lists.openvehicles.com/mailman/listinfo/ovmsdev
participants (2)
-
Mark Webb-Johnson -
Michael Balzer