Bug#404815: linux-image-2.6.18-3-686: Problems opening serial ports.
Package: linux-image-2.6.18-3-686
Version: 2.6.18-7
Severity: normal
It seems that the kernel has some races in opening/closing of serial
ports. Simple C program below just opens/closes a port in a loop.
When I run the program, I begin to get the following in dmesg even
though the port is not connected (idle):
irq 4: nobody cared (try booting with the "irqpoll" option)
[<c014037f>] __report_bad_irq+0x2b/0x69
[<c014056c>] note_interrupt+0x1af/0x1e7
[<c013fb83>] handle_IRQ_event+0x23/0x49
[<c013fc5c>] __do_IRQ+0xb3/0xe8
[<c01050e5>] do_IRQ+0x43/0x52
[<c01036b6>] common_interrupt+0x1a/0x20
[<c0101b91>] mwait_idle+0x25/0x38
[<c0101b52>] cpu_idle+0x9f/0xb9
[<c03186fd>] start_kernel+0x379/0x380
handlers:
[<c020e07b>] (serial8250_interrupt+0x0/0xdd)
Disabling IRQ #4
In addition, when two copies of this program are run simultaneously on
my hyper-thread Pentium 4 box, each of copies start to randomly fail to
open the port with errno=5 (Input/output error).
Note that I've tested this both with standard PC port ttyS0 and with
serial ports of MOXA multi-port serial board (ttyM*), and [mis]behavior
is the same. Also note that opening /dev/null instead of serial port
doesn't have the problem.
Here is the C program:
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
int main()
{
while(1) {
int fd = open("/dev/ttyS0", O_RDONLY | O_NOCTTY);
if(fd < 0)
fprintf(stderr, "%s\n", strerror(errno));
else
close(fd);
}
}
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-3-686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Versions of packages linux-image-2.6.18-3-686 depends on:
ii coreutils 5.96-5 The GNU core utilities
ii debconf [debconf-2.0] 1.5.3 Debian configuration management sy
ii initramfs-tools [linux-initra 0.77b tools for generating an initramfs
ii module-init-tools 3.2.2-3 tools for managing Linux kernel mo
Versions of packages linux-image-2.6.18-3-686 recommends:
ii libc6-i686 2.3.6.ds1-4 GNU C Library: Shared libraries [i
-- debconf information:
linux-image-2.6.18-3-686/postinst/bootloader-error-2.6.18-3-686:
linux-image-2.6.18-3-686/postinst/old-dir-initrd-link-2.6.18-3-686: true
linux-image-2.6.18-3-686/postinst/kimage-is-a-directory:
linux-image-2.6.18-3-686/postinst/old-system-map-link-2.6.18-3-686: true
linux-image-2.6.18-3-686/postinst/create-kimage-link-2.6.18-3-686: true
linux-image-2.6.18-3-686/postinst/bootloader-test-error-2.6.18-3-686:
linux-image-2.6.18-3-686/preinst/abort-overwrite-2.6.18-3-686:
linux-image-2.6.18-3-686/postinst/old-initrd-link-2.6.18-3-686: true
shared/kernel-image/really-run-bootloader: true
linux-image-2.6.18-3-686/preinst/elilo-initrd-2.6.18-3-686: true
linux-image-2.6.18-3-686/preinst/lilo-initrd-2.6.18-3-686: true
linux-image-2.6.18-3-686/postinst/depmod-error-initrd-2.6.18-3-686: false
linux-image-2.6.18-3-686/preinst/bootloader-initrd-2.6.18-3-686: true
linux-image-2.6.18-3-686/prerm/removing-running-kernel-2.6.18-3-686: true
linux-image-2.6.18-3-686/prerm/would-invalidate-boot-loader-2.6.18-3-686: true
linux-image-2.6.18-3-686/preinst/abort-install-2.6.18-3-686:
linux-image-2.6.18-3-686/preinst/overwriting-modules-2.6.18-3-686: true
linux-image-2.6.18-3-686/preinst/initrd-2.6.18-3-686:
linux-image-2.6.18-3-686/preinst/lilo-has-ramdisk:
linux-image-2.6.18-3-686/preinst/already-running-this-2.6.18-3-686:
linux-image-2.6.18-3-686/postinst/depmod-error-2.6.18-3-686: false
linux-image-2.6.18-3-686/preinst/failed-to-move-modules-2.6.18-3-686:
Reply to: