man: pipeline.c:1143: pipeline_sigchld: Assertion `signum == 17' failed.

Bug #221635 reported by Carlos Eduardo Moreira dos Santos
20
This bug affects 1 person
Affects Status Importance Assigned to Milestone
man-db (Ubuntu)
Fix Released
High
Colin Watson

Bug Description

$ man mount
man: pipeline.c:1143: pipeline_sigchld: Assertion `signum == 17' failed.
Aborted

$ man true
man: pipeline.c:1143: pipeline_sigchld: Assertion `signum == 17' failed.
Aborted

Ubuntu 8.04 the Hardy Heron
$ dpkg -S /usr/bin/man
dpkg: /usr/bin/man not found.

Revision history for this message
Carlos Eduardo Moreira dos Santos (cemsbr) wrote :

My ubuntu is for i386 desktop

Revision history for this message
William Grant (wgrant) wrote :

/usr/bin/man is a symlink to the man binary owned by man-db, but the symlink itself isn't owned by a package, which is dpkg -S didn't show anything.

Revision history for this message
Marcus Asshauer (mcas) wrote :

Thank you for reporting this bug. Please add the output of "apt-cache policy man-db".
I cannot reproduce your problem on my Hardy system with man-db 2.5.1-3.

Revision history for this message
Colin Watson (cjwatson) wrote :

Hmm, something weird is going on here. That assertion ought to be valid ...

Please install the strace package and run 'strace -o man.trace -f -s 1024 man true', then attach the resulting man.trace file to this bug report.

Changed in man-db:
assignee: nobody → kamion
importance: Undecided → High
status: New → Incomplete
Revision history for this message
Colin Watson (cjwatson) wrote :

I can certainly make this go away for 2.5.2, incidentally; the assert function is not safe for use in signal handlers, so it's correct to change this to a simple if guard instead which won't crash if it fails to be true for some reason.

However, I'm a little worried that by doing so I'll be papering over some other problem, which is why I want to get strace output.

Revision history for this message
Carlos Eduardo Moreira dos Santos (cemsbr) wrote :

# apt-cache policy man-db
man-db:
  Installed: 2.5.1-3
  Candidate: 2.5.1-3
  Version table:
 *** 2.5.1-3 0
        500 http://mirrors.us.kernel.org hardy/main Packages
        100 /var/lib/dpkg/status

Hey! I did strace and the man page appeared! Then I tried "man true" and it worked! The man pages are working now and it must be because of the reboot. I've not upgraded any packages so far (I'll do it now).

Is it a random bug? If it happens again, I'll write the outputs.

Thank you

Revision history for this message
Colin Watson (cjwatson) wrote :

Ugh, I hate bugs that vanish like that ...

In that case, I think I shall just assume that this upstream fix will deal with it (it would at least have made that specific symptom go away), and not worry too much about the underlying cause. Thanks for trying.

Sun Apr 27 11:24:24 BST 2008 Colin Watson <email address hidden>

        * lib/pipeline.c (pipeline_sigchld): assert is not
          async-signal-safe, so avoid calling it in a signal handler and use
          an if guard instead (Ubuntu bug #221635, although exactly why the
          assertion is failing there is unclear).

Changed in man-db:
status: Incomplete → Fix Committed
Revision history for this message
Benson Margulies (bimargulies) wrote :

I had upgraded from Gutsy to Hardy when this hit me.

Revision history for this message
Luke Faraone (lfaraone) wrote :

@Benson Margulies

Can you try the solutions offered earlier?

Revision history for this message
Colin Watson (cjwatson) wrote :

Benson: Please try to get an strace for me (https://bugs.launchpad.net/ubuntu/+source/man-db/+bug/221635/comments/4) before you try any solutions.

Revision history for this message
Benson Margulies (bimargulies) wrote :

I was redirected to this report from another. Sadly, as I explained there, this problem disappeared after a reboot, so I can no longer repro it.

Revision history for this message
Carlos Eduardo Moreira dos Santos (cemsbr) wrote :

I happened to me after my first reboot on a fresh install (next boot it disappeared).

Revision history for this message
Spindizzy (spindizzy-wizard) wrote : Re: man does not work ( GOT STRACE! )
Download full text (20.8 KiB)

Here's the strace from a system where man is still failing the assert:

$ strace man cat
execve("/usr/bin/man", ["man", "cat"], [/* 36 vars */]) = 0
brk(0) = 0x8069000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f47000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=77171, ...}) = 0
mmap2(NULL, 77171, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f34000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgdbm.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\17"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=19136, ...}) = 0
mmap2(NULL, 22112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f2e000
mmap2(0xb7f33000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4) = 0xb7f33000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\31\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=81240, ...}) = 0
mmap2(NULL, 83968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f19000
mmap2(0xb7f2d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7f2d000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1364388, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f18000
mmap2(NULL, 1369712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dc9000
mmap2(0xb7f12000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149) = 0xb7f12000
mmap2(0xb7f15000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f15000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dc8000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7dc86b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7f12000, 4096, PROT_READ) = 0
munmap(0xb7f34000, 77171) = 0
brk(0) = 0x8069000
brk(0x808a000) = 0x808a000
umask(022) = 022
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000
read(3, "# Locale name alias data base.\n#"..., 40...

Revision history for this message
Spindizzy (spindizzy-wizard) wrote : Re: man does not work

Post reboot, the error no longer occurs.

Revision history for this message
Matt Zimmerman (mdz) wrote :

In the strace provided, it does seem to be SIGCHLD which is being received. That points to this being some kind of weirdness in the signal handler (stack corruption?)

Revision history for this message
evane (glenn-brown) wrote :

This happened to me as well. I have attached the man.trace file.

Revision history for this message
Przemek K. (azrael) wrote :

Any news on this bug? Has it been fixed?

Revision history for this message
Colin Watson (cjwatson) wrote : Re: [Bug 221635] Re: man: pipeline.c:1143: pipeline_sigchld: Assertion `signum == 17' failed.

The bug kept going away any time I tried to investigate it with any
tools more sophisticated than strace.

However: since pipeline_sigchld now just uses an if guard rather than an
assert, I think I'll just call this fixed and get it off my list. It
certainly shouldn't fail in the same way, if at all.

 status fixreleased

Changed in man-db (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.