[Ovmsdev] Branch for-v3.3 network issues

Craig Leres leres at xse.com
Sun Sep 19 12:45:21 HKT 2021


On 9/18/21 8:28 AM, Michael Balzer wrote:
> Craig,
> 
> Am 18.09.21 um 00:14 schrieb Craig Leres:
>> On 9/17/21 12:24 AM, Michael Balzer wrote:
>>> Duktape still occasionally runs into the null/undefined issue with 
>>> for…in:
>>> https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/474#issuecomment-744005044 
>>>
>>> We need to test the revision 3 ESP32 on this.
>>
>> What can I do to test this on my frankenstein v3 module?
> 
> Here's a simple test that reliably reproduces the effect on my modules:
> 
>  1. Setup handler loop: script eval 'PubSub.subscribe("usr.testev",
>     function(ev) { var ms=Number(ev.substr(11))||10;
>     OvmsEvents.Raise("usr.testev."+ms, ms); })'
>  2. Start event loop with 10 ms interval: event raise usr.testev.10
> 
> The handler will keep raising the same event with the given interval. 
> You can monitor the events by settingt log level debug on events or 
> using the event tracing (event trace on/off), be aware 10 ms will flood 
> your terminal/shell. Check the Duktape CPU usage to see if the loop is 
> still running without enabling the event log.
> 
> The loop _should_ normally run indefinitely. To stop it manually, you 
> would do: script eval 'PubSub.unsubscribe("usr.testev")'
> 
> In reality, it will abort after some random run time with a log entry 
> like this:
> 
> E (1803740) ovms-duktape: [int/PubSub.js:1] TypeError: not object 
> coercible|    at [anon] (duk_api_stack.c:3661) internal|    at hasKeys 
> (int/PubSub.js:1) strict|    at messageHasSubscribers (int/PubSub.js:1) 
> strict| at publish (int/PubSub.js:1) strict|    at [anon] 
> (int/PubSub.js:1) strict preventsyield
> 
> …or (newly discovered today) with a heap corruption crash, which may 
> have another cause though (investigating).
> 
> If it stops with the "TypeError", the loop should be restartable simply 
> by repeating step 2. That proves the PubSub handler setup is still intact.
> 
> The time it needs to run into the TypeError varies widely and has some 
> dependance on how many other handlers are registered. With no other 
> javascript handlers registered, it normally takes 15-30 minutes on my 
> modules to run into the error. With AuxBatMon, PwrMon & Edimax plugins 
> enabled, it will normally happen within 5 minutes, sometimes within a 
> few seconds.
> 
> The interval is basically irrelevant, the effect just comes faster with 
> a short interval.
> 
> Regards,
> Michael
> 
> PS: btw, the effect occurs with Duktape running in the upper 2 MB as 
> well. That doesn't prove it's not the SPIRAM bug though, it just may 
> have other trigger conditions.

Running 3.2.016-394-ge7d9e1c1/ota_0/main, I ran your suggested 
script/event commands. Within ~30 seconds I tried "event trace on". But 
since I was on the serial console I next decided to type "event trace 
off" and try that on a ssh session but the module crashed with your heap 
crash before I could stop the output. Is it a problem if I cause the 
module to generate way more serial output than 115200 baud can handle?

(Before I rebooted I saw that the module was again unhappy with the cell 
modem but I guess one problem at a time...)

I ran your test commands a second time. After 3-4 minutes I tried 
ssh'ing in which seemed to cause another KCORRUPT HEAP crash. (I didn't 
collect any info from that crash.

The third time I let it run for 3 hours. Then I turned trace on and back 
off to verify the test was still running. (Cellular registration stated 
up for 3 hours as well.)

I will check again in the morning.

		Craig

========================================

[first crash]

I (60262) events: Signal(usr.testev.10)
I (60272) events: Signal(usr.testev.10)
I (60282) events: SignCORRUPT HEAP: Bad head at 0x3f82d0c4. Expected 
0xabba1234 got 0x3f82d148
abort() was called at PC 0x400844c3 on core 0

ELF file SHA256: 7c10178c2874419f

Backtrace: 0x40089a2f:0x3ffcbc20 0x40089cc9:0x3ffcbc40 
0x400844c3:0x3ffcbc60 0x400845dd:0x3ffcbca0 0x4011a4a3:0x3ffcbcc0 
0x4010f439:0x3ffcbf80 0x4010ef89:0x3ffcbfd0 0x4008e903:0x3ffcc000 
0x400840b1:0x3ffcc020 0x40084671:0x3ffcc040 0x4000bec7:0x3ffcc060 
0x401b15ad:0x3ffcc080 0x400f7081:0x3ffcc0a0 0x4008d3af:0x3ffcc0c0

========================================

ice 114 % ./backtrace.sh 0x40089a2f:0x3ffcbc20 0x40089cc9:0x3ffcbc40 
0x400844c3:0x3ffcbc60 0x400845dd:0x3ffcbca0 0x4011a4a3:0x3ffcbcc0 
0x4010f439:0x3ffcbf80 0x4010ef89:0x3ffcbfd0 0x4008e903:0x3ffcc000 
0x400840b1:0x3ffcc020 0x40084671:0x3ffcc040 0x4000bec7:0x3ffcc060 
0x401b15ad:0x3ffcc080 0x400f7081:0x3ffcc0a0 0x4008d3af:0x3ffcc0c0
+ xtensa-esp32-elf-addr2line -e build/ovms3.elf 0x40089a2f:0x3ffcbc20 
0x40089cc9:0x3ffcbc40 0x400844c3:0x3ffcbc60 0x400845dd:0x3ffcbca0 
0x4011a4a3:0x3ffcbcc0 0x4010f439:0x3ffcbf80 0x4010ef89:0x3ffcbfd0 
0x4008e903:0x3ffcc000 0x400840b1:0x3ffcc020 0x40084671:0x3ffcc040 
0x4000bec7:0x3ffcc060 0x401b15ad:0x3ffcc080 0x400f7081:0x3ffcc0a0 
0x4008d3af:0x3ffcc0c0
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/esp32/panic.c:736
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/esp32/panic.c:736
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/newlib/locks.c:143
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/newlib/locks.c:171
/Users/ivan/e/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-esp32-elf/newlib/libc/stdio/../../../.././newlib/libc/stdio/vfprintf.c:1699 
(discriminator 8)
/Users/ivan/e/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-esp32-elf/newlib/libc/stdlib/../../../.././newlib/libc/stdlib/strtod.c:428
/Users/ivan/e/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-esp32-elf/newlib/libc/string/../../../.././newlib/libc/string/strerror.c:591
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/heap/multi_heap_poisoning.c:350
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/heap/heap_caps.c:403
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/newlib/syscalls.c:42
??:0
/wrkdirs/usr/ports/devel/xtensa-esp32-elf/work/crosstool-NG-1.22.0-97-gc752ad5/.build/xtensa-esp32-elf/build/build-cc-gcc-final/xtensa-esp32-elf/libstdc++-v3/include/bits/locale_facets_nonio.tcc:1284
main/ovms_http.cpp:84
/home/ice/u0/leres/esp/openvehicles-xtensa-esp32-elf/components/freertos/timers.c:485

========================================

ice 117 % diff sdkconfig support/sdkconfig.default.hw31 | fgrep -v 
CONFIG_OVMS_VEHICLE
209c209
< CONFIG_SPIRAM_CACHE_WORKAROUND=
---
 > CONFIG_SPIRAM_CACHE_WORKAROUND=y
665,680c665,681
---
683,686c684,687
---


More information about the OvmsDev mailing list