0

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:

top output

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:

watch lsof

Running watch with the | tail pipe gives:

watch tail

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.

Dɑvïd
  • 1,936
  • 4
  • 24
  • 53

1 Answers1

1

If debsums exits, to you can expect the prompt to appear. But, I think it is doing IO-intensive operations, and those are time consuming.

In another terminal, run lsof -p PID, where the PID of debsums you can obtain from top. This should show the list of files opened by it. Run watch lsof -p PID so the list is updated and you can see whether it is progressing or stuck.

The top of the list of open files is mostly composed of the files used to run debsums itself (perl, and various perl modules). The part of interest is the last line here - the .md5sums file it's reading. The files it is checking would probably be further down the list, so maybe run watch 'lsof -p PID | tail'.

muru
  • 197,895
  • 55
  • 485
  • 740
  • @Dɑvïd Try sudo strace -p PID, which will show which system calls debsums is executing (if none, then it is almost certainly stuck on some internal code) – muru Feb 09 '17 at 16:50
  • @Dɑvïd I tried out debsums -c libfm-extra4 on my 16,04 VM, and it did not do a readlink(2) /usr/share/doc/libfm-extra4 (which is a directory in my case). Maybe examine that directory and its contents. – muru Feb 09 '17 at 17:09
  • It seems changelog.Debian.gz is a symbolic link which points I don't know where. The properties panel isn't giving me enough information; when I click on in file-manager, I don't move. – Dɑvïd Feb 09 '17 at 17:15
  • If you can delete it, try that. If you can't, an fsck might be in order. – muru Feb 09 '17 at 17:16
  • Got rid of it - and now debsums is moving -- looks like you cracked it! I don't think my problems are over, but I'm certianly moving ahead. Thanks so much! – Dɑvïd Feb 09 '17 at 17:20