1. 10

  2. 2

    My favourite “ping” moment occurred when I was working on an embedded media device that supported DLNA. Our team wasn’t about to write a DLNA library so the company licensed one. We put it to use and it mostly worked, although there was lots of fiddling.

    Once we got the device going we noticed that, after a while, the device would just “get stuck”. Things that were running would work, but nothing new could be spawned. We managed to recreate the situation on a device that we had a shell on and lo and behold, the process table was full… of pings. Lots and lots of pings.

    It didn’t take long to figure out that it was the DLNA library. Turns out that to implement some form of network checking or keep alive (I don’t know since I didn’t work with DLNA all that much), the DLNA library would basically run system("ping -c 1") on a regular basis. And yes, I’m pretty sure it used system. Each thread created in the DLNA library would do this, so the longer the device ran and the more you did with it, the worse it got.

    Eventually we corrected it (I don’t remember the resolution since I wasn’t involved), but it was a pain since we had to get the source code.