[Ovmsdev] Random crash if enable notifications

Tamás Kovács kommykt at gmail.com
Sat Jun 6 02:04:09 HKT 2020


i think i don't run spiram fix. How can i use it. I must check out branch
"spiram-fix-test"  to run spiram fix?

Michael Balzer <dexter at expeedo.de> ezt írta (időpont: 2020. jún. 5., P,
6:58):

> Tamás,
>
> that doesn't need to be related to the pushover code. Do you run the
> spiram fix? I had this kind of heap corruption crashes frequently on builds
> without the spiram fix but not once with the fix.
>
> Regards,
> Michael
>
>
> Am 05.06.20 um 05:29 schrieb Tamás Kovács:
>
> Some day's ago i enabled Pushover notifications and i get some crash after
> that.
>
> The crash backtrase is:
> Backtrace: 0x4008b75f 0x4008b9f9 0x4010b253 0x40098c5f 0x40084361
> 0x40084945 0x4000bec7 0x401c1181 0x400f01e1 0x400f0dbb 0x400f0db4
> 0x400f0db4 0x400f0db4 0x400f0db4 0x40156109 0x401550da 0x400f3545
> 0x400f375e 0x400f37d5 0x400f37e5
> a2l output is:
>
> kommykt at MacBook-Air OVMS.V3 % a2l 0x4008b75f 0x4008b9f9 0x4010b253
> 0x40098c5f 0x40084361 0x40084945 0x4000bec7 0x401c1181 0x400f01e1
> 0x400f0dbb 0x400f0db4 0x400f0db4 0x400f0db4 0x400f0db4 0x40156109
> 0x401550da 0x400f3545 0x400f375e 0x400f37d5 0x400f37e5
>
> Using elf file:
> /Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ovms3.elf
>
>
> 0x4008b75f is in invoke_abort
> (/Users/kommykt/esp/esp-idf/components/esp32/panic.c:156).
>
> 151 #endif
>
> 152     while (1) {
>
> 153         if (esp_cpu_in_ocd_debug_mode()) {
>
> 154             __asm__ ("break 0,0");
>
> 155         }
>
> 156         *((int *) 0) = 0;
>
> 157     }
>
> 158 }
>
> 159
>
> 160 void abort()
>
>
> 0x4008b9f9 is in abort
> (/Users/kommykt/esp/esp-idf/components/esp32/panic.c:171).
>
> 166     * don't overwrite that.
>
> 167     */
>
> 168     if (esp_reset_reason_get_hint() == ESP_RST_UNKNOWN) {
>
> 169         esp_reset_reason_set_hint(ESP_RST_PANIC);
>
> 170     }
>
> 171     invoke_abort();
>
> 172 }
>
> 173
>
> 174
>
> 175 static const char *edesc[] = {
>
>
> 0x4010b253 is in __assert_func
> (../../../.././newlib/libc/stdlib/assert.c:63).
>
>
> 0x40098c5f is in multi_heap_free
> (/Users/kommykt/esp/esp-idf/components/heap/multi_heap_poisoning.c:214).
>
> 209         return;
>
> 210     }
>
> 211     multi_heap_internal_lock(heap);
>
> 212
>
> 213     poison_head_t *head = verify_allocated_region(p, true);
>
> 214     assert(head != NULL);
>
> 215
>
> 216     #ifdef SLOW
>
> 217     /* replace everything with FREE_FILL_PATTERN, including the
> poison head/tail */
>
> 218     memset(head, FREE_FILL_PATTERN,
>
>
> 0x40084361 is in heap_caps_free
> (/Users/kommykt/esp/esp-idf/components/heap/heap_caps.c:268).
>
> 263         ptr = (void *)dramAddrPtr[-1];
>
> 264     }
>
> 265
>
> 266     heap_t *heap = find_containing_heap(ptr);
>
> 267     assert(heap != NULL && "free() target pointer is outside heap
> areas");
>
> 268     multi_heap_free(heap->heap, ptr);
>
> 269 }
>
> 270
>
> 271 IRAM_ATTR void *heap_caps_realloc( void *ptr, size_t size, int caps)
>
> 272 {
>
>
> 0x40084945 is in _free_r
> (/Users/kommykt/esp/esp-idf/components/newlib/syscalls.c:42).
>
> 37     return heap_caps_malloc_default( size );
>
> 38 }
>
> 39
>
> 40 void IRAM_ATTR _free_r(struct _reent *r, void* ptr)
>
> 41 {
>
> 42     heap_caps_free( ptr );
>
> 43 }
>
> 44
>
> 45 void* IRAM_ATTR _realloc_r(struct _reent *r, void* ptr, size_t size)
>
> 46 {
>
>
> 0x401c1181 is in operator delete(void*)
> (/Volumes/build/idf/crosstool-NG/.build/src/gcc-5.2.0/libstdc++-v3/libsupc++/del_op.cc:46).
>
>
> 0x400f01e1 is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_drop_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/ext/new_allocator.h:110).
>
> 105       }
>
> 106
>
> 107       // __p is not permitted to be a null pointer.
>
> 108       void
>
> 109       deallocate(pointer __p, size_type)
>
> 110       { ::operator delete(__p); }
>
> 111
>
> 112       size_type
>
> 113       max_size() const _GLIBCXX_USE_NOEXCEPT
>
> 114       { return size_t(-1) / sizeof(_Tp); }
>
>
> 0x400f0dbb is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:1614).
>
> 1609       // Erase without rebalancing.
>
> 1610       while (__x != 0)
>
> 1611 {
>
> 1612   _M_erase(_S_right(__x));
>
> 1613   _Link_type __y = _S_left(__x);
>
> 1614   _M_drop_node(__x);
>
> 1615   __x = __y;
>
> 1616 }
>
> 1617     }
>
> 1618
>
> 0x400f0db4 is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:1612).
>
> 1607     _M_erase(_Link_type __x)
>
> 1608     {
>
> 1609       // Erase without rebalancing.
>
> 1610       while (__x != 0)
>
> 1611 {
>
> 1612   _M_erase(_S_right(__x));
>
> 1613   _Link_type __y = _S_left(__x);
>
> 1614   _M_drop_node(__x);
>
> 1615   __x = __y;
>
> 1616 }
>
>
> 0x400f0db4 is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:1612).
>
> 1607     _M_erase(_Link_type __x)
>
> 1608     {
>
> 1609       // Erase without rebalancing.
>
> 1610       while (__x != 0)
>
> 1611 {
>
> 1612   _M_erase(_S_right(__x));
>
> 1613   _Link_type __y = _S_left(__x);
>
> 1614   _M_drop_node(__x);
>
> 1615   __x = __y;
>
> 1616 }
>
>
> 0x400f0db4 is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:1612).
>
> 1607     _M_erase(_Link_type __x)
>
> 1608     {
>
> 1609       // Erase without rebalancing.
>
> 1610       while (__x != 0)
>
> 1611 {
>
> 1612   _M_erase(_S_right(__x));
>
> 1613   _Link_type __y = _S_left(__x);
>
> 1614   _M_drop_node(__x);
>
> 1615   __x = __y;
>
> 1616 }
>
>
> 0x400f0db4 is in std::_Rb_tree<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::_Select1st<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> std::allocator<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >
> >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:1612).
>
> 1607     _M_erase(_Link_type __x)
>
> 1608     {
>
> 1609       // Erase without rebalancing.
>
> 1610       while (__x != 0)
>
> 1611 {
>
> 1612   _M_erase(_S_right(__x));
>
> 1613   _Link_type __y = _S_left(__x);
>
> 1614   _M_drop_node(__x);
>
> 1615   __x = __y;
>
> 1616 }
>
>
> 0x40156109 is in Pushover::EventListener(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >, void*)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_tree.h:858).
>
> 853
>
> 854       _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a);
>
> 855 #endif
>
> 856
>
> 857       ~_Rb_tree() _GLIBCXX_NOEXCEPT
>
> 858       { _M_erase(_M_begin()); }
>
> 859
>
> 860       _Rb_tree&
>
> 861       operator=(const _Rb_tree& __x);
>
> 862
>
> 0x401550da is in std::_Function_handler<void
> (std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >, void*), std::_Bind<std::_Mem_fn<void
> (Pushover::*)(std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >, void*)> (Pushover*, std::_Placeholder<1>,
> std::_Placeholder<2>)> >::_M_invoke(std::_Any_data const&,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >&&, void*&&)
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/functional:600).
>
> 595       template<typename... _Args, typename _Req
>
> 596               = _Require<typename _Traits::__lvalue,
>
> 597                           _CheckArgs<_Pack<_Args...>>>>
>
> 598 result_type
>
> 599 operator()(_Class* __object, _Args&&... __args) const
>
> 600 { return (__object->*_M_pmf)(std::forward<_Args>(__args)...); }
>
> 601
>
> 602       // Handle smart pointers, references and pointers to derived
>
> 603       template<typename _Tp, typename... _Args, typename _Req
>
> 604               = _Require<_NotSame<_Class, _Tp>, _NotSame<_Class*,
> _Tp>,
>
>
> 0x400f3545 is in std::function<void (std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> void*)>::operator()(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >, void*) const
> (/Users/kommykt/esp/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/functional:2271).
>
> 2266     function<_Res(_ArgTypes...)>::
>
> 2267     operator()(_ArgTypes... __args) const
>
> 2268     {
>
> 2269       if (_M_empty())
>
> 2270 __throw_bad_function_call();
>
> 2271       return _M_invoker(_M_functor,
> std::forward<_ArgTypes>(__args)...);
>
> 2272     }
>
> 2273
>
> 2274 #if __cpp_rtti
>
> 2275   template<typename _Res, typename... _ArgTypes>
>
>
> 0x400f375e is in OvmsEvents::HandleQueueSignalEvent(event_queue_t*)
> (/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/ovms_events.cpp:234).
>
> 229       {
>
> 230       for (EventCallbackList::iterator itc=el->begin();
> itc!=el->end(); ++itc)
>
> 231         {
>
> 232         m_current_started = monotonictime;
>
> 233         m_current_callback = *itc;
>
> 234         m_current_callback->m_callback(m_current_event,
> msg->body.signal.data);
>
> 235         m_current_callback = NULL;
>
> 236         }
>
> 237       }
>
> 238     }
>
>
> 0x400f37d5 is in OvmsEvents::EventTask()
> (/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/ovms_events.cpp:185).
>
> 180       switch(msg.type)
>
> 181         {
>
> 182         case EVENT_none:
>
> 183           break;
>
> 184         case EVENT_signal:
>
> 185           HandleQueueSignalEvent(&msg);
>
> 186           break;
>
> 187         default:
>
> 188           break;
>
> 189         }
>
>
> 0x400f37e5 is in EventLaunchTask(void*)
> (/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/ovms_events.cpp:56).
>
> 51
>
> 52 void EventLaunchTask(void *pvParameters)
>
> 53   {
>
> 54   OvmsEvents* me = (OvmsEvents*)pvParameters;
>
> 55
>
> 56   me->EventTask();
>
> 57   }
>
> 58
>
> 59 void event_trace(int verbosity, OvmsWriter* writer, OvmsCommand* cmd,
> int argc, const char* const* argv)
>
> 60   {
>
> --
> Üdvözlettel:
> Kovács Tamás
>
>
> _______________________________________________
> OvmsDev mailing listOvmsDev at lists.openvehicles.comhttp://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 at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>


-- 
Üdvözlettel:
Kovács Tamás
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20200605/6567c531/attachment-0001.html>


More information about the OvmsDev mailing list