I managed to get my network configuration into something of a pickle by
accidentally removing my main network connection using nm-connection-editor.
Once I'd done that I was unable to re-create the connection because nm-
connection-editor would hang solid (requiring kill -9) each time I tried to add
a new Ethernet connection.
Strace revealed that it was stuck trying to stat a symlink in my home
directory. The symlink was to an NFS mount which wasn't working due to the lack
of network.
Behaviour like this may be excusable in many applications but it is rather
unfortunate in a tool that is used to fix the broken network configuration.
I was able to let nm-connection-editor run by deleting the symlink.
Partial strace output:
socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC, 0) = 16
fcntl(16, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(16, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(16, {sa_family=AF_FILE, path=@"/dbus-vfs-daemon/socket-QlNuWpOa"}, 35)
= 0
geteuid() = 1002
getegid() = 1001
geteuid() = 1002
getegid() = 1001
poll([{fd=16, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=16, revents=POLLOUT}])
sendmsg(16, {msg_name(0)=NULL, msg_iov(1)=[{"\0", 1}], msg_controllen=32,
{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS{pid=2145,
uid=1002, gid=1001}}, msg_flags=0}, MSG_NOSIGNAL) = 1
poll([{fd=16, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=16, revents=POLLOUT}])
sendto(16, "AUTH\r\n", 6, MSG_NOSIGNAL, NULL, 0) = 6
poll([{fd=16, events=POLLIN}], 1, 4294967295) = 1 ([{fd=16, revents=POLLIN}])
recvfrom(16, "REJECTED EXTERNAL DBUS_COOKIE_SH"..., 4096, 0, NULL, NULL) = 36
poll([{fd=16, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=16, revents=POLLOUT}])
sendto(16, "AUTH EXTERNAL 31303032\r\n", 24, MSG_NOSIGNAL, NULL, 0) = 24
poll([{fd=16, events=POLLIN}], 1, 4294967295) = 1 ([{fd=16, revents=POLLIN}])
recvfrom(16, "OK 58aca1728def42065ba779a253ac1"..., 4096, 0, NULL, NULL) = 37
poll([{fd=16, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=16, revents=POLLOUT}])
sendto(16, "NEGOTIATE_UNIX_FD\r\n", 19, MSG_NOSIGNAL, NULL, 0) = 19
poll([{fd=16, events=POLLIN}], 1, 4294967295) = 1 ([{fd=16, revents=POLLIN}])
recvfrom(16, "AGREE_UNIX_FD\r\n", 4096, 0, NULL, NULL) = 15
poll([{fd=16, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=16, revents=POLLOUT}])
sendto(16, "BEGIN\r\n", 7, MSG_NOSIGNAL, NULL, 0) = 7
write(8, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 1
eventfd2(0, O_NONBLOCK|O_CLOEXEC) = 17
write(17, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=17, events=POLLIN}], 1, 0) = 1 ([{fd=17, revents=POLLIN}])
write(17, "\1\0\0\0\0\0\0\0", 8) = 8
close(17) = 0
eventfd2(0, O_NONBLOCK|O_CLOEXEC) = 17
write(17, "\1\0\0\0\0\0\0\0", 8) = 8
write(8, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x1fc63d0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2431c90, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2431310, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=17, events=POLLIN}], 1, 4294967295) = 1 ([{fd=17, revents=POLLIN}])
poll([{fd=17, events=POLLIN}], 1, 4294967295) = 1 ([{fd=17, revents=POLLIN}])
read(17, "\1\0\0\0\0\0\0\0", 16) = 8
poll([{fd=17, events=POLLIN}], 1, 4294967295) = 1 ([{fd=17, revents=POLLIN}])
read(17, "\1\0\0\0\0\0\0\0", 16) = 8
write(17, "\1\0\0\0\0\0\0\0", 8) = 8
close(17) = 0
brk(0x24a0000) = 0x24a0000
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK,
-1, 0) = 0x7fdb5962f000
mprotect(0x7fdb5962f000, 4096, PROT_NONE) = 0
clone(child_stack=0x7fdb59e2ecf0,
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
parent_tidptr=0x7fdb59e2f9d0, tls=0x7fdb59e2f700, child_tidptr=0x7fdb59e2f9d0)
= 2158
futex(0x1fc62a0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f2e040, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f38e80, FUTEX_WAKE_PRIVATE, 1) = 0
open("/home/mac/.config/user-dirs.dirs", O_RDONLY) = 19
fstat(19, {st_mode=S_IFREG|0600, st_size=612, ...}) = 0
read(19, "# This file is written by xdg-us"..., 612) = 612
close(19) = 0
lstat("/home/mac/Documents", {st_mode=S_IFLNK|0777, st_size=30, ...}) = 0
stat("/home/mac/Documents",