Skip to content

Instantly share code, notes, and snippets.

@wolfeidau
Created December 18, 2012 20:11
Show Gist options
  • Select an option

  • Save wolfeidau/4331525 to your computer and use it in GitHub Desktop.

Select an option

Save wolfeidau/4331525 to your computer and use it in GitHub Desktop.
Very obvious issue retrieving mac addresses with my node-netif library clearly illustrated by strace.
strace node tools/leaks.js
execve("/usr/local/bin/node", ["node", "tools/leaks.js"], [/* 20 vars */]) = 0
brk(0) = 0x1dd2000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff198b68000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=19450, ...}) = 0
mmap(NULL, 19450, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff198b63000
close(3) = 0
...
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 1020
ioctl(1020, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 1021
ioctl(1021, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 1022
ioctl(1022, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 1023
ioctl(1023, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = -1 EMFILE (Too many open files)
ioctl(4294967295, SIOCGIFHWADDR, {ifr_name="eth0", ???}) = -1 EBADF (Bad file descriptor)
write(2, "\n", 1
) = 1
futex(0x7ff1900008c8, FUTEX_WAKE_PRIVATE, 1) = 1
write(2, "/home/markw/node-netif/tools/lea"..., 40/home/markw/node-netif/tools/leaks.js:6
) = 40
write(2, " netif.getIFMacAddress('eth0');"..., 33 netif.getIFMacAddress('eth0');
) = 33
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, " ", 1 ) = 1
write(2, "^", 1^) = 1
write(2, "\n", 1
) = 1
mmap(0x73f480ef000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x73f480ef000
munmap(0x73f480ef000, 69632) = 0
munmap(0x73f48200000, 978944) = 0
mmap(0x73f48100000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73f48100000
futex(0x7ff1900008c8, FUTEX_WAKE_PRIVATE, 1) = 1
write(2, "TypeError: error opening interfa"..., 407TypeError: error opening interface
at Object.<anonymous> (/home/markw/node-netif/tools/leaks.js:6:9)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
) = 407
exit_group(1) = ?
@wolfeidau
Copy link
Author

Now hovering at 7 file descriptors.

ocket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
close(7) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
close(7) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
close(7) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
close(7) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0
close(7) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
ioctl(7, SIOCGIFHWADDR^C, {ifr_name="eth0", ifr_hwaddr=00:0c:29:8d:46:a5}) = 0

Woops..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment