[Ovmsdev] v3 hardware disconnecting from v2 server

Tom Parker tom at carrott.org
Tue Jan 30 18:53:31 HKT 2018

On 29/01/18 13:07, Mark Webb-Johnson wrote:
> The bigger issue is the PPP level, and I’m not sure how to reliably detect issues there. Also not sure if the issue you are seeing is at the TCP server connection level, or low level PPP transport. Do you know if you restart the v2 server module, but leave the simcom connection as it is, does that resolve it?

Stopping the v2 server causes a panic even when it has connected right 
after boot. The below stack trace is from current master. Looking at the 
code where it panics, it seems like the MetricCallbackList is corrupted 

I commented out the MyMetrics.RegisterListener call in 
ovms_server_v2.cpp and got basically the same crash in 
OvmsEvents::DeregisterEvent so something strange is going on. I read the 
documentation for std::list and it looks like it's doing the right 
thing. Hmm... could the ec->m_caller == caller explode if the caller 
passed to RegisterEvent has been freed? My naive understanding of C++ 
would suggest no, because a pointer to invalid memory does not equal a 
pointer to valid memory, but I wouldn't be surprised if == does 
something other than pointer comparison sometimes. The caller is only 
accessed during deregister, so things would operate normally until you 
try to deregister.

I suppose it would have been quicker to recompile with gdb enabled than 
to stare at the code, but that's for tomorrow.

I did notice what looks like a memory leak, EventCallbackEntry objects 
are new'ed and added to the list in RegisterEvent, but they're only 
removed from the list in OvmsEvents::DeregisterEvent(). I think they 
should be delete'ed too?

I (55374) ovms-server-v2: Send MP-0 W0,0,0,0,0,0,0,0,0
I (55374) ovms-server-v2: Send MP-0 F3.0.0/factory/main build (idf 
v3.1-dev-217-g5bf85d0) Jan 30 2018 10:07:33,,5,1,NL,2degrees
OVMS > server v2 stop
Stopping OVMS Server V2 connection (oscv2)
Guru Meditation Error: Core  1 panic'ed (LoadProhibited)
. Exception was unhandled.
Register dump:
PC      : 0x40121a5a  PS      : 0x00060330  A0      : 0x8014fb4f A1      
: 0x3ffd9ce0
0x40121a5a: OvmsMetrics::DeregisterListener(char const*) at 

A2      : 0x3ffb6d90  A3      : 0x3f41749c  A4      : 0x3ffdfa1d A5      
: 0x3ffdb89c
A6      : 0x3ffdb8ac  A7      : 0x3ffdb8ac  A8      : 0x00000000 A9      
: 0x3ffd9cc0
A10     : 0x3ffdd244  A11     : 0x3ffdb904  A12     : 0x3ffd9cf0 A13     
: 0x3ffae8d8
A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x00000018 
EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000004  LBEG    : 0x400014fd  LEND    : 0x4000150d LCOUNT  
: 0xfffffff5

Backtrace: 0x40121a5a:0x3ffd9ce0 0x4014fb4c:0x3ffd9d00 
0x4014fbee:0x3ffd9d40 0x4014f117:0x3ffd9d60 0x4012ad9e:0x3ffd9d80 
0x4012ae91:0x3ffd9db0 0x4012ae83:0x3ffd9de0 0x4012ae83:0x3ffd9e10 
0x4012aeb9:0x3ffd9e40 0x401228b8:0x3ffd9e60 0x4012dbfd:0x3ffd9e80 
0x4012dc64:0x3ffd9ee0 0x4012292f:0x3ffd9f20 0x40122946:0x3ffd9f40 
0x40122e89:0x3ffd9f60 0x40125811:0x3ffd9f90 0x40125a09:0x3ffd9fc0 
0x40122d2d:0x3ffd9fe0 0x40122d3c:0x3ffda000 0x40125481:0x3ffda020
0x40121a5a: OvmsMetrics::DeregisterListener(char const*) at 
0x4014fb4c: OvmsServerV2::~OvmsServerV2() at 
0x4014fbee: OvmsServerV2::~OvmsServerV2() at 
0x4014f117: ovmsv2_stop(int, OvmsWriter*, OvmsCommand*, int, char const* 
const*) at 
(discriminator 1)
0x4012ad9e: OvmsCommand::Execute(int, OvmsWriter*, int, char const* 
const*) at 

More information about the OvmsDev mailing list