[Ovmsdev] Crashing on restart

Michael Balzer dexter at expeedo.de
Wed Jan 8 15:29:02 HKT 2025


Everyone,

I've just checked in my changes, so this is now included in the edge 
build (3.3.004-331-g4a7b966d, already available on dexters-web).

I had no issues with my modules, but depending on the vehicle & 
configuration, we may need to raise the new default queue size beyond 100.

Please test & report. If the queue is too small, the module will crash 
with a "queue overflow" log entry.

Regards,
Michael


Am 06.01.25 um 20:49 schrieb Michael Balzer via OvmsDev:
> Tamás,
>
> I've got a test build that should fix your reboot issue, if my 
> diagnosis was correct. Can you please test this firmware image?
>
> http://ovms.dexters-web.de/f/firmware/test/ovms3.bin
>
> The build works in my test & live module. The changes are not yet 
> checked in, patch attached. This consists of a) delegating registry 
> changes to the event task and b) invalidating callbacks in the list on 
> deregistration before actually deleting them, so the list processing 
> cannot run into deleted entries, when deregistration is done from 
> within a callback execution.
>
> The changes need another mutex and a larger event queue. I had queue 
> size 40 before, minimum now is 80, build uses 100 to be on the safe 
> side. That means another 720 bytes of 8-bit RAM are used for the queue 
> unfortunately, but that shouldn't be a problem yet.
>
> I also again needed to power off my module for the reboot, but with 
> the new firmware, the reboot works. So chances are, this issue is now 
> hit more often than before, probably because of more stuff going on in 
> the shutdown.
>
> Regards,
> Michael
>
>
> Am 02.01.25 um 15:25 schrieb Michael Balzer via OvmsDev:
>> The log shows it actually crashes during the shutdown process -- but 
>> @Michael, I'm pretty sure this is an old issue, turning up now only 
>> by chance.
>>
>> This looks like a race condition between event handler invocation and 
>> deregistration:
>>
>> Guru Meditation Error: Core  1 panic'ed 
>> (InstrFetchProhibited).Exception was unhandled.
>>>> Backtrace: 0x41000000:0x3ffc8c30 0x401208ed:0x3ffc8c60 
>> 0x401209d4:0x3ffc8cc0 0x40120a5d:0x3ffc8d00
>>
>> → Crash at *0x41000000* (invalid address), called from:
>>
>> 0x401208ed is in OvmsEvents::HandleQueueSignalEvent(event_queue_t*) 
>> (/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/main/ovms_events.cpp:310).
>> 305           {
>> 306           for (EventCallbackList::iterator itc=el->begin(); 
>> itc!=el->end(); ++itc)
>> 307             {
>> 308             m_current_started = monotonictime;
>> 309             m_current_callback = *itc;
>> *310 m_current_callback->m_callback(m_current_event, 
>> msg->body.signal.data);*
>> 311             m_current_callback = NULL;
>> 312             }
>> 313           }
>> 314         }
>>
>> From there it then enters a crash loop from the crash handler somehow 
>> running into an illegal address when trying to access the RTC 
>> boot_data object (?).
>>
>>
>> I think, when introducing the separate event handling task, we missed 
>> adding a lock to make manipulations & accesses to the event handler 
>> list atomic.
>>
>> The log shows, the event queue grew significantly due to 
>> duktape/scripts lagging during shutdown (as seen in the log), so the 
>> task was quite busy.
>>
>> So probably a `DeregisterEvent()` call from the shutdown process came 
>> in, invalidating a callback entry just while the event task was 
>> processing that callback list.
>>
>> Solving this may need some additional thoughts & measures: locking 
>> the whole event registry with handlers lagging like this could lead 
>> to a deadlock… probably at least the Duktape component needs to 
>> cleanly abort/reject all pending events before/while deregistering.
>>
>> Michael, if you'd like to have a look at this, go ahead.
>>
>> Regards,
>> Michael
>>
>>
>> Am 01.01.25 um 11:47 schrieb Tamás Kovács via OvmsDev:
>>> Now i change the sd card to a smaller, and formatted to fat32 
>>> (16Gb), but on reboot is crashing.
>>> Now connect a computer to the usb port, and create a log in verbose, 
>>> attached to the email.
>>>
>>>
>>> -- 
>>> Üdvözlettel:
>>> Kovács Tamás
>>>
>>>
>>> _______________________________________________
>>> OvmsDev mailing list
>>> OvmsDev at lists.openvehicles.com
>>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>
>> -- 
>> Michael Balzer * Am Rahmen 5 * D-58313 Herdecke
>> Fon 02330 9104094 * Handy 0176 20698926
>>
>> _______________________________________________
>> OvmsDev mailing list
>> OvmsDev at lists.openvehicles.com
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
> -- 
> Michael Balzer * Am Rahmen 5 * D-58313 Herdecke
> Fon 02330 9104094 * Handy 0176 20698926
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev

-- 
Michael Balzer * Am Rahmen 5 * D-58313 Herdecke
Fon 02330 9104094 * Handy 0176 20698926

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20250108/7766466c/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20250108/7766466c/attachment.sig>


More information about the OvmsDev mailing list