<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Ok, but I'm in ap+client mode, but don't have anything attaching to
the AP side of things.<br>
<br>
AP+Client, hotspot running. Boot. Client gets an IP address,
server connects, metrics sent.<br>
Some time later (minutes or so), the modem finally connects. Wifi
is still connected, and is still the primary interface, but the
server is no longer getting updates from module. server stop,
server start, hang. The last thing to the console this past time
before the phone client no longer got updates was "starting SNTP
client"<br>
<br>
Not 100% repeatable, but close to it. I think partly it depends on
the modem's luck in getting a good cell connection; it's kind of
iffy here. Or, is the deadlock in the SNTP client instead of MDNS?<br>
<br>
Greg<br>
<br>
<br>
<div class="moz-cite-prefix">Mark Webb-Johnson wrote:<br>
</div>
<blockquote type="cite"
cite="mid:9EE9E046-CB36-421E-A9F6-635084D34396@webb-johnson.net">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
It is a task mutex lock, so for mdns I have used them in ‘wait
forever’ mode.
<div class=""><br class="">
</div>
<div class="">This is for the code I just submitted a few minutes
ago.</div>
<div class=""><br class="">
</div>
<div class="">Looking at the esp-idf mdns code, I think using AP
or CLIENT modes would have been ok. Only one interface coming
up/down then. But for APCLIENT mode, or when switch between AP
and CLIENT modes, the fault will be triggered.</div>
<div class=""><br class="">
</div>
<div class="">Regards, Mark.<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 19 Mar 2018, at 11:40 AM, Greg D. <<a
href="mailto:gregd2350@gmail.com" class=""
moz-do-not-send="true">gregd2350@gmail.com</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" class="">
<div text="#000000" bgcolor="#FFFFFF" class=""> I wonder
if those locks are the cause of the hangs I'm getting.
Do they have timers on them, or will they wait forever?<br
class="">
<br class="">
Greg<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Mark Webb-Johnson wrote:<br
class="">
</div>
<blockquote type="cite"
cite="mid:1358F917-D8B3-4554-BA9C-BB933C8FCB7C@webb-johnson.net"
class="">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" class="">
Messy. The issue is the restarting of mdns, coupled
with AP/STA coming up/down in different threads. That
could result in a mdns_free while another mdns_free or
mdns_init is in progress. The mdns library is not
thread safe. In particular, they mutex protect some
internal stuff but not all of mdns_free or any of
mdns_init.
<div class=""><br class="">
</div>
<div class="">I introduced an ovms_mutex library to
main. This contains some helpful wrapper functions
to make mutexes easy and safe to use:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">
<div class="">class OvmsMutex</div>
</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">
<div class="">Encapsulates a mutex.</div>
<div class="">Provides Lock() and Unlock()
functions to access it.</div>
</blockquote>
<br class="">
</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">class OvmsMutexLock</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">Encapsulates a mutex lock
in a safer manner.</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">Constructor locks it, and
destructor unlocks it.</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">Using this is as simple as
creating a mutex for the object to be protected,
and then creating a OvmsMutexLock(&mutex) over
that. When the OvmsMutexLock comes in scope, it
will lock the mutex, and when it goes out of scope
it will unlock it.</blockquote>
<br class="">
</blockquote>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">I’ve done this in other
projects, with great success. Using OvmsMutexLock
objects means you never forget to unlock the mutex
(no matter how weird and wonderful your code paths
are).</blockquote>
<div class="">
<div class=""><br class="">
</div>
<div class="">I then used OvmsMutex and
OvmsMutexLock in ovms_mdns. The mdns stuff seems
ok for me now.</div>
<div class=""><br class="">
</div>
<div class="">Regards, Mark.<br class="">
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">On 19 Mar 2018, at 9:51 AM, Mark
Webb-Johnson <<a
href="mailto:mark@webb-johnson.net"
class="" moz-do-not-send="true">mark@webb-johnson.net</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class=""><br class="">
It seems that mdns_free is being called,
while mdns_free is running…<br class="">
<br class="">
It is trivial to fix it in the timer
deletion code, but that just delays the
problem until a bit later (the hostname
free).<br class="">
<br class="">
I am looking at this now.<br class="">
<br class="">
Regards, Mark.<br class="">
<br class="">
<blockquote type="cite" class="">On 19 Mar
2018, at 9:40 AM, Stephen Casner <<a
href="mailto:casner@acm.org" class=""
moz-do-not-send="true">casner@acm.org</a>>
wrote:<br class="">
<br class="">
On Sun, 18 Mar 2018, Michael Balzer
wrote:<br class="">
<br class="">
<blockquote type="cite" class="">From a
first look at the mdns code in your
backtrace, I would guess<br class="">
that's a double free() for the timer,
it seems the timer_handle<br class="">
never gets NULLed.<br class="">
</blockquote>
<br class="">
That may be a bug (deficiency) in the
esp-idf mDNS code.<br class="">
<br class="">
Perhaps I hit it because
OvmsMDNS::StopMDNS was called without<br
class="">
everything coming up correctly first?<br
class="">
<br class="">
-- Steve<br
class="">
_______________________________________________<br class="">
OvmsDev mailing list<br class="">
<a
href="mailto:OvmsDev@lists.teslaclub.hk"
class="" moz-do-not-send="true">OvmsDev@lists.teslaclub.hk</a><br
class="">
<a class="moz-txt-link-freetext"
href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev"
moz-do-not-send="true">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br
class="">
</blockquote>
<br class="">
_______________________________________________<br class="">
OvmsDev mailing list<br class="">
<a
href="mailto:OvmsDev@lists.teslaclub.hk"
class="" moz-do-not-send="true">OvmsDev@lists.teslaclub.hk</a><br
class="">
<a class="moz-txt-link-freetext"
href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev"
moz-do-not-send="true">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br
class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
<br class="">
<fieldset class="mimeAttachmentHeader"></fieldset>
<br class="">
<pre class="" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.teslaclub.hk" moz-do-not-send="true">OvmsDev@lists.teslaclub.hk</a>
<a class="moz-txt-link-freetext" href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br class="">
</div>
_______________________________________________<br
class="">
OvmsDev mailing list<br class="">
<a href="mailto:OvmsDev@lists.teslaclub.hk" class=""
moz-do-not-send="true">OvmsDev@lists.teslaclub.hk</a><br
class="">
<a class="moz-txt-link-freetext" href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br
class="">
</div>
</blockquote>
</div>
<br class="">
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.teslaclub.hk">OvmsDev@lists.teslaclub.hk</a>
<a class="moz-txt-link-freetext" href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br>
</body>
</html>