I found the leak. It was in my application code, not in the nanomsg library. On Sat, Jan 24, 2015 at 7:44 AM, George Lambert <marchon@xxxxxxxxx> wrote: > The software library should be cleaning them up on disconnect or abort. > > I suggest we add track down in the code if and where they are actually > released, and make sure that the code is being called properly. > > G. > > > On Fri, Jan 23, 2015 at 8:41 PM, Bent Cardan <bent@xxxxxxxxxxxxxxxxxxxx> > wrote: > >> sockets are files, everything is a file, whatever just use the rm command >> >> On Fri, Jan 23, 2015 at 7:24 PM, Jason E. Aten <j.e.aten@xxxxxxxxx> >> wrote: >> >>> On linux, looking in /proc/PID/fd, it looks the leaked fd are eventfd. >>> >>> from /proc >>> lr-x------ 1 vagrant vagrant 64 Jan 24 00:13 0 -> /dev/null >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 1 -> /dev/pts/5 >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 10 -> socket:[170235] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 11 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 12 -> socket:[173591] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 13 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 14 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 15 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 16 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 17 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 18 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 19 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 2 -> /dev/pts/5 >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 20 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 21 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 22 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 23 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 3 -> /dev/tty >>> lr-x------ 1 vagrant vagrant 64 Jan 24 00:13 4 -> /dev/urandom >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 5 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 6 -> anon_inode:[eventpoll] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 7 -> anon_inode:[eventfd] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 8 -> socket:[173551] >>> lrwx------ 1 vagrant vagrant 64 Jan 24 00:13 9 -> anon_inode:[eventpoll] >>> vagrant@precise64:/proc/15001/fd$ >>> >>> >>> On Fri, Jan 23, 2015 at 3:20 PM, Jason E. Aten <j.e.aten@xxxxxxxxx> >>> wrote: >>> >>>> Does anyone have tips or tricks for tracking down leaking file >>>> descriptors? According to lsof, they appear to be pipes (OSX) and >>>> "anonymous inodes" (Linux). Any suggestions? I'm at a loss. >>>> >>>> Details: I'm using push/pull nanomsg (updated yesterday; most recent >>>> from github) sockets between a client and a server. It looks like every >>>> client connection to the server results in the server leaking more file >>>> descriptors. On OSX, I see pipes left open. condensed "lsof -p 34334 -Fnt" >>>> output shows these are leaked (OSX): >>>> >>>> tPIPE:n->0x95df5be7a4700aff >>>> >>>> tPIPE:n->0x95df5be7a46fee1f >>>> >>>> tPIPE:n->0x95df5be79ddeb75f >>>> >>>> tPIPE:n->0x95df5be7a16570df >>>> >>>> tPIPE:n->0x95df5be7a165702f >>>> >>>> tPIPE:n->0x95df5be79ddeae6f >>>> >>>> tPIPE:n->0x95df5be7a47006df >>>> >>>> tPIPE:n->0x95df5be7ada5a0ff >>>> >>>> tPIPE:n->0x95df5be7a165912f >>>> >>>> tPIPE:n->0x95df5be7a46ff0df >>>> >>>> tPIPE:n->0x95df5be7ac4c2ecf >>>> >>>> tPIPE:n->0x95df5be7ac4c499f >>>> >>>> tPIPE:n->0x95df5be7a470041f >>>> >>>> tPIPE:n->0x95df5be7ac4c554f >>>> >>>> tPIPE:n->0x95df5be7a46ffbdf >>>> >>>> tPIPE:n->0x95df5be7a46ff39f >>>> >>>> tPIPE:n->0x95df5be7a46fe94f >>>> >>>> tPIPE:n->0x95df5be7a165a1af >>>> >>>> tPIPE:n->0x95df5be7a470057f >>>> >>>> tPIPE:n->0x95df5be7a46fe68f >>>> >>>> On Linux it is anonymous inodes that are leaking. Output from "lsof -p >>>> 2332 -Fnt": >>>> >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> t0000:nanon_inode >>>> >>>> >>>> >>> >>> >>> -- >>> >>> Best regards, >>> Jason >>> >>> -- >>> Jason E. Aten, Ph.D. >>> j.e.aten@xxxxxxxxx >>> 650-429-8602 >>> linkedin: https://www.linkedin.com/pub/jason-e-aten-ph-d/18/313/45a >>> >> >> >> >> -- >> >> Bent Cardan >> nothingsatisfies.com | bent@xxxxxxxxxxxxxxxxxxxx >> > > > > -- > P THINK BEFORE PRINTING: is it really necessary? > > This e-mail and its attachments are confidential and solely for the > intended addressee(s). Do not share or use them without approval. If > received in error, contact the sender > and delete them. > -- Best regards, Jason -- Jason E. Aten, Ph.D. j.e.aten@xxxxxxxxx 650-429-8602 linkedin: https://www.linkedin.com/pub/jason-e-aten-ph-d/18/313/45a