That sure looks like a garbled stack, I doubt gdb will get any better info from this. I also still see occasional crashes with nonsense backtraces from user modules. Example: balzer@leela:~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3> a2l tmp/3.1.008-76-ga33b30e-elf/ovms3.elf 0x40081b9c 0x40081d5e 0x400db815 0x40091acb 0x40083f65 0x400844e5 0x4000bec7 0x4015f57d 0x4017256a 0x4011da06 0x400e5da5 0x400e5f45 0x400e5fad 0x400e5fbd Using elf file: tmp/3.1.008-76-ga33b30e-elf/ovms3.elf 0x40081b9c is at /home/balzer/esp/esp-idf/components/esp32/dport_panic_highint_hdl.S:189. 184 movi a0, _l4_intr_stack 185 l32i a2, a0, L4_INTR_A2_OFFSET 186 l32i a3, a0, L4_INTR_A3_OFFSET 187 rsync /* ensure register restored */ 188 189 rsr a0, EXCSAVE_4 /* restore a0 */ 190 rfi 4 191 192 #endif // CONFIG_FREERTOS_UNICORE 193 0x40081d5e is in esp_restart_noos (/home/balzer/esp/esp-idf/components/esp32/system_api.c:321). 316 WRITE_PERI_REG(GPIO_FUNC3_IN_SEL_CFG_REG, 0x30); 317 WRITE_PERI_REG(GPIO_FUNC4_IN_SEL_CFG_REG, 0x30); 318 WRITE_PERI_REG(GPIO_FUNC5_IN_SEL_CFG_REG, 0x30); 319 320 // Reset wifi/bluetooth/ethernet/sdio (bb/mac) 321 DPORT_SET_PERI_REG_MASK(DPORT_CORE_RST_EN_REG, 322 DPORT_BB_RST | DPORT_FE_RST | DPORT_MAC_RST | 323 DPORT_BT_RST | DPORT_BTMAC_RST | DPORT_SDIO_RST | 324 DPORT_SDIO_HOST_RST | DPORT_EMAC_RST | DPORT_MACPWR_RST | 325 DPORT_RW_BTMAC_RST | DPORT_RW_BTLP_RST); 0x400db815 is in ConsoleSSH::HandleDeviceEvent(void*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/console_ssh/src/console_ssh.cpp:754). 749 m_buffer[5] != ' ') 750 msg.append("bad mode ").append(&m_buffer[1], 4).append("\n"); 751 else if ((m_size = strtoul(&m_buffer[6], &end, 10)) < 0 || m_size > 10485760 || *end++ != ' ') 752 msg.append("size unacceptable: ").append(&m_buffer[6], end-&m_buffer[6]).append("\n"); 753 else if ((strchr(end, '/') != NULL) || (strcmp(end, "..") == 0)) 754 msg.append("unexpected filename: ").append(end).append("\n"); 755 else 756 { 757 level = m_dirs.front(); 758 m_path.resize(level.size); 0x40091acb is in xTaskRemoveFromEventList (/home/balzer/esp/esp-idf/components/freertos/tasks.c:3167). 3162 } 3163 3164 if( xTaskCanBeReady ) 3165 { 3166 ( void ) uxListRemove( &( pxUnblockedTCB->xGenericListItem ) ); 3167 prvAddTaskToReadyList( pxUnblockedTCB ); 3168 } 3169 else 3170 { 3171 /* The delayed and ready lists cannot be accessed, so hold this task 0x40083f65 is in psram_spi_init (/home/balzer/esp/esp-idf/components/esp32/spiram_psram.c:407). 402 if (mode!=PSRAM_CACHE_F80M_S80M) { 403 i = 1; //Pre-divider 404 k = 2; //Main divider. Divide by 2 so we get 40MHz 405 //clear bit 31, set SPI clock div 406 CLEAR_PERI_REG_MASK(SPI_CLOCK_REG(spi_num), SPI_CLK_EQU_SYSCLK); 407 WRITE_PERI_REG(SPI_CLOCK_REG(spi_num), 408 (((i - 1) & SPI_CLKDIV_PRE) << SPI_CLKDIV_PRE_S) | 409 (((k - 1) & SPI_CLKCNT_N) << SPI_CLKCNT_N_S) | 410 ((((k + 1) / 2 - 1) & SPI_CLKCNT_H) << SPI_CLKCNT_H_S) | //50% duty cycle 411 (((k - 1) & SPI_CLKCNT_L) << SPI_CLKCNT_L_S)); 0x400844e5 is in psram_enable (/home/balzer/esp/esp-idf/components/esp32/spiram_psram.c:599). 594 SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA2_U, FUN_DRV, 3, FUN_DRV_S); 595 SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA3_U, FUN_DRV, 3, FUN_DRV_S); 596 SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CMD_U, FUN_DRV, 3, FUN_DRV_S); 597 SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, 3, FUN_DRV_S); 598 SET_PERI_REG_BITS(GPIO_PIN_MUX_REG[PSRAM_CS_IO], FUN_DRV, 3, FUN_DRV_S); 599 SET_PERI_REG_BITS(GPIO_PIN_MUX_REG[PSRAM_CLK_IO], FUN_DRV, 3, FUN_DRV_S); 600 #endif 601 } 602 uint32_t id; 603 psram_read_id(&id); 0x4015f57d is in xks_vin(int, OvmsWriter*, OvmsCommand*, int, char const* const*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/vehicle_kiasoulev/src/ks_commands.cpp:270). 265 { 266 writer->printf("Gwangju (Korea)\n"); 267 } 268 else if(soul->m_vin[10]=='T') 269 { 270 writer->printf("Seosan (Korea)\n"); 271 } 272 else 273 { 274 writer->printf("Unknown %c\n", soul->m_vin[10]); 0x4017256a is in OvmsVehicleRenaultTwizy::SendGPSLog() (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/vehicle_renaulttwizy/src/rt_notify.cpp:241). 236 StdMetrics.ms_v_pos_longitude->IsModifiedAndClear(m_modifier) | 237 StdMetrics.ms_v_pos_altitude->IsModifiedAndClear(m_modifier) | 238 StdMetrics.ms_v_pos_direction->IsModifiedAndClear(m_modifier) | 239 StdMetrics.ms_v_pos_gpsspeed->IsModifiedAndClear(m_modifier) | 240 StdMetrics.ms_v_pos_speed->IsModifiedAndClear(m_modifier) | 241 StdMetrics.ms_v_bat_power->IsModifiedAndClear(m_modifier) | 242 StdMetrics.ms_v_bat_energy_used->IsModifiedAndClear(m_modifier) | 243 StdMetrics.ms_v_bat_energy_recd->IsModifiedAndClear(m_modifier) | 244 StdMetrics.ms_v_bat_current->IsModifiedAndClear(m_modifier) | 245 StdMetrics.ms_v_bat_coulomb_used->IsModifiedAndClear(m_modifier) | 0x4011da06 is in nvs_get<unsigned char>(nvs_handle, char const*, unsigned char*) (/home/balzer/esp/esp-idf/components/nvs_flash/src/nvs_storage.hpp:73). 68 } 69 70 template<typename T> 71 esp_err_t readItem(uint8_t nsIndex, const char* key, T& value) 72 { 73 return readItem(nsIndex, itemTypeOf(value), key, &value, sizeof(value)); 74 } 75 76 esp_err_t eraseItem(uint8_t nsIndex, const char* key) 77 { 0x400e5da5 is in esp_log_level_set (/home/balzer/esp/esp-idf/components/log/log.c:181). 176 { 177 while( !SLIST_EMPTY(&s_log_tags)) { 178 SLIST_REMOVE_HEAD(&s_log_tags, entries ); 179 } 180 s_log_cache_entry_count = 0; 181 s_log_cache_max_generation = 0; 182 #ifdef LOG_BUILTIN_CHECKS 183 s_log_cache_misses = 0; 184 #endif 185 } 0x400e5f45 is in ExternalRamRealloc (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/ovms_malloc.c:67). 62 heap_caps_free(ptr); 63 return NULL; 64 } 65 void* ret = heap_caps_realloc(ptr, size, MALLOC_CAP_SPIRAM); 66 if (ret) 67 return ret; 68 else 69 return realloc(ptr, size); 70 } 71 0x400e5fad is in test_spiram(int, OvmsWriter*, OvmsCommand*, int, char const* const*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/test_framework.cpp:238). 233 writer->printf("Metrics (%p) are in %s RAM (%d bytes for a base metric)\n", 234 StandardMetrics.ms_m_version, 235 (((unsigned int)StandardMetrics.ms_m_version >= 0x3f800000)&& 236 ((unsigned int)StandardMetrics.ms_m_version <= 0x3fbfffff))? 237 "SPI":"INTERNAL", 238 sizeof(OvmsMetric)); 239 } 240 241 void test_strverscmp(int verbosity, OvmsWriter* writer, OvmsCommand* cmd, int argc, const char* const* argv) 242 { 0x400e5fbd is in test_chargen(int, OvmsWriter*, OvmsCommand*, int, char const* const*) (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/test_framework.cpp:124). 119 { 120 int numlines = 1000; 121 int delay = 0; 122 if (argc>=1) 123 { 124 numlines = atoi(argv[0]); 125 } 126 if (argc>=2) 127 { 128 delay = atoi(argv[1]); …complete nonsense. I also still get these: 3.1.008-76-ga33b30e/ota_0/edge (build idf v3.2-dev-168-g0fb2019f Jul 22 2018 21:45:28),1,Crash,8,14,1,0,IllegalInstruction,0,0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 , …and these: 3.1.008-76-ga33b30e/ota_1/edge (build idf v3.2-dev-168-g0fb2019f Jul 22 2018 21:45:28),32,Crash,8,14,2,0,InstrFetchProhibited,1,0x00000000 0x00060730 0x8012afa0 0x3ffc05c0 0x3f804094 0x00000001 0x00000908 0x3f812dfc 0x3f81ec5c 0x00000091 0x800e9b1a 0x3ffc05a0 0x3f81ec5c 0x00000001 0x00000000 0x3ffc0668 0x00000000 0xff000000 0x0000001f 0x00000014 0x00000000 0x4009bad4 0x4009bb02 0x00000000 , I've got no idea about these. Regards, Michael Am 26.07.2018 um 16:21 schrieb Mark Webb-Johnson:
I am seeing quite a few crashes from my modules, like this:
# xtensa-esp32-elf-addr2line -pfiaC -e 3.1.008-76-ga33b30e.ovms3.elf 0x4008fac5 0x40090355 0x4008f23f 0x400914a1 0x40083e6a 0x4020c6b3 0x400f514d 0x400f69cb 0x400f6d95 0x400f705f 0x400f3cba 0x400eafe6 0x400eb035 0x4008fac5: uxPortCompareSet at /home/openvehicles/build/esp-idf/components/freertos/tasks.c:3564 (inlined by) vPortCPUAcquireMutexIntsDisabledInternal at /home/openvehicles/build/esp-idf/components/freertos/portmux_impl.inc.h:86 (inlined by) vPortCPUAcquireMutexIntsDisabled at /home/openvehicles/build/esp-idf/components/freertos/portmux_impl.h:98 (inlined by) vTaskEnterCritical at /home/openvehicles/build/esp-idf/components/freertos/tasks.c:4267 0x40090355: xTaskIncrementTick at /home/openvehicles/build/esp-idf/components/freertos/tasks.c:3564 0x4008f23f: xPortSysTickHandler at /home/openvehicles/build/esp-idf/components/freertos/port.c:406 0x400914a1: _frxt_timer_int at /home/openvehicles/build/esp-idf/components/freertos/portasm.S:303 0x40083e6a: _xt_lowint1 at /home/openvehicles/build/esp-idf/components/freertos/xtensa_vectors.S:1105 0x4020c6b3: esp_vApplicationWaitiHook at /home/openvehicles/build/esp-idf/components/esp32/freertos_hooks.c:66 0x400f514d: mg_sock_addr_to_str at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f69cb: mg_http_handler2 at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f6d95: mg_mgr_handle_conn at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f705f: mg_socket_if_poll at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f3cba: mg_add_conn at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400eafe6: OvmsNetManager::ListConnections(int, OvmsWriter*) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:685 0x400eb035: OvmsNetManager::CloseConnection(unsigned int) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:702 [root@markhk8 edge]# xtensa-esp32-elf-addr2line -pfiaC -e 3.1.008-76-ga33b30e.ovms3.elf 0x400f6893 0x400f7edc 0x4011e623 0x4011e729 0x4011e9e2 0x400f8306 0x400f514d 0x400f69cb 0x400f6d95 0x400f705f 0x400f3cba 0x400eafe6 0x400eb035 0x400f6893: mg_http_handler2 at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f7edc: mg_send_mqtt_handshake_opt at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x4011e623: OvmsServerV3::Ticker1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, void*) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp:841 0x4011e729: OvmsServerV3::IncomingPubRec(int) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp:488 0x4011e9e2: OvmsServerV3MongooseCallback(mg_connection*, int, void*) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp:66 0x400f8306: parse_mqtt at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 (inlined by) mqtt_handler at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:10606 0x400f514d: mg_sock_addr_to_str at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f69cb: mg_http_handler2 at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f6d95: mg_mgr_handle_conn at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f705f: mg_socket_if_poll at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400f3cba: mg_add_conn at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701 0x400eafe6: OvmsNetManager::ListConnections(int, OvmsWriter*) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:685 0x400eb035: OvmsNetManager::CloseConnection(unsigned int) at /home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:702
Apart from the massive stack, it seems very strange that we would be calling OvmsNetManager::ListConnections() and CloseConnection().
I guess the stack is messed up, or this is some other remnant of a previous call?
Any ideas?
Mark
-- Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal Fon 02333 / 833 5735 * Handy 0176 / 206 989 26