Coder Social home page Coder Social logo

jmdns's Introduction

build status Maven Central Javadocs

This library is licensed under the Apache License Version 2.0. Please see the file NOTICE.txt.

Arthur van Hoff [email protected]

Rick Blair [email protected]

Kai Kreuzer [email protected]

JmDNS

This is an implementation of multi-cast DNS in Java. It supports service discovery and service registration. It is fully interoperable with Apple's Bonjour.

Sample Code for Service Registration

import java.io.IOException;
import java.net.InetAddress;

import javax.jmdns.JmDNS;
import javax.jmdns.ServiceInfo;

public class ExampleServiceRegistration {

    public static void main(String[] args) throws InterruptedException {

        try {
            // Create a JmDNS instance
            JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());

            // Register a service
            ServiceInfo serviceInfo = ServiceInfo.create("_http._tcp.local.", "example", 1234, "path=index.html");
            jmdns.registerService(serviceInfo);

            // Wait a bit
            Thread.sleep(25000);

            // Unregister all services
            jmdns.unregisterAllServices();

        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

Sample code for Service Discovery

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.jmdns.JmDNS;
import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceListener;

public class ExampleServiceDiscovery {

    private static class SampleListener implements ServiceListener {
        @Override
        public void serviceAdded(ServiceEvent event) {
            System.out.println("Service added: " + event.getInfo());
        }

        @Override
        public void serviceRemoved(ServiceEvent event) {
            System.out.println("Service removed: " + event.getInfo());
        }

        @Override
        public void serviceResolved(ServiceEvent event) {
            System.out.println("Service resolved: " + event.getInfo());
        }
    }

    public static void main(String[] args) throws InterruptedException {
        try {
            // Create a JmDNS instance
            JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());

            // Add a service listener
            jmdns.addServiceListener("_http._tcp.local.", new SampleListener());

            // Wait a bit
            Thread.sleep(30000);
        } catch (UnknownHostException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

jmdns's People

Contributors

carlonzo avatar dependabot[bot] avatar dhufnagel avatar dschroe avatar edgsousa avatar etyrrill avatar joerg1985 avatar kaikreuzer avatar leif81 avatar maggu2810 avatar martenbr avatar mattiasbe avatar mattsbecker avatar misterke avatar mixajlo avatar mwingbermuhle avatar newlunarfire avatar plotczyktest avatar rfcom avatar santhoshkani avatar stefaneicher avatar taiyangc avatar talksinmath avatar tolriq avatar usnasoft avatar vitoni avatar wallisch avatar yyoshiki41 avatar zhangl22000 avatar zippozeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jmdns's Issues

Cant subscribe to sub type updates only

Its not possible to add a listener for subtypes only. eg if i do
jmdns.addServiceListener("_mysubtype._sub._http._tcp.local.", this)

then serviceAdded(ServiceEvent event) is never called as when the DNS PTR record comes back only the type (in this case _http._tcp.local.) is checked against the list of listeners.

[OCD] Standardize tags

Before many people start using this repo, it would be nice if we could change the tag names to follow 'x.y.z' format.

Address error on record type index 65535

Using JmDNS on a network with Chromecast produces the following log messages.

07-13 15:03:54.185: E/DNSRecordType(22633): Could not find record type for index: 65535
07-13 15:03:54.185: W/DNSRecordClass(22633): Could not find record class for index: 65535

According to RFC 6762, record "classes in the range 32768 to 65535 are incompatible with Multicast DNS".

Using a url as service name does not result in a service annoucement

I am trying to register a service according to the Physical Web syntax:

        String service_type = "_http._tcp.";
        String service_name = "http://www.mycompany.com/xyz.html";
        int service_port = 80;
        ServiceInfo service_info = ServiceInfo.create(service_type, service_name, service_port, "");

Unfortunately, this service is not properly registered (at least I cannot see it from clients on the network). Changing the name to "xyz" makes it appear.

After service discovery, ServiceInfo.getHostAddress() sometimes returns IP address is hex values?

I used the following code to request info about a service:

JmDNS dns = new JmDNS();
ServiceInfo info = dns.getServiceInfo("type", "name", timeout);

The result eventually returns, the info is correct and I can fetch the IP address via info.getHostAddress().

However, it seems that sometimes the address is returned like this: fe80::e2ac:cbff:fe64:e3da. Is this normal? Is this just the IP in hex values (or something similar) that I can convert back to int's pretty easily? I've never seen an address formed that way before.

serviceResolved not called on TYPE_A/AAAA record change

When a service info is updated for a record TYPE_A or TYPE_AAAA change serviceResolved is not called again because https://github.com/jmdns/jmdns/blob/master/src/main/java/javax/jmdns/impl/ListenerStatus.java#L117 doesn't check for address changes
All starts here https://github.com/jmdns/jmdns/blob/master/src/main/java/javax/jmdns/impl/ServiceInfoImpl.java#L885
So if you want to filter only services that have IPv4 address sometimes you will skip some of them because they have only an IPv6 address and serviceResolved will never be called again when the TYPE_A record is parsed/resolved
It happens only sometimes because serviceResolved is executed on a thread pool and most of the times the service info already contains both addresses. I think that depends on the device speed, if i enable all debug loggings it happens more often

I'm not an expert of mDNS and i don't know if we just need a check for address changes in _sameInfo and if we should also avoid to dispatch multiple times handleServiceResolved(event); (that does an _executor.submit) if we already have all the data

Slow without internet access

I host a wifi network using a raspberry pi with hostapd and isc-dhcp-server.

If I use this code below, everything works fine except if I'm connected to the PI network which has no internet access. Is there a problem, that JmDNS need a real DNS server or internet access?
After about 10s it founds the service, but with internet connection its instandly.
So is there a timeout?

jmDNS = JmDNS.create(Inet4Address.getByAddress(Utils.toIPByteArray(wifiManager.getConnectionInfo().getIpAddress())));
jmDNS.addServiceListener(SERVICE_TYPE, ServerDiscovery.this);

OPT code not currently handled for values 40960, 59904, 26883

Using JmDNS (org.openhab.jmdns:jmdns:3.4.2) on a network with multiple apple TVs and multiple Chromecasts.

I noticed the same OPT codes (40960, 59904, 26883) were reported in this bug which references #12. However the later has an OPT code of (65002) which is an experimental value as mentioned in #16. Anyone know what the (40960, 59904, 26883) codes are ? And should it be ignored the same as the ones between 65001 to 65534.

I've been able to "quiet" the problem with a logging.property, but would be cool to understand why and try to figure out what this means.
If there are any tests I can help with, let me know. Thanks!

This is what I'm getting seeing:

WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was an OPT answer. Not currently handled. Option code: 0 data: 
WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was an OPT answer. Not currently handled. Option code: 40960 data: 
WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was an OPT answer. Not currently handled. Option code: 0 data: 
WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was an OPT answer. Not currently handled. Option code: 59904 data: 
WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was an OPT answer. Not currently handled. Option code: 26883 data: 
WARNING (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - There was a problem reading the OPT record. Ignoring.
SEVERE (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming$MessageInputStream readName] - unsupported dns label type: '80'
SEVERE (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming$MessageInputStream readName] - bad domain name: possible circular name detected. Bad offset: 0x3fff at 0x2f9
SEVERE (2016-01-20 19:15:49) [javax.jmdns.impl.constants.DNSRecordType typeForIndex] - Could not find record type for index: 65535
SEVERE (2016-01-20 19:15:49) [javax.jmdns.impl.DNSIncoming readAnswer] - Could not find record type. domain: 
dns[response,192.168.1.235:5353, length=763, id=0x0, flags=0x8400:r:aa, answers=9
answers:
    [Text@1978196970 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: Apple TV (3)._device-info._tcp.local. ttl: '4499/4500' text: '๏ฟฝmodel=J33AP']
    [Pointer@997133419 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _airplay._tcp.local. ttl: '4499/4500' alias: 'Apple TV (3)._airplay._tcp.local.']
    [Pointer@1414986701 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _services._dns-sd._udp.local. ttl: '4499/4500' alias: '_airplay._tcp.local.']
    [Service@1797208194 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: Apple TV (3)._airplay._tcp.local. ttl: '4499/4500' server: '1st-Floor-Apple-TV-3.local.:7000']
    [Text@1499095480 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: Apple TV (3)._airplay._tcp.local. ttl: '4499/4500' text: '๏ฟฝdeviceid=9C:20:7...']
    [Pointer@437596844 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _raop._tcp.local. ttl: '4499/4500' alias: '37CBBAAA8812@Apple TV (2)._raop._tcp.local.']
    [Pointer@2046700208 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _services._dns-sd._udp.local. ttl: '4499/4500' alias: '_raop._tcp.local.']
    [Service@1798821413 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: 37CBBAAA8812@Apple TV (2)._raop._tcp.local. ttl: '4499/4500' server: '1st-Floor-Apple-TV-3.local.:7000']
    [Text@1642736986 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: 37CBBAAA8812@Apple TV (2)._raop._tcp.local. ttl: '4499/4500' text: '
cn=0,1,2,3๏ฟฝda=tr...']]
    answer:        [Text@1978196970 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: Apple TV (3)._device-info._tcp.local. ttl: '4499/4500' text: '๏ฟฝmodel=J33AP']
    answer:        [Pointer@997133419 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _airplay._tcp.local. ttl: '4499/4500' alias: 'Apple TV (3)._airplay._tcp.local.']
    answer:        [Pointer@1414986701 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _services._dns-sd._udp.local. ttl: '4499/4500' alias: '_airplay._tcp.local.']
    answer:        [Service@1797208194 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: Apple TV (3)._airplay._tcp.local. ttl: '4499/4500' server: '1st-Floor-Apple-TV-3.local.:7000']
    answer:        [Text@1499095480 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: Apple TV (3)._airplay._tcp.local. ttl: '4499/4500' text: '๏ฟฝdeviceid=9C:20:7...']
    answer:        [Pointer@437596844 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _raop._tcp.local. ttl: '4499/4500' alias: '37CBBAAA8812@Apple TV (2)._raop._tcp.local.']
    answer:        [Pointer@2046700208 type: TYPE_PTR index 12, class: CLASS_IN index 1, name: _services._dns-sd._udp.local. ttl: '4499/4500' alias: '_raop._tcp.local.']
    answer:        [Service@1798821413 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: 37CBBAAA8812@Apple TV (2)._raop._tcp.local. ttl: '4499/4500' server: '1st-Floor-Apple-TV-3.local.:7000']
    answer:        [Text@1642736986 type: TYPE_TXT index 16, class: CLASS_IN index 1-unique, name: 37CBBAAA8812@Apple TV (2)._raop._tcp.local. ttl: '4499/4500' text: '
cn=0,1,2,3๏ฟฝda=tr...']
   0: 0000840000000009 0000000216317374 20466c6f6f722041 70706c6520545620     ........ .........= .......A pple.TV.
  20: 2833290c5f646576 6963652d696e666f 045f746370056c6f 63616c0000108001     (3)._dev ice-info ._tcp.lo cal.....
  40: 00001194000c0b6d 6f64656c3d4a3333 4150085f61697270 6c6179c030000c00     .......m odel=J33 AP._airp lay.0...
  60: 0100001194001916 31737420466c6f6f 72204170706c6520 545620283329c052     ........ ........ r.Apple. TV.(3).R
  80: 095f736572766963 6573075f646e732d 7364045f756470c0 35000c0001000011     ._servic es._dns- sd._udp. 5.......
  a0: 940002c052c06700 2180010000119400 1d000000001b5814 3173742d466c6f6f     ....R.g. !....... ......X. 1st-....
  c0: 722d4170706c652d 54562d33c035c067 0010800100001194 00d01a6465766963     r-Apple- TV-3.5.g ........ ...devic
  e0: 6569643d39433a32 303a37423a38433a 30453a3842176665 6174757265733d30     eid=9C:2 0:7B:8C: 0E:8B.fe atures=0
 100: 7835413746464646 372c3078450b666c 6167733d30783234 34106d6f64656c3d     x5A7FFFF 7,0xE.fl ags=0x24 4.model=
 120: 4170706c65545633 2c3143706b3d6436 3933663163306231 3263363931326330     AppleTV3 ,1Cpk=d6 93f1c0b1 2c6912c0
 140: 6636646539333633 3136366232386232 6437373732383564 3036613063323436     f6de9363 166b28b2 d777285d 06a0c246
 160: 3438656363353438 3662303030652770 693d366430323263 30632d323864662d     48ecc548 6b000e'p i=6d022c 0c-28df-
 180: 343364642d613164 642d666461626661 6434313331610e73 7263766572733d32     43dd-a1d d-fdabfa d4131a.s rcvers=2
 1a0: 32302e3638047676 3d32055f72616f70 c030000c00010000 1194002623394332     20.68.vv =2._raop .0...... ...&#9C2
 1c0: 3037423843304538 424031737420466c 6f6f72204170706c 6520545620283229     07B8C0E8 [email protected] oor.Appl e.TV.(2)
 1e0: c1aac080000c0001 000011940002c1aa c1bc002180010000 1194000800000000     ........ ........ ...!.... ........
 200: 1b58c0b7c1bc0010 80010000119400b1 0a636e3d302c312c 322c330764613d74     .X...... ........ .cn=0,1, 2,3.da=t
 220: 7275650865743d30 2c332c351166743d 3078354137464646 46372c307845086d     rue.et=0 ,3,5.ft= 0x5A7FFF F7,0xE.m
 240: 643d302c312c320d 616d3d4170706c65 5456332c3143706b 3d64363933663163     d=0,1,2. am=Apple TV3,1Cpk =d693f1c
 260: 3062313263363931 3263306636646539 3336333136366232 3862326437373732     0b12c691 2c0f6de9 363166b2 8b2d7772
 280: 3835643036613063 3234363438656363 3534383662303030 650873663d307832     85d06a0c 24648ecc 5486b000 e.sf=0x2
 2a0: 34340674703d5544 5008766e3d363535 33370976733d3232 302e36380476763d     44.tp=UD P.vn=655 37.vs=22 0.68.vv=
 2c0: 3200002905a00000 0000001800040014 00069c207b8c0e8a 9c207b8c0e8a0000     2..).... ........ ....{... ..{.....
 2e0: 0000000000002905 a000000000000cfd ea00084169039066 0aa1a1               ......). ........ ...Ai..f ...

Please push 3.5.0 to maven central

The latest version of JmDNS on maven central is 3.4.2, which has a major bug in the way it generates TXT records, please push 3.5.0 so that future users who like managed dependencies don't have to learn all of this the hard way (as I did). Thanks! :-)

tag: 3.4.3

The repo contains a

  • jmdns-3.4.0 tag
  • jmdns-3.4.1 tag
  • jmdns-3.4.2 tag

but misses a "jmdns-3.4.3" tag.

Could you add one please?

App exit in Android due to lack of try/catch in impl.DNSRecord

In recent Android versions, apps can manipulate the network parameters in such a way that jmdns causes an abrupt app exit. My Android app SSHelper started exiting in this way, and I traced it to DNSRecord.sameValue(). This patch fixes the problem:


diff -Naur a/DNSRecord.java b/DNSRecord.java
--- a/DNSRecord.java    2015-10-30 00:41:16.000000000 -0700
+++ b/DNSRecord.java    2015-10-30 00:50:19.000000000 -0700
@@ -308,14 +308,19 @@

        @Override
        boolean sameValue(DNSRecord other) {
-           if (!(other instanceof Address)) {
+           try {
+               if (!(other instanceof Address)) {
+                   return false;
+               }
+               Address address = (Address) other;
+               if ((this.getAddress() == null) && (address.getAddress() != null)) {
+                   return false;
+               }
+               return this.getAddress().equals(address.getAddress());
+           } catch (Exception e) {
+               e.printStackTrace();
                return false;
            }
-           Address address = (Address) other;
-           if ((this.getAddress() == null) && (address.getAddress() != null)) {
-               return false;
-           }
-           return this.getAddress().equals(address.getAddress());
        }

        @Override
-----------------------------------------------------------------------

I don't know much about Github, I hope this is an appropriate way to report a bug. Apropos: http://xkcd.com/1597/

PTR or SRV to check for Service Remove Detection

Hi there,

While testing jmDNS to use for our Android app, I noticed Service Removal took longer than an hour.

Upon further investigation, found that Service removal only checks for PTR records, which usually have lot longer TTL..

Following code points to earlier version using both PTR and SRV to detect service removal.

https://github.com/jmdns/jmdns/blob/master/src/main/java/javax/jmdns/impl/JmDNSImpl.java#L1257

Any idea - why this change was reversed?

Thanks,

rare NPE in DNSRecordImp$Address.sameValue()

I got rare crash dumps with this exception:

java.lang.NullPointerException
at javax.jmdns.impl.DNSRecord$Address.sameValue(SourceFile:302)
at javax.jmdns.impl.JmDNSImpl.handleRecord(SourceFile:1359)
at javax.jmdns.impl.JmDNSImpl.handleResponse(SourceFile:1417)
at javax.jmdns.impl.SocketListener.run(SourceFile:61)

The failure happens at the last line of DNSRecordImp$Address.sameValue(), where in rare case (bogus devices ?) we can get there with either this.getAddress() or address being null:

return this.getAddress().equals(address.getAddress());

serviceRemoved not called

After some testing, it seems that JmDNS is never calling serviceRemoved when a service is removed from the network. I am checking side-by-side with avahi-discover and avahi immediately detects this, but JmDNS does not notice (or at least does not call the application listeners)

JmmDNS.Factory.getInstance() races with JmmDNS.Factory.close()

There's a race condition that can cause a JmmDNS object to be returned from the factory class as it's being closed (waiting inside jmmDNS.close()). This is leading to crashes in my application in rare cases.

Consider the following:
Thread 1 - Calls JmmDNS.Factory.close()
Thread 1 - JmmDNS.Factory.close() invokes JmmDNS.close() which shuts down some thread pools then waits on the underyling jmDNS objects to be closed.
Thread 2 - Calls JmmDNS.Factory.getInstance()
Thread 2 - In getInstance(), _instance != null so we don't wait on the factory lock (which would solve this issue). Instead we just return _instance (which is the instance being closed at the moment!) The _instance = null line in JmmDNS.Factory.close() has not been reached yet because the close isn't finished.
Thread 2 - Calls something like jmmDNS.requestServiceInfo() which throws a RejectedExecutionException because _jmDNSExecutor.shutdown() was already called.

The stack trace of the crash looks like this:
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@421c3660 rejected from java.util.concurrent.ThreadPoolExecutor@421aa328[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 132] at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:81) at javax.jmdns.impl.JmmDNSImpl.requestServiceInfo(JmmDNSImpl.java:338) at javax.jmdns.impl.JmmDNSImpl.requestServiceInfo(JmmDNSImpl.java:327)

I thought of a few potential fixes. The easiest one is just to remove the outer (_instance == null) check in JmmDNS.Factory.getInstance(). This causes thread 2 to block on the Factory's monitor while the close finishes.

Another possible fix would be to set _instance = null before calling jmmDNS.close(). This has the benefit of JmmDNS.Factory.getInstance() not being blocked by JmmDNS.Factory.close() as it would be if the monitor was held while waiting for the close to complete.

JmDNS 3.5.0 still says it is 3.4.2

Hi,

thanks a lot for the release - that is really great news for us!
Unfortunately I found a bug in it: The field VERSION in the Class JmDNS still contains 3.4.2 as the current version.
Link to code

Best regards,
Carsten

JmDNS sending malformed packets in simple hello world...

I'm trying to build a simple hello world with JmDNS and I'm getting some malformed packets that are above my current skill level. My code is all the way simple:

`package com.github.dunmatt.dnssd

import javax.jmdns.{ JmDNS, ServiceInfo }

object Server extends App {
val serviceType = "_oborobot._tcp.local."
JmDNS.create.registerService(ServiceInfo.create(serviceType, "foo", 1235, "SOMETHING"))
}
`

But when I parse the packets in wireshark it tell s me that the PTR query responses are malformed, here's the offending packet:

`0000 01 00 5e 00 00 fb 68 05 ca 40 65 5c 08 00 45 00 ..^...h..@e..E.

0010 00 84 7d 65 40 00 ff 11 66 c7 ac 10 0a 30 e0 00 ..}[email protected]..
0020 00 fb 14 e9 14 e9 00 70 97 bd 00 00 84 00 00 00 .......p........
0030 00 03 00 00 00 00 09 5f 6f 62 6f 72 6f 62 6f 74 ......._oborobot
0040 04 5f 74 63 70 05 6c 6f 63 61 6c 00 00 0c 00 01 ._tcp.local.....
0050 00 00 0e 10 00 06 03 66 6f 6f c0 0c c0 2c 00 21 .......foo...,.!
0060 80 01 00 00 0e 10 00 15 00 00 00 00 04 d3 0c 31 ...............1
0070 37 32 2d 31 36 2d 31 30 2d 34 38 c0 1b c0 2c 00 72-16-10-48...,.
0080 10 80 01 00 00 0e 10 00 09 53 4f 4d 45 54 48 49 .........SOMETHI
0090 4e 47 NG
`

It's not just wireshark that has an issue either, when I use Bonjour Browser on my phone to inspect the details of the _oborobot._tcp.local. service it crashes the app. JmDNS is putting something bad on the wire...

Problems when using default constructor

I am testing JmDNS on Linux (Ubuntu) with some test code that does work on Windows.

When using the default constructor to create a JmDNS insance (JmDNS.create), I cannot see any services. However when using JmDNS.create(InetAddress.getLocalHost()), all seems to work fine.

Similar problems are described here:

Is this a bug? Or is it expected behaviour? If the latter, why does explicitly passing the local host address make a difference?

Excessive threads waiting.

This is on 3.4.2.

We see many threads waiting. Eventually the VM crashes. A sampling is included below. Not sure what conditions could result in this, but it's an awful lot of threads for normal operation.

Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:322)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:269)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:176)
    javax.jmdns.impl.HostInfo.getDNS4AddressRecord(HostInfo.java:220)
    javax.jmdns.impl.HostInfo.getDNSAddressRecord(HostInfo.java:209)
    javax.jmdns.impl.HostInfo.conflictWithRecord(HostInfo.java:162)
    javax.jmdns.impl.DNSRecord$Address.handleResponse(DNSRecord.java:368)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1420)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
    java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
    java.lang.StringBuilder.append(StringBuilder.java:216)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.String.<init>(String.java:435)
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:111)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:730)
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:763)
    javax.jmdns.impl.DNSStatefulObject$DNSStatefulObjectSemaphore.<init>(DNSStatefulObject.java:47)
    javax.jmdns.impl.DNSStatefulObject$DefaultImplementation.<init>(DNSStatefulObject.java:126)
    javax.jmdns.impl.ServiceInfoImpl$ServiceInfoState.<init>(ServiceInfoImpl.java:84)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:209)
    javax.jmdns.impl.DNSRecord$Service.getServiceInfo(DNSRecord.java:813)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:88)
    java.lang.StringBuilder.<init>(StringBuilder.java:95)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:136)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[pool-3-thread-1,5,main][state=RUNNABLE]
    android.os.BinderProxy.transact(Native Method)
    android.content.ContentProviderProxy.query(ContentProviderNative.java:364)
    android.content.ContentResolver.query(ContentResolver.java:372)
    android.content.ContentResolver.query(ContentResolver.java:315)
    com.clover.seiko.Utils.getMerchantProperty(Utils.java:252)
    com.clover.seiko.Utils.getLocalMerchantProperty(Utils.java:231)
    com.clover.seiko.remote.NdService$RegisterTask.doInBackground(NdService.java:61)
    com.clover.seiko.remote.NdService$RegisterTask.doInBackground(NdService.java:58)
    android.os.AsyncTask$2.call(AsyncTask.java:287)
    java.util.concurrent.FutureTask.run(FutureTask.java:234)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1451)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:61)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[Binder_8,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:727)
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:763)
    javax.jmdns.impl.DNSStatefulObject$DNSStatefulObjectSemaphore.<init>(DNSStatefulObject.java:47)
    javax.jmdns.impl.DNSStatefulObject$DefaultImplementation.<init>(DNSStatefulObject.java:126)
    javax.jmdns.impl.ServiceInfoImpl$ServiceInfoState.<init>(ServiceInfoImpl.java:84)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:209)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:184)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceInfo(DNSRecord.java:508)
    javax.jmdns.impl.JmDNSImpl.getServiceInfoFromCache(JmDNSImpl.java:771)
    javax.jmdns.impl.JmDNSImpl.updateRecord(JmDNSImpl.java:1264)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1400)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Collections.unmodifiableMap(Collections.java:2314)
    javax.jmdns.impl.DNSEntry.getQualifiedNameMap(DNSEntry.java:167)
    javax.jmdns.impl.DNSEntry.getSubtype(DNSEntry.java:116)
    javax.jmdns.impl.DNSEntry.sameSubtype(DNSEntry.java:87)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1359)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    dalvik.system.VMStack.getThreadStackTrace(Native Method)
    java.lang.Thread.getStackTrace(Thread.java:591)
    java.lang.Thread.getAllStackTraces(Thread.java:528)
    com.clover.common2.crash.collector.ThreadCollector.collect(ThreadCollector.java:16)
    com.clover.common2.crash.Reporter.collect(Reporter.java:156)
    com.clover.common2.crash.Reporter.report(Reporter.java:166)
    com.clover.common2.crash.Reporter$2.uncaughtException(Reporter.java:82)
    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Collections.unmodifiableMap(Collections.java:2314)
    javax.jmdns.impl.DNSEntry.getQualifiedNameMap(DNSEntry.java:167)
    javax.jmdns.impl.DNSEntry.getSubtype(DNSEntry.java:116)
    javax.jmdns.impl.DNSEntry.sameSubtype(DNSEntry.java:87)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1359)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.JmDNSImpl.registerServiceType(JmDNSImpl.java:1101)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1392)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:321)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Signal Catcher,5,system][state=WAITING]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_B,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[WebSocketWorker-80336,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2019)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
    org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:653)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:120)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    javax.jmdns.impl.ServiceInfoImpl.getType(ServiceInfoImpl.java:396)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1230)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:55)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:260)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.LinkedHashSet.<init>(LinkedHashSet.java:44)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:211)
    javax.jmdns.impl.DNSRecord$Text.getServiceInfo(DNSRecord.java:612)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:298)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[WebSocketWorker-80337,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2019)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
    org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:653)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Thread.unpark(Thread.java:1188)
    sun.misc.Unsafe.unpark(Unsafe.java:337)
    java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:125)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:638)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
    java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:432)
    javax.jmdns.impl.JmDNSImpl.ioUnlock(JmDNSImpl.java:2197)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1465)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:111)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.net.InetAddress.getByAddress(InetAddress.java:776)
    libcore.io.Posix.recvfromBytes(Native Method)
    libcore.io.Posix.recvfrom(Posix.java:136)
    libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
    libcore.io.IoBridge.recvfrom(IoBridge.java:513)
    java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:161)
    java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:169)
    java.net.DatagramSocket.receive(DatagramSocket.java:253)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:41)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[WebSocketWorker-80338,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2019)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
    org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:653)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.Timer$TimerImpl.run(Timer.java:203)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.HashSet.<init>(HashSet.java:40)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:111)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.String.substring(String.java:1462)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:302)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Pointer.<init>(DNSRecord.java:432)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:329)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSLabel.values(DNSLabel.java:11)
    javax.jmdns.impl.constants.DNSLabel.labelForByte(DNSLabel.java:68)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:128)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=BLOCKED]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:136)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:321)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceInfo(DNSRecord.java:506)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceEvent(DNSRecord.java:517)
    javax.jmdns.impl.JmDNSImpl.updateRecord(JmDNSImpl.java:1261)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1400)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    javax.jmdns.impl.tasks.state.DNSStateTask.run(DNSStateTask.java:123)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[main,5,main][state=RUNNABLE]
    android.os.MessageQueue.nativePollOnce(Native Method)
    android.os.MessageQueue.next(MessageQueue.java:125)
    android.os.Looper.loop(Looper.java:124)
    android.app.ActivityThread.main(ActivityThread.java:5041)
    java.lang.reflect.Method.invokeNative(Native Method)
    java.lang.reflect.Method.invoke(Method.java:511)
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    dalvik.system.NativeStart.main(Native Method)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:560)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Collections.synchronizedList(Collections.java:2197)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:63)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[FinalizerWatchdogDaemon,5,system][state=TIMED_WAITING]
    java.lang.VMThread.sleep(Native Method)
    java.lang.Thread.sleep(Thread.java:1031)
    java.lang.Thread.sleep(Thread.java:1013)
    java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:248)
    java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:258)
    java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:212)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:329)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:184)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:477)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:319)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[WebsocketSelector80339,5,main][state=RUNNABLE]
    libcore.io.Posix.poll(Native Method)
    libcore.io.BlockGuardOs.poll(BlockGuardOs.java:119)
    java.nio.SelectorImpl.selectInternal(SelectorImpl.java:179)
    java.nio.SelectorImpl.select(SelectorImpl.java:148)
    org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:295)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[GC,5,system][state=WAITING]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:322)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:318)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.ArrayList.iterator(ArrayList.java:548)
    javax.jmdns.impl.DNSCache.getDNSEntry(DNSCache.java:136)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1335)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.ArrayList.toArray(ArrayList.java:492)
    java.util.ArrayList.addAll(ArrayList.java:184)
    javax.jmdns.impl.DNSCache.allValues(DNSCache.java:96)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1786)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:62)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    libcore.io.Posix.sendtoBytes(Native Method)
    libcore.io.Posix.sendto(Posix.java:151)
    libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
    libcore.io.IoBridge.sendto(IoBridge.java:473)
    java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
    java.net.DatagramSocket.send(DatagramSocket.java:284)
    javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1552)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:161)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_5,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.String.substring(String.java:1436)
    javax.jmdns.impl.ServiceInfoImpl.removeSeparators(ServiceInfoImpl.java:380)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:321)
    javax.jmdns.impl.JmDNSImpl.registerServiceType(JmDNSImpl.java:1095)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1392)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.StringBuilder.<init>(StringBuilder.java:55)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSRecordClass.values(DNSRecordClass.java:14)
    javax.jmdns.impl.constants.DNSRecordClass.classForIndex(DNSRecordClass.java:126)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:308)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[WebSocketWorker-80335,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2019)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
    org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:653)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:120)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.util.LinkedHashSet.<init>(LinkedHashSet.java:44)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:211)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:184)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceInfo(DNSRecord.java:508)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.keySet(HashMap.java:682)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:160)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:319)
    javax.jmdns.impl.JmDNSImpl.registerServiceType(JmDNSImpl.java:1095)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1392)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.ArrayList.iterator(ArrayList.java:548)
    javax.jmdns.impl.DNSCache.getDNSEntry(DNSCache.java:136)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1335)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[Binder_9,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:82)
    java.lang.StringBuilder.<init>(StringBuilder.java:67)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:77)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:55)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.DNSQuestion$AllRecords.iAmTheOnlyOne(DNSQuestion.java:213)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:88)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Collections.synchronizedList(Collections.java:2197)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:62)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[FinalizerDaemon,5,system][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
    java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
    java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.LinkedList.<init>(LinkedList.java:245)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:60)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:268)
    javax.jmdns.impl.DNSIncoming.clone(DNSIncoming.java:280)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1457)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
    java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
    java.lang.StringBuilder.append(StringBuilder.java:216)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:145)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap$HashMapEntry.<init>(HashMap.java:734)
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:161)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:82)
    java.lang.StringBuilder.<init>(StringBuilder.java:67)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:77)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:136)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:82)
    java.lang.StringBuilder.<init>(StringBuilder.java:67)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:77)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:88)
    java.lang.StringBuilder.<init>(StringBuilder.java:95)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:136)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:120)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.LinkedList.<init>(LinkedList.java:245)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:60)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[Binder_6,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    dalvik.system.VMStack.getThreadStackTrace(Native Method)
    java.lang.Thread.getStackTrace(Thread.java:591)
    java.lang.Thread.getAllStackTraces(Thread.java:528)
    com.clover.common2.crash.collector.ThreadCollector.collect(ThreadCollector.java:16)
    com.clover.common2.crash.Reporter.collect(Reporter.java:156)
    com.clover.common2.crash.Reporter.report(Reporter.java:166)
    com.clover.common2.crash.Reporter$2.uncaughtException(Reporter.java:82)
    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:61)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
    java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
    java.lang.StringBuilder.append(StringBuilder.java:216)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSLabel.values(DNSLabel.java:11)
    javax.jmdns.impl.constants.DNSLabel.labelForByte(DNSLabel.java:68)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:128)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_2,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_1,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.ServiceInfoImpl.getType(ServiceInfoImpl.java:396)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1230)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.ServiceInfoImpl.getType(ServiceInfoImpl.java:396)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1230)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.ArrayList.iterator(ArrayList.java:548)
    javax.jmdns.impl.DNSCache.getDNSEntry(DNSCache.java:136)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1335)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.values(HashMap.java:708)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:146)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.io.ByteArrayInputStream.read(ByteArrayInputStream.java:170)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readBytes(DNSIncoming.java:72)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:61)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[Binder_7,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.LinkedList.<init>(LinkedList.java:245)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:61)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:298)
    javax.jmdns.impl.JmDNSImpl.registerServiceType(JmDNSImpl.java:1095)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1392)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:320)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Pointer.<init>(DNSRecord.java:432)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:329)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[ReferenceQueueDaemon,5,system][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:364)
    java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:130)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:318)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceInfo(DNSRecord.java:506)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:298)
    javax.jmdns.impl.JmDNSImpl.registerServiceType(JmDNSImpl.java:1095)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1392)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Pointer.<init>(DNSRecord.java:432)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:329)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSLabel.values(DNSLabel.java:11)
    javax.jmdns.impl.constants.DNSLabel.labelForByte(DNSLabel.java:68)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:128)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:163)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.lang.String.regionMatches(String.java:1239)
    java.lang.String.startsWith(String.java:1417)
    java.lang.String.startsWith(String.java:1400)
    javax.jmdns.impl.ServiceInfoImpl.removeSeparators(ServiceInfoImpl.java:376)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:275)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Thread.unpark(Thread.java:1188)
    sun.misc.Unsafe.unpark(Unsafe.java:337)
    java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:125)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:638)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
    java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:432)
    javax.jmdns.impl.JmDNSImpl.ioUnlock(JmDNSImpl.java:2197)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1465)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:120)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=BLOCKED]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:63)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Thread.unpark(Thread.java:1188)
    sun.misc.Unsafe.unpark(Unsafe.java:337)
    java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:125)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:638)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
    java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:432)
    javax.jmdns.impl.JmDNSImpl.ioUnlock(JmDNSImpl.java:2197)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1465)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readBytes(DNSIncoming.java:71)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.Timer$TimerImpl.run(Timer.java:203)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[pool-2-thread-1,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2019)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
    java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1013)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1073)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    java.lang.Thread.run(Thread.java:856)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Character.isHighSurrogate(Character.java:1689)
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:58)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)
    javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)
    javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:298)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:75)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:51)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:727)
    java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:763)
    javax.jmdns.impl.DNSStatefulObject$DNSStatefulObjectSemaphore.<init>(DNSStatefulObject.java:47)
    javax.jmdns.impl.DNSStatefulObject$DefaultImplementation.<init>(DNSStatefulObject.java:126)
    javax.jmdns.impl.ServiceInfoImpl$ServiceInfoState.<init>(ServiceInfoImpl.java:84)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:209)
    javax.jmdns.impl.DNSRecord$Service.getServiceInfo(DNSRecord.java:813)
    javax.jmdns.impl.JmDNSImpl.getServiceInfoFromCache(JmDNSImpl.java:780)
    javax.jmdns.impl.JmDNSImpl.updateRecord(JmDNSImpl.java:1264)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1400)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Pointer.<init>(DNSRecord.java:432)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:329)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:67)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:51)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readUTF(DNSIncoming.java:111)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[Binder_3,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.ServiceInfoImpl.getType(ServiceInfoImpl.java:396)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1230)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.tasks.DNSTask.<init>(DNSTask.java:33)
    javax.jmdns.impl.tasks.Responder.<init>(Responder.java:45)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:322)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.ArrayList.toArray(ArrayList.java:492)
    java.util.ArrayList.addAll(ArrayList.java:184)
    javax.jmdns.impl.DNSCache.allValues(DNSCache.java:96)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1786)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_4,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    javax.jmdns.impl.tasks.Responder.run(Responder.java:111)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:120)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:62)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.ArrayList.iterator(ArrayList.java:548)
    java.util.AbstractCollection.addAll(AbstractCollection.java:74)
    javax.jmdns.impl.DNSQuestion$AllRecords.addAnswers(DNSQuestion.java:198)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:126)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.net.DatagramPacket.getPort(DatagramPacket.java:164)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Collections.synchronizedList(Collections.java:2197)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:60)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:131)
    javax.jmdns.impl.DNSIncoming.readQuestion(DNSIncoming.java:290)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:220)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=RUNNABLE]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSLabel.values(DNSLabel.java:11)
    javax.jmdns.impl.constants.DNSLabel.labelForByte(DNSLabel.java:68)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:128)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.ServiceInfoImpl.getType(ServiceInfoImpl.java:396)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceEvent(DNSRecord.java:519)
    javax.jmdns.impl.JmDNSImpl.updateRecord(JmDNSImpl.java:1261)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1400)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.LinkedList.addLastImpl(LinkedList.java:315)
    java.util.LinkedList.add(LinkedList.java:310)
    java.util.Collections$SynchronizedCollection.add(Collections.java:380)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:230)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:298)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    javax.jmdns.impl.constants.DNSLabel.values(DNSLabel.java:11)
    javax.jmdns.impl.constants.DNSLabel.labelForByte(DNSLabel.java:68)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:128)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.CaseMapper.toLowerCase(CaseMapper.java:75)
    java.lang.String.toLowerCase(String.java:1485)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:260)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Text.<init>(DNSRecord.java:543)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:335)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:298)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:649)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:350)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    java.lang.StringBuilder.<init>(StringBuilder.java:54)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:274)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:180)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:319)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Compiler,5,system][state=WAITING]
    dalvik.system.NativeStart.run(Native Method)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.values(HashMap.java:708)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:146)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:327)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.newValueIterator(HashMap.java:894)
    java.util.HashMap$Values.iterator(HashMap.java:922)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:146)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Thread.parkFor(Thread.java:1231)
    sun.misc.Unsafe.park(Unsafe.java:323)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:159)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:843)
    java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1173)
    java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:259)
    javax.jmdns.impl.JmDNSImpl.ioLock(JmDNSImpl.java:2193)
    javax.jmdns.impl.JmDNSImpl.respondToQuery(JmDNSImpl.java:1479)
    javax.jmdns.impl.tasks.Responder.run(Responder.java:107)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:163)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:345)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:237)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.AbstractList.<init>(AbstractList.java:377)
    java.util.AbstractSequentialList.<init>(AbstractSequentialList.java:32)
    java.util.LinkedList.<init>(LinkedList.java:244)
    javax.jmdns.impl.DNSMessage.<init>(DNSMessage.java:61)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:188)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.HashMap.makeTable(HashMap.java:555)
    java.util.HashMap.<init>(HashMap.java:158)
    javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:318)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:269)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:176)
    javax.jmdns.impl.HostInfo.getDNS4AddressRecord(HostInfo.java:220)
    javax.jmdns.impl.HostInfo.getDNSAddressRecord(HostInfo.java:209)
    javax.jmdns.impl.HostInfo.conflictWithRecord(HostInfo.java:162)
    javax.jmdns.impl.DNSRecord$Address.handleResponse(DNSRecord.java:368)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1420)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[Binder_A,5,main][state=RUNNABLE]
    dalvik.system.NativeStart.run(Native Method)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.addNewEntry(HashMap.java:476)
    java.util.HashMap.put(HashMap.java:408)
    javax.jmdns.impl.ServiceInfoImpl.checkQualifiedNameMap(ServiceInfoImpl.java:337)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:196)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:184)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceInfo(DNSRecord.java:508)
    javax.jmdns.impl.DNSRecord$Pointer.getServiceEvent(DNSRecord.java:517)
    javax.jmdns.impl.JmDNSImpl.updateRecord(JmDNSImpl.java:1261)
    javax.jmdns.impl.JmDNSImpl.handleRecord(JmDNSImpl.java:1400)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1417)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.util.Timer$TimerImpl.run(Timer.java:241)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:269)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:176)
    javax.jmdns.impl.HostInfo.getDNS4AddressRecord(HostInfo.java:220)
    javax.jmdns.impl.HostInfo.getDNSAddressRecord(HostInfo.java:209)
    javax.jmdns.impl.HostInfo.conflictWithRecord(HostInfo.java:162)
    javax.jmdns.impl.DNSRecord$Address.handleResponse(DNSRecord.java:368)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1420)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    javax.jmdns.impl.DNSStatefulObject$DefaultImplementation.<init>(DNSStatefulObject.java:125)
    javax.jmdns.impl.ServiceInfoImpl$ServiceInfoState.<init>(ServiceInfoImpl.java:84)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:209)
    javax.jmdns.impl.DNSRecord$Service.getServiceInfo(DNSRecord.java:813)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.Object.internalClone(Native Method)
    java.lang.Object.clone(Object.java:158)
    java.net.InetAddress.getByAddress(InetAddress.java:776)
    libcore.io.Posix.recvfromBytes(Native Method)
    libcore.io.Posix.recvfrom(Posix.java:136)
    libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
    libcore.io.IoBridge.recvfrom(IoBridge.java:513)
    java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:161)
    java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:169)
    java.net.DatagramSocket.receive(DatagramSocket.java:253)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:41)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=RUNNABLE]
    java.util.Timer.scheduleImpl(Timer.java:559)
    java.util.Timer.schedule(Timer.java:459)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
    javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
    javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
    javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
    javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:59)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.String._getChars(String.java:904)
    java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
    java.lang.StringBuilder.append(StringBuilder.java:216)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:53)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:269)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:176)
    javax.jmdns.impl.HostInfo.getDNS4AddressRecord(HostInfo.java:220)
    javax.jmdns.impl.HostInfo.getDNSAddressRecord(HostInfo.java:209)
    javax.jmdns.impl.HostInfo.conflictWithRecord(HostInfo.java:162)
    javax.jmdns.impl.DNSRecord$Address.handleResponse(DNSRecord.java:368)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1420)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.util.HashMap.newKeyIterator(HashMap.java:893)
    java.util.HashMap$KeySet.iterator(HashMap.java:899)
    javax.jmdns.impl.DNSIncoming$MessageInputStream.readName(DNSIncoming.java:160)
    javax.jmdns.impl.DNSIncoming.readAnswer(DNSIncoming.java:302)
    javax.jmdns.impl.DNSIncoming.<init>(DNSIncoming.java:227)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:50)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=TIMED_WAITING]
    javax.jmdns.impl.DNSStatefulObject$DNSStatefulObjectSemaphore.<init>(DNSStatefulObject.java:47)
    javax.jmdns.impl.DNSStatefulObject$DefaultImplementation.<init>(DNSStatefulObject.java:126)
    javax.jmdns.impl.ServiceInfoImpl$ServiceInfoState.<init>(ServiceInfoImpl.java:84)
    javax.jmdns.impl.ServiceInfoImpl.<init>(ServiceInfoImpl.java:209)
    javax.jmdns.impl.DNSRecord$Text.getServiceInfo(DNSRecord.java:612)
    javax.jmdns.impl.DNSRecord.getServiceInfo(DNSRecord.java:981)
    javax.jmdns.impl.JmDNSImpl.renewServiceCollector(JmDNSImpl.java:1229)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1794)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).State.Timer,5,main][state=TIMED_WAITING]
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:401)
    java.util.Timer$TimerImpl.run(Timer.java:238)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    java.util.Timer$TimerImpl.run(Timer.java:226)
Thread[JmDNS(android-8909f8775b49da71-1dc-com.local.).Timer,5,main][state=WAITING]
    javax.jmdns.impl.DNSCache.allValues(DNSCache.java:93)
    javax.jmdns.impl.JmDNSImpl.cleanCache(JmDNSImpl.java:1786)
    javax.jmdns.impl.tasks.RecordReaper.run(RecordReaper.java:58)
    java.util.Timer$TimerImpl.run(Timer.java:284)
Thread[SocketListener(android-8909f8775b49da71-1dc-com.local.),5,main][state=WAITING]
    java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:645)
    java.lang.StringBuilder.toString(StringBuilder.java:663)
    javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:52)
    javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)
    javax.jmdns.impl.DNSRecord$Address.<init>(DNSRecord.java:269)
    javax.jmdns.impl.DNSRecord$IPv4Address.<init>(DNSRecord.java:176)
    javax.jmdns.impl.HostInfo.getDNS4AddressRecord(HostInfo.java:220)
    javax.jmdns.impl.HostInfo.getDNSAddressRecord(HostInfo.java:209)
    javax.jmdns.impl.HostInfo.conflictWithRecord(HostInfo.java:162)
    javax.jmdns.impl.DNSRecord$Address.handleResponse(DNSRecord.java:368)
    javax.jmdns.impl.JmDNSImpl.handleResponse(JmDNSImpl.java:1420)
    javax.jmdns.impl.SocketListener.run(SocketListener.java:61)

List SubTypes

Hi!

I am experiencing an issue where I can not list sub types like: "something"._sub."type"
list() will always return an empty Array.
However when I do listBySubtype on "type" I get the complete map sorted by the different subtypes.

Can anyone reproduce this?

Host Name Cannot Be User-Defined

It seems that there is a bug in the javax.jmdns.impl.HostInfo class and its newHostInfo(InetAddress address, JmDNSImpl dns, String jmdnsName) method. In my project it is mandatory to export a gateway as mDNS device with host name using the following pattern:

Miele-<MAC_ADDR>.local.

So we are using the following code for the creation of the JmDNS instance for exporting the Gateway:

jmDNS = JmDNS.create(InetAddress.getLocalHost(), hostName);

where the hostName is created according the pattern described above. Using the library the Gateway was always exported with the Host name of the box but not the one which is passed as parameter. I found something which looks like a bug in the newHostInfo method. Here is the original source:

public static HostInfo newHostInfo(InetAddress address, JmDNSImpl dns, String jmdnsName) {
    HostInfo localhost = null;
    String aName = (jmdnsName != null ? jmdnsName : "");
    InetAddress addr = address;
    try {
        if (addr == null) {
            String ip = System.getProperty("net.mdns.interface");
            if (ip != null) {
                addr = InetAddress.getByName(ip);
            } else {
                addr = InetAddress.getLocalHost();
                if (addr.isLoopbackAddress()) {
                    // Find local address that isn't a loopback address
                    InetAddress[] addresses = NetworkTopologyDiscovery.Factory.getInstance().getInetAddresses();
                    if (addresses.length > 0) {
                        addr = addresses[0];
                    }
                }
            }
            if (addr.isLoopbackAddress()) {
                logger.warn("Could not find any address beside the loopback.");
            }
        }
        if (aName.length() == 0) {
            aName = addr.getHostName();
        }
        if (aName.contains("in-addr.arpa") || (aName.equals(addr.getHostAddress()))) {
            aName = ((jmdnsName != null) && (jmdnsName.length() > 0) ? jmdnsName : addr.getHostAddress());
        }
    } catch (final IOException e) {
        logger.warn("Could not intialize the host network interface on " + address + "because of an error: " + e.getMessage(), e);
        // This is only used for running unit test on Debian / Ubuntu
        addr = loopbackAddress();
        aName = ((jmdnsName != null) && (jmdnsName.length() > 0) ? jmdnsName : "computer");
    }
    // A host name with "." is illegal. so strip off everything and append .local.
    // We also need to be carefull that the .local may already be there
    int index = aName.indexOf(".local");
    if (index > 0) {
        aName = aName.substring(0, index);
    }
    aName = aName.replaceAll("[:%\\.]", "-");
    aName += ".local.";
    localhost = new HostInfo(addr, aName, dns);
    return localhost;
}

and here is the fix which we've done:

public static HostInfo newHostInfo(InetAddress address, JmDNSImpl dns, String jmdnsName) {
    HostInfo localhost = null;
    String aName = (jmdnsName != null ? jmdnsName : "");
    InetAddress addr = address;
    try {
        if (addr == null) {
            String ip = System.getProperty("net.mdns.interface");
            if (ip != null) {
                addr = InetAddress.getByName(ip);
            } else {
                addr = InetAddress.getLocalHost();
                if (addr.isLoopbackAddress()) {
                    // Find local address that isn't a loopback address
                    InetAddress[] addresses = NetworkTopologyDiscovery.Factory.getInstance().getInetAddresses();
                    if (addresses.length > 0) {
                        addr = addresses[0];
                    }
                }
            }
            if (addr.isLoopbackAddress()) {
                logger.warn("Could not find any address beside the loopback.");
            }
        }
        if (aName.length() == 0) {
            aName = addr.getHostName();
        }
        if (aName.contains("in-addr.arpa") || (aName.equals(addr.getHostName()))) {
            aName = ((jmdnsName != null) && (jmdnsName.length() > 0) ? jmdnsName : addr.getHostAddress());
        }
    } catch (final IOException e) {
        logger.warn("Could not intialize the host network interface on " + address + "because of an error: " + e.getMessage(), e);
        // This is only used for running unit test on Debian / Ubuntu
        addr = loopbackAddress();
        aName = ((jmdnsName != null) && (jmdnsName.length() > 0) ? jmdnsName : "computer");
    }
    // A host name with "." is illegal. so strip off everything and append .local.
    // We also need to be carefull that the .local may already be there
    int index = aName.indexOf(".local");
    if (index > 0) {
        aName = aName.substring(0, index);
    }
    aName = aName.replaceAll("[:%\\.]", "-");
    aName += ".local.";
    localhost = new HostInfo(addr, aName, dns);
    return localhost;
}

Using this fix now my gateway is always exported using the pattern I want to use. I'd like to ask you to check whether this is really a bug or I'm not using the correct methods.

Agree on project governance

@spearway, @iheart2code, before we start with any code commits on this repo, we should agree on the project governance, so that processes are clear to everybody and how we deal with contributions.
From my experience, it makes sense to have a strict handling right from the start, so that there are no problems at a later stage. As far as I have seen, you had already had a pretty professional way of handling contributions at SourceForge, so this should be continued.
My suggestions is to set up something similar to https://github.com/openhab/openhab2/blob/master/CONTRIBUTING.md.
Furthermore, I suggest that all changes by committers (you!) are also done through pull requests (unless really minor changes) - so that the 4-eye principle is in place all the time.

Checking of instance name lengths

It doesn't seem like JmDNS does any instance name length checking. According to RFC 6763 the instance name should be limited to 63 octets after conversion to UTF-8.

Its not something that should be handled in client code as JmDNS can append numbers the instance name when there is a duplicate instance name on the network.

Example code from the README is outdated and incomplete

Service Registration example from the README:

import javax.jmdns.*;

JmDNS jmdns = new JmDNS();
jmdns.registerService(
    new ServiceInfo("_http._tcp.local.", "foo._http._tcp.local.", 1234, 0, 0, "path=index.html")
);
  1. JmDNS cannot be instantiated this way because it is abstract (probably wasn't abstract in an earlier version).
  2. There should be complete code (including class Example and main) or a comment denoting that something has been left out.

Problem 2 is rather cosmetic, but a copy-paste-able example would probably be nice.

The "abstract" problem applies to the Service Discovery example too, as well as the cosmetic problem.

Resolve performance issues

There is a ton of logging happening in release builds in certain classes. This is especially impactful in DNSIncoming as well as ListenerStatus. We may want to provide a way, at runtime, of either completely disabling logging or ignoring log method calls that don't reach a certain level.

Also, we should evaluate the levels that each log message is using. Not sure that https://github.com/openhab/jmdns/blob/master/src/main/java/javax/jmdns/impl/DNSIncoming.java#L293 needs to be severe, and is causing problems on a network with Chromecast devices.

JmDns 3.5.0 does not respond to (T_ANY, 255) requests on sub-types

Hey,
I have hit a issue while performing Multicast DNS test in_ Bonjour Conformance Test_ tool.

I have a service, which has been registered with a JmDNS on a subtype "universal" for type "_ipp._tcp.local.".

While performing Shared Reply Timing test, (As mentioned in Conformance Test Outline.txt doc) tool is quering on the subtype. (i.e. with name "_universal._sub._ipp._tcp.local.")

Debug logs captures the Incoming DNS request as follows.

questions:
[AllRecords@2125616378 type: TYPE_ANY index 255, class: CLASS_IN index 1, name: _UNIvErsAL._SUB._ipPs._TCp.lOcaL.]]
2016-03-11 18:46:59,325 DEBUG [Responder] Responder(servername)run() JmDNS responding to: [AllRecords@2125616378 type: TYPE_ANY index 255, class: CLASS_IN index 1, name: _UNIvErsAL._SUB._ipPs._TCp.lOcaL.]
2016-03-11 18:47:26,768 DEBUG [DNSIncoming] DNSIncoming() questions:1 answers:0 authorities:0 additionals:0
2016-03-11 18:47:26,768 DEBUG [JmDNSImpl] servername.handle query: dns[query,192.168.1.2:5353, length=50, id=0x0, questions=1
questions:
[AllRecords@1465344425 type: TYPE_ANY index 255, class: CLASS_IN index 1, name: _univeRSal._sUb._ipps._tCp.loCaL.]]
2016-03-11 18:47:26,823 DEBUG [Responder] Responder(servername)run() JmDNS responding to: [AllRecords@1465344425 type: TYPE_ANY index 255, class: CLASS_IN index 1, name: _univeRSal._sUb._ipps._tCp.loCaL.]
2016-03-11 18:47:33,274 DEBUG [DNSIncoming] DNSIncoming() questions:1 answers:0 authorities:0 additionals:0
2016-03-11 18:47:33,274 DEBUG [JmDNSImpl] servername.handle query: dns[query,192.168.1.2:5353, length=50, id=0x0, questions=1

When answering to the query, as "_universal._sub._ipp._tcp.local." is not a type, method DNSQuestion.AllRecords.addAnswers() never matches any ServiceInfo instance with PTR name resulting in call to method DNSQuestion.addAnswersForServiceInfo() with ServiceInfo instance being null.

And the query is not answered.

not working on Nexus 5x running Android 6.01

Just tried an app working very good on HTC One M7 running Android 5.01 and finding Apple TV without a glitch.
However the same app does not find Apple TV in Nexus 5x running Android 6.01.

multicastLock and JmDNS

JmDNS supports service discovery and service registration.My question is, which one requires multicastLock? An explanation would be appreciated.

JmmDNS binds loopback interface

The JmmDNS binds on the loopback interface and advertises it's address on the network. This causes clients to receive a 127.0.0.1 or 0::1 ip address and failing to receive host.

I am not sure if it is on purpose to bind the loopback interface, but I really think it's address should not be advertised on other networks (like 192.168...).

For my purpose I stopped binding loopback interfaces but I want some discussion before committing.

Kind regards,
dhufnagel

Doesn't find server after it's restarted

Hi,

if I restart the Avahi server on Linux, it wont call the "serviceAdded" method. I only get this message in the console: "Service Resolved called for a service already resolved"

So would it be possible to call the "serviceAdded" method everytime the server is restarted?

ServiceResolver should be scheduled as described in RFC (Continuous Multicast DNS Querying)?

I have some issues on some devices when starting service discovery
Currently JmDNS when a listener is added starts a ServiceResolver that sends 3 questions with an interval of 225 milliseconds.
On some devices sometimes the answers are missed (packet loss, OS issues etc) and services will not be discovered anymore unless they respond to someone else or announce themselves.
At RFC 6762 5.2 Continuous Multicast DNS Querying is described a technique that should avoid this issue to happen.
The query should be sent the first time with a random delay of 20-120ms, the second time with a delay of 1 sec and then consecutive queries should use a delay increased by a factor of two.
Is this something that should be implemented?

License of the project

@spearway, @iheart2code,
As far as I understand, the code is so far dual licensed: LGPL and Apache 2.0 license, is this right?
I would actually prefer to continue with a single one as this makes life easier. Just offering Apache-licensed code should be absolutely fine. What do you think?

Not finding service sometimes

Hi there!

Thanks for the great library. I'm writing an Android app that needs to discover a service on the local network and send some data upon an event. My issue is that the discovery is very unreliable and I can't seem to diagnose the problem just yet. To let it find the service I have to re-register the service by restarting the service app.

I'm monitoring the list of registered services with dns-sd and can see it there, but Android app can't. Not sure where to go from here. Please advise.

Hostname containing ':' and '%'

If you use JmmDNS or JmDNS without providing a hostname, then the hostname built by the class "HostInfo" can contain ':' and '%' when using IPv6 addresses. For example on my link-local IPv6 address:

fe80:0:0:0:4011:df1c:2c27:a0b9%eth3.local.

The '.' in IPv4 addresses are encapsulated in following line:
https://github.com/jmdns/jmdns/blob/master/src/main/java/javax/jmdns/impl/HostInfo.java#L107

I suggest to extend this line to also replace ':' and '%' as following:
aName = aName.replaceAll("[:%\\.]", "-");

JDK 8 compatibility

Compiling against the JDK 8 libraries fails due to the return type of of javax.jmdns.impl.DnsCache._EmptyCache.keySet(). The return type was changed from Set to ConcurrentHashMap.KeySetView<K,V>.

I considered a few fixes, but couldn't come up with a solution that wouldn't either a) break builds against earlier JDK versions or b) introduce a breaking API change.

How strongly do you feel about API compatibility for the impl.* classes?

java.lang.IllegalStateException: Timer was canceled

this is on 3.4.2.

java.lang.IllegalStateException: Timer was canceled
at java.util.Timer.scheduleImpl(Timer.java:561)
at java.util.Timer.schedule(Timer.java:459)
at javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl$StarterTimer.schedule(DNSTaskStarter.java:219)
at javax.jmdns.impl.tasks.Responder.start(Responder.java:101)
at javax.jmdns.impl.DNSTaskStarter$DNSTaskStarterImpl.startResponder(DNSTaskStarter.java:395)
at javax.jmdns.impl.JmDNSImpl.startResponder(JmDNSImpl.java:1671)
at javax.jmdns.impl.JmDNSImpl.handleQuery(JmDNSImpl.java:1461)
at javax.jmdns.impl.SocketListener.run(SocketListener.java:59)

i do not know the circumstances that reproduce this, but we see it in the wild quite often.

3.4.3 serviceResolved not called

I have just tried JmDNS 3.4.3 on a network with airplay and chromecast devices
I have noticed that serviceResolved is not called anymore
On the logcat i see those kind of warnings:

02-23 09:54:42.205 1764-1915/my.package W/j.j.i.DNSIncoming: Could not find record class. domain: local. type: TYPE_IGNORE index 0
                                                                              dns[response,192.168.1.38:5353, length=125, id=0x0, flags=0x8400:r:aa, answers=1
                                                                              answers:
                                                                                [Service@172513216 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: Chromecast5471._googlecast._tcp.local. ttl: '119/120' server: 'Chromecast5471:8009']]
                                                                                answer:        [Service@172513216 type: TYPE_SRV index 33, class: CLASS_IN index 1-unique, name: Chromecast5471._googlecast._tcp.local. ttl: '119/120' server: 'Chromecast5471:8009']
                                                                                 0: 0000840000000001 000000010e436872 6f6d656361737435 3437310b5f676f6f     ........ .....Chr omecast5 471._goo
                                                                                20: 676c656361737404 5f746370056c6f63 616c000021800100 000078001c000000     glecast. _tcp.loc al..!... ..x.....
                                                                                40: 001f490e4368726f 6d65636173743534 3731056c6f63616c 000e4368726f6d65     ..I.Chro mecast54 71.local ..Chrome
                                                                                60: 6361737435343731 056c6f63616c0000 0180010000007800 04c0a80126           cast5471 .local.. ......x. ....&
02-23 09:54:44.956 1764-1915/my.package W/j.j.i.c.DNSRecordType: Could not find record type for index: 49220

JmDNS should provide an API to invalidate the cache

I have a situation where I need to check for services currently available in the network. These services may come and go so I need to recheck, either periodically or when triggered by the user.

However I have found that after JmDNS has discovered a service, it will keep returning cached information regardless of whether the device is still present in the network. I have tried unregistering the listener and registering it again, but when I do this serviceAdded is immediately called with stale (cached) information.

Is there any way to force JmDNS to drop any cached information so that I can start a "fresh" search, other than calling JmDNS.close()? (this works, but it takes a few seconds to complete).

Bring distribution to MavenCentral

We need to agree on how to distribute. I, admittedly, don't know a whole lot about Maven, but it seems like our choices are some combination of the following.

  1. Gain access to update previous Maven entry
  2. Create new Maven entry for this project
  3. Provide links to each JAR release file

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.