Through a stupid user error, I managed to mess up my Ubuntu 16.04 LTS installation -- it boots to a black screen.
Fortunately, the filesystem is intact, and I can get to a console session without difficulty. I attempted to undo my damage (reversing the last set of changes in the log), and with a friend's heroic help, we managed to get to a graphical session using the xfce4 desktop (which I had installed as an experiment back in 14.04 days).
I am attempting to follow the steps in this answer to restore my system to proper working order (I use Unity), but when I get to "step 3", sudo debsums -cs, it stalls. Very quickly I get some missing fonts listed (I deleted some Noto fonts -- I know about that), and then the process goes quiet.
I let it run for 18 hours first time, and got no new results after the first couple minutes. I closed that down, re-ran debsums_init, and tried again ... with exactly the same outcome. Checking top on the process, it shows me this:
So, should I expect this debsums -cs to finish its work and exit to prompt? Or is it hanging? or has it told me everything it's going to tell me, and I should just kill it?
Update - solved following diagnostics and suggestions from @muru (see accepted answer, below):
This is the output of lsof -p PID:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
debsums 14678 root cwd DIR 8,2 4096 13369346 /home/user
debsums 14678 root rtd DIR 8,2 4096 2 /
debsums 14678 root txt REG 8,2 1907192 8475875 /usr/bin/perl
debsums 14678 root mem REG 8,2 27168 8651816 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/File/Glob/Glob.so
debsums 14678 root mem REG 8,2 10368 10493560 /usr/lib/x86_64-linux-gnu/perl5/5.22/auto/File/FnMatch/FnMatch.so
debsums 14678 root mem REG 8,2 14480 9859421 /usr/lib/x86_64-linux-gnu/perl5/5.22/auto/Locale/gettext/gettext.so
debsums 14678 root mem REG 8,2 35328 8654166 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Encode/Encode.so
debsums 14678 root mem REG 8,2 102064 8524369 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/POSIX/POSIX.so
debsums 14678 root mem REG 8,2 18704 8658188 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Digest/MD5/MD5.so
debsums 14678 root mem REG 8,2 18768 8654260 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/IO/IO.so
debsums 14678 root mem REG 8,2 18696 8524352 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Fcntl/Fcntl.so
debsums 14678 root mem REG 8,2 47696 8658199 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/List/Util/Util.so
debsums 14678 root mem REG 8,2 14608 8524357 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Cwd/Cwd.so
debsums 14678 root mem REG 8,2 2981280 8389721 /usr/lib/locale/locale-archive
debsums 14678 root mem REG 8,2 39224 7078564 /lib/x86_64-linux-gnu/libcrypt-2.23.so
debsums 14678 root mem REG 8,2 1864888 7078561 /lib/x86_64-linux-gnu/libc-2.23.so
debsums 14678 root mem REG 8,2 138696 7078570 /lib/x86_64-linux-gnu/libpthread-2.23.so
debsums 14678 root mem REG 8,2 1088952 7078569 /lib/x86_64-linux-gnu/libm-2.23.so
debsums 14678 root mem REG 8,2 14608 7078560 /lib/x86_64-linux-gnu/libdl-2.23.so
debsums 14678 root mem REG 8,2 162632 7078534 /lib/x86_64-linux-gnu/ld-2.23.so
debsums 14678 root mem REG 8,2 1719 9999141 /usr/share/locale-langpack/en_GB/LC_MESSAGES/dpkg-dev.mo
debsums 14678 root 0u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 1u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 2u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 3r REG 8,2 307 2915907 /var/lib/dpkg/info/libfm-extra4:amd64.md5sums
It is preceded by this warning:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
The output of watch lsof -p PID is static, and hasn't changed since it started:
Running watch with the | tail pipe gives:
That is, the same last 10 lines at the screenshot above. FWIW, the libfm-extra4:amd64.md5sums file (307 bytes) lists out this way:
-rw-r--r-- 1 root root 307 Jul 12 2016 /var/lib/dpkg/info/libfm-extra4:amd64.md5sums
The output of sudo strace -p PID gave the following five lines endlessly looping:
readlink("/usr/share/doc/libfm-extra4", "libfm4", 4095) = 6
lstat("/usr/share/doc/libfm4", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/share/doc/libfm4/changelog.Debian.gz", {st_mode=S_IFLNK|0777, st_size=35, ...}) = 0
readlink("/usr/share/doc/libfm4/changelog.Debian.gz", "../libfm-extra4/changelog.Debian"..., 4095) = 35
lstat("/usr/share/doc/libfm-extra4", {st_mode=S_IFLNK|0777, st_size=6, ...}) = 0
Investigating the /usr/share/doc/libfm-extra4 dir led to the discovery that the changelog.Debian.gz file was a symbolic link, and the target couldn't be found. Deleting that file allowed the debsums -cs process to continue.
If it helps: I damaged my system through putting a Debian source in my sources.list and running an update, instead of using the GDebi package manager. I've lost access to unity, though I'm now working on the same machine with an xcfe session started from console via xstart. I cannot start a Unity session this way.


