Subject: bin/11904: tail segfaults and core dumps on I/O error
To: None <>
From: None <>
List: netbsd-bugs
Date: 01/06/2001 10:56:13
>Number:         11904
>Category:       bin
>Synopsis:       tail segfaults and core dumps on I/O error
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jan 06 10:56:00 PST 2001
>Originator:     Erik E. Fair
>Release:        1.3.2
	International Organization of Internet Clock Watchers
System: NetBSD 1.3.2 NetBSD 1.3.2 (CESIUM) #0: Sat Sep 12 19:30:08 PDT 1998 root@:/usr/src/sys/arch/sparc/compile/CESIUM sparc

SPARC LX (50 MHz microSPARC I CPU), 96MB RAM, 8GB disk
/var/run/dmesg.boot available upon request.

	tail core dumps when the file is it reading gives an I/O
	error due to a bad block.  I have a shell script that I
	use to watch my web logs in a screen window:

	exec tail $* /var/log/httpd.access_log | egrep $USER

	My disks are getting old, and the other day, a bad block
	showed up in /var in the httpd.access_log. When the script
	above was invoked, tail core dumped when it read the bad

	This is not acceptable behavior on the part of any program
	that reads files; it should gracefully error out.

	Aside from fixing this particular program, it might be a
	good idea to create a filesystem or other test-rig that
	can deliver an I/O error to any arbitrary program, since
	tail is unlikely to be the only program with this class of
	problem - the rest of the userland should be tested, too,
	so that UNIX is more robust in the face of system failure.