[Ovmsdev] Random crash if enable notifications

Tamás Kovács kommykt at gmail.com
Sun Jun 7 13:50:44 HKT 2020


I downloaded this toolchain and use it: build idf v3.3-beta3-776-g3d198cd50
I checkout esp-idf to spiram-fix-test branch.

I use a forked repo.
I run the following to update to spiram-fix-test, on my local repo.
git fetch upstream
git pull upstream/spiram-fix-test master

But i now get crash the last is:
Last crash: abort() was called on core 1 Backtrace: 0x4008ace7 0x4008af7d
0x4010badf 0x40097d93 0x40083ffd 0x400845f1 0x4000bec7 0x4012c729
0x402a1815 0x401eb40d 0x401f7a26 0x401f8af0 0x40207065 0x40206f45
0x40207133 0x40206faf 0x402073b6 0x4020747d 0x401f4445 0x401f3344
0x401f3677 0x401f441e 0x402079d1 0x401f76e5 0x401f7892 0x40202ea6
0x4012db9a 0x4012dd9d

kommykt at MacBook-Air OVMS.V3 % a2l 0x4008ace7 0x4008af7d 0x4010badf
0x40097d93 0x40083ffd 0x400845f1 0x4000bec7 0x4012c729 0x402a1815
0x401eb40d 0x401f7a26 0x401f8af0 0x40207065 0x40206f45 0x40207133
0x40206faf 0x402073b6 0x4020747d 0x401f4445 0x401f3344 0x401f3677
0x401f441e 0x402079d1 0x401f76e5 0x401f7892 0x40202ea6 0x4012db9a 0x4012dd9d

Using elf file:
/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ovms3.elf

0x4008ace7 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()

0x4008af7d 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[] = {

0x4010badf is in __assert_func
(../../../.././newlib/libc/stdlib/assert.c:63).

0x40097d93 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,

0x40083ffd 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 {

0x400845f1 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 {

0x4012c729 is in DukOvmsFree(void*, void*)
(/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_script/src/ovms_script.cpp:442).

437   return ExternalRamRealloc(ptr, size);

438   }

439

440 void DukOvmsFree(void *udata, void *ptr)

441   {

442   free(ptr);

443   }

444

445 void DukOvmsFatalHandler(void *udata, const char *msg)

446   {

0x402a1815 is in duk_heap_mem_free (duk_heap_memory.c:406).

0x401eb40d is in duk__refcount_refzero_hstring (duk_heap_alloc.c:103).

0x401f7a26 is in duk_heaphdr_refzero (duk_heap_refcount.c:630).

0x401f8af0 is in duk_pop_2 (duk_api_stack.c:6089).

0x40207065 is in duk__enc_value (duk_bi_json.c:2240).

0x40206f45 is in duk__enc_value (duk_bi_json.c:1951).

1946 in duk_bi_json.c

0x40207133 is in duk__enc_object (duk_bi_json.c:1885).

1880 in duk_bi_json.c

0x40206faf is in duk__enc_value (duk_bi_json.c:2203).

2198 in duk_bi_json.c

0x402073b6 is in duk_bi_json_stringify_helper (duk_bi_json.c:3191).

3186 in duk_bi_json.c

0x4020747d is in duk_bi_duktape_object_enc (duk_bi_duktape.c:96).

0x401f4445 is in duk__handle_call_raw (duk_js_call.c:2276).

0x401f3344 is in duk__js_execute_bytecode_inner (duk_js_call.c:2422).

2417 in duk_js_call.c

0x401f3677 is in duk_js_execute_bytecode (duk_js_executor.c:2956).

0x401f441e is in duk__handle_call_raw (duk_js_call.c:2246).

0x402079d1 is in duk__pcall_method_raw (duk_js_call.c:2422).

2417 in duk_js_call.c

0x401f76e5 is in duk_handle_safe_call (duk_js_call.c:2475).

2470 in duk_js_call.c

0x401f7892 is in duk_safe_call (duk_api_call.c:318).

0x40202ea6 is in duk_pcall_method (duk_api_call.c:242).

237 in duk_api_call.c

0x4012db9a is in OvmsScripts::DukTapeTask()
(/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_script/src/ovms_script.cpp:2273).

2268             duk_get_global_string(m_dukctx, "PubSub");

2269             duk_get_prop_string(m_dukctx, -1, "publish");

2270             duk_dup(m_dukctx, -2);  /* this binding = process */

2271             duk_push_string(m_dukctx, msg.body.dt_event.name);

2272             duk_push_string(m_dukctx, "");

2273             if (duk_pcall_method(m_dukctx, 2) != 0)

2274               {

2275               DukOvmsErrorHandler(m_dukctx, -1);

2276               }

2277             duk_pop_2(m_dukctx);

0x4012dd9d is in DukTapeLaunchTask(void*)
(/Users/kommykt/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/ovms_script/src/ovms_script.cpp:427).

422

423 void DukTapeLaunchTask(void *pvParameters)

424   {

425   OvmsScripts* me = (OvmsScripts*)pvParameters;

426

427   me->DukTapeTask();

428   }

429

430 void* DukOvmsAlloc(void *udata, duk_size_t size)

431   {


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

> See previous posts on this, you also need the fixed toolchain:
> https://github.com/espressif/esp-idf/issues/2892#issuecomment-501106283
>
> Regards,
> Michael
>
>
> Am 05.06.20 um 20:04 schrieb Tamás Kovács:
>
> 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
>
>
> _______________________________________________
> 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/20200607/7bba7e3a/attachment.htm>


More information about the OvmsDev mailing list