Warning: could not send message for past 4 hours

Mail Delivery Subsystem (MAILER-DAEMON@mbox.est.it)
Mon, 25 May 1998 15:14:11 +0200


This is a MIME-encapsulated message

--PAB00195.896102051/wigner.cstc.org

**********************************************
** THIS IS A WARNING MESSAGE ONLY **
** YOU DO NOT NEED TO RESEND YOUR MESSAGE **
**********************************************

The original message was received at Mon, 25 May 1998 06:29:41 +0200
from pol@wigner.cstc.org [192.168.1.2]

----- The following addresses had transient non-fatal errors -----
"|exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1"
(expanded from: <pol@wigner.cstc.org>)

----- Transcript of session follows -----
451 <linux-kernel@vger.rutgers.edu>... vger.rutgers.edu: Name server timeout
451 <linux-kernel@vger.rutgers.edu>... vger.rutgers.edu: Name server timeout
451 "|exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1"... vger.rutgers.edu: Name server timeout
451 "|exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1"... vger.rutgers.edu: Name server timeout
451 "|exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1"... mbox.est.it: Name server timeout
"|exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1"... Deferred: Name server: host name lookup failure
Warning: message still undelivered after 4 hours
Will keep trying until message is 5 days old
451 <linux-kernel@vger.rutgers.edu>... vger.rutgers.edu: Name server timeout

--PAB00195.896102051/wigner.cstc.org
Content-Type: message/delivery-status

Reporting-MTA: dns; wigner.cstc.org
Arrival-Date: Mon, 25 May 1998 06:29:41 +0200

Final-Recipient: RFC822; <pol@wigner.cstc.org>
X-Actual-Recipient: RFC822; |exec /usr/lib/mailagent/filter >> /home/pol/var/log/mailagent.bak 2>&1@wigner.cstc.org
Action: delayed
Status: 4.4.3
Last-Attempt-Date: Mon, 25 May 1998 15:14:11 +0200
Will-Retry-Until: Sat, 30 May 1998 06:29:41 +0200

--PAB00195.896102051/wigner.cstc.org
Content-Type: message/rfc822

Return-Path: <linux-kernel@vger.rutgers.edu>
Received: from wigner.cstc.org (pol@wigner.cstc.org [192.168.1.2])
by wigner.cstc.org (8.8.8/8.8.8/Debian/GNU) with ESMTP id GAA01355
for <pol@wigner.cstc.org>; Mon, 25 May 1998 06:29:41 +0200
From: linux-kernel@vger.rutgers.edu
Received: from mbox.est.it
by wigner.cstc.org (fetchmail-4.3.9 POP3)
for <pol/wigner.cstc.org> (single-drop); Mon, 25 May 1998 06:29:41 CEST
Message-ID: <294166@bbs.eureka.est.it>
To: Pumilia@mbox.est.it
Date: 25 May 1998 05:31:18 GMT +0100
Subject: linux-kernel-digest V1 #2012

linux-kernel-digest Sunday, 24 May 1998 Volume 01 : Number 2012

In this issue:

Mount problem --- one more clue
2.0.34pre16 SCSI problem
patch for 2.1.103 ldt-related problems
Re: Upgrading to a test kernel
Re: size of files in /proc
Re: Modularized x86 math emulation PATCH against pre-2.1.104-1
Re: threaded apps and default file descriptor flags
Re: Modularized x86 math emulation PATCH against pre-2.1.104-1
Re: pre-104
Re: Module related stuff
Re: [SOUND] Aztech Sound Galaxy broken/not supported?
Warning: could not send message for past 4 hours
Warning: could not send message for past 4 hours
Warning: could not send message for past 4 hours

See the end of the digest for information on subscribing to the linux-kernel
or linux-kernel-digest mailing lists.

----------------------------------------------------------------------

From: Gary Lawrence Murphy <garym@maya.dyn.ml.org>
Date: Sun, 24 May 1998 22:02:19 -0400
Subject: Mount problem --- one more clue

The latest news on my efforts with the 103 kernel: Commenting out
the hwclock line gets as far as "changing to runlevel 3" and hangs
during the ifconfig lines in the network-scripts (RH5)

Here are my package ratings:

========================================================
insmod version 2.1.85
GCC:2.7.2.3
GNU ld version 2.9.1 (with BFD 2.9.1)
/lib/libc.so.5->/usr/i486-linux-libc5/lib/libc.so.5.4.44
/lib/libc.so.6->libc-2.0.7.so
ldd (GNU libc) 2.0.7
/usr/lib/libg++.so.2.7.2->libg++.so.2.7.2.8
/usr/lib/libg++.so.2.7.2.8
procps version 1.2.7
This is procinfo version 13 (1998-03-07)
mount: mount-2.7l
net-tools 1.45
hostname 1.96 (1996-02-18)
basename (GNU sh-utils) 1.16
GNU bash, version 1.14.7(1)

with almost all of these coming direct from the RedHat update
directory (I'm learning not to trust their contrib directory, and yes,
I know, I shouldn't be doing RPMs but they are so darn convenient)

MagicSysReq didn't really give me any useful information other than
that I was on one of the "grep" lines filtering output from one of the
ifconfig calls in the ifup script. I will take a close look at my
network config and kernel network settings, but considering this is
a long line of items, I expect there is a common thread which I am
tripping over.

To recap, the following services work fine with 2.1.90 but hang the
boot sequence with anything since perhaps 2.1.97 (and definately
2.1.100 and on ... there have been no changes in behaviour since
..100)

- mount -t vfat (but mount -t ext2 works fine to a partition on
the same disk.

- hwclock hangs

- ifconfig or grep hangs during the netscripts.

I'm running a pretty plain vanilla 1996-vintage Pentium-S system
with one CPU, 32MB, "Intel Pentium 75+ stepping 0c" with SMP commented out.

PIIX3: IDE controller on PCI bus 0 function 57
PCI->APIC IRQ transform: (B0,I7,P-1) -> -1

My PCI config (just in case this helps) is

CONFIG_PCI=y
CONFIG_PCI_BIOS=y
# CONFIG_PCI_DIRECT is not set << no change if set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_OPTIMIZE is not set
CONFIG_PCI_OLD_PROC=y
CONFIG_BLK_DEV_IDEPCI=y

If there is anything else anyone needs to know, they need only ask.

Gary Lawrence Murphy <garym@who.net> -------- http://visitweb.com/~garym/
TeleDynamics http://visitweb.com/teledynamics/ RR#1 Sauble Beach, Ont CAN
telecenter design -- telework systems -- intranet/extranet consulting
"You don't play what you know; you play what you hear." ----- Miles Davis

------------------------------

From: hans@grumbeer.inka.de (Hans-Joachim Baader)
Date: Sun, 24 May 1998 23:19:26 +0200 (MET DST)
Subject: 2.0.34pre16 SCSI problem

Hi Alan and all,

I installed pre16 on my server. During the nightly backup I got a
lot of SCSI timeouts and resets but the box recovered eventually.
I have never observed such problems with earlier kernel versions,
including pre15.

The next afternoon I copied a kernel tree when the problem occured
again. This time I was unable to stop it so I power cycled the box.
I rebooted into 2.0.33 and after the file system checks I made a
few tests with copying kernel trees. No problems.

Then I booted pre16 again and did the same tests there - no problems.
A few hours later I started stress testing the system with a copy/diff
script. It took about half an hour until the problem showed up again.
Another power cycle.

Back in 2.0.33 I'm currently running the same tests to see if it's
a pre16 or a hardware problem.

Here's the beginning of /var/log/kernel:

May 24 15:19:09 grumbeer kernel: ncr53c810-0: SCSI phase error fixup: CCB alread
y dequeued (0x00011020)
May 24 15:19:29 grumbeer kernel: scsi : aborting command due to timeout : pid 69
2714, scsi0, channel 0, id 4, lun 0 Write (6) 04 b2 b8 f4 00
May 24 15:19:29 grumbeer kernel: ncr53c8xx_abort: pid=692714 serial_number=69271
8 serial_number_at_timeout=692718

General information:
Chip NCR53C810, device id 0x1, revision id 0x2
IO port address 0xe800, IRQ number 15
Using memory mapped IO at virtual address 0x4805000
Synchronous period factor 25, max commands per lun 8
Profiling information:
num_trans = 92099
num_kbytes = 707872
num_disc = 75594
num_break = 3326
num_int = 3344
num_fly = 92079
ms_setup = 70880
ms_data = 440300
ms_disc = 1371370
ms_post = 7820

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: TOSHIBA Model: CD-ROM XM-3601TA Rev: 0265
Type: CD-ROM ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor: HP Model: C2490A-300 Rev: 4140
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: IBM Model: DORS-32160 Rev: WA6A
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 04 Lun: 00
Vendor: FUJITSU Model: M1603S-512 Rev: 6C01
Type: Direct-Access ANSI SCSI revision: 02

It is the FUJITSU with which I'm doing these tests and which is causing
the problems.

Browsing through the pre16 patch, I see about one billion SCSI related
changes so I have no way of telling what could be wrong...

hjb
- --
Veni, Vidi, VISA:
I came, I saw, I did a little shopping.

------------------------------

From: Bill Hawes <whawes@star.net>
Date: Sun, 24 May 1998 22:32:55 -0400
Subject: patch for 2.1.103 ldt-related problems

This is a multi-part message in MIME format.
- --------------D6E59D8048D9105C22BE315F
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

After quite a bit of bug-tracking I've found the cause of the recently
reported invalid TSS double oops when running Wine. The symptoms were
that a selector in %fs referring to an ldt entry was causing first an
invalid TSS exception, which became a GP fault when the kernel attempted
to push and pop %fs.

The underlying problem turned out to be that when cloning a task that
used an ldt, the new clone wasn't being given its own ldt selector in
the gdt; instead the tss.ldt value was left set to the parent task's
selector. But if the parent task exited first and a new task used the
same task slot, the ldt selector in the gdt would be changed, leaving
the clone task with invalid selectors.

The attached patch fixes this and some other ldt-related problems, and
improves the reporting in show_registers that hopefully will make
tracking problems like this a little easier. The changes are:

(1) In kernel/fork.c, call copy_segments() with a NULL new_mm to
indicate we're setting up a clone task.

(2) In arch/i386/kernel/process.c, check for a NULL new_mm in
copy_segments and install the ldt descriptor in the gdt. Also, in
release_segments(), restore the default entry in the gdt so we don't
leave a descriptor to the now-released ldt memory.

(3) In arch/i386/kernel/ldt.c, add new error checking for the ldt
changes, and fix a memory leak if two clones both attempt to allocate an
ldt. The error checking code checks whether any segment registers refer
to the entry about to be changed, and builds a requirements mask for the
entry. It reports a warning if a change is made to an in-use entry. (I
haven't seen any of the warnings, so in practice this is probably very
rare.)

(4) in arch/i386/kernel/traps.c, print values for %fs and %gs, and show
the ldt, tss.ldt, LDT(nr), tr, and TSS(nr) values. The latter display
was what provided the essential clue to tracking this down -- when the
oops occurred, ldt and tss.ldt didn't match the LDT(nr) expected for the
task.

With the patch in place the previously 100% repeatable oops with Wine
has gone away, and other operations appear to correctly.

Regards,
Bill
- --------------D6E59D8048D9105C22BE315F
Content-Type: text/plain; charset=us-ascii; name="arch386_ldt103-patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="arch386_ldt103-patch"

- --- linux-2.1.103/arch/i386/kernel/process.c.old Thu May 21 13:28:14 1998
+++ linux-2.1.103/arch/i386/kernel/process.c Sun May 24 21:57:49 1998
@@ -422,15 +422,20 @@

void release_segments(struct mm_struct *mm)
{
- - void * ldt;
+ void * ldt = mm->segments;
+ int nr;

/* forget local segments */
__asm__ __volatile__("movl %w0,%%fs ; movl %w0,%%gs ; lldt %w0"
: /* no outputs */
: "r" (0));
current->tss.ldt = 0;
+ /*
+ * Set the GDT entry back to the default.
+ */
+ nr = current->tarray_ptr - &task[0];
+ set_ldt_desc(gdt+(nr<<1)+FIRST_LDT_ENTRY, &default_ldt, 1);

- - ldt = mm->segments;
if (ldt) {
mm->segments = NULL;
vfree(ldt);
@@ -475,20 +480,30 @@
{
}

+/*
+ * If new_mm is NULL, we're being called to set up the LDT descriptor
+ * for a clone task. Each clone must have a separate entry in the GDT.
+ */
void copy_segments(int nr, struct task_struct *p, struct mm_struct *new_mm)
{
- - int ldt_size = 1;
- - void * ldt = &default_ldt;
struct mm_struct * old_mm = current->mm;
+ void * old_ldt = old_mm->segments, * ldt = old_ldt;
+ int ldt_size = LDT_ENTRIES;

p->tss.ldt = _LDT(nr);
- - if (old_mm->segments) {
- - new_mm->segments = vmalloc(LDT_ENTRIES*LDT_ENTRY_SIZE);
- - if (new_mm->segments) {
- - ldt = new_mm->segments;
- - ldt_size = LDT_ENTRIES;
- - memcpy(ldt, old_mm->segments, LDT_ENTRIES*LDT_ENTRY_SIZE);
+ if (old_ldt) {
+ if (new_mm) {
+ ldt = vmalloc(LDT_ENTRIES*LDT_ENTRY_SIZE);
+ if (ldt) {
+ new_mm->segments = ldt;
+ memcpy(ldt, old_ldt, LDT_ENTRIES*LDT_ENTRY_SIZE);
+ } else
+ goto no_ldt; /* N.B. report error? */
}
+ } else {
+ no_ldt:
+ ldt = &default_ldt;
+ ldt_size = 1;
}
set_ldt_desc(gdt+(nr<<1)+FIRST_LDT_ENTRY, ldt, ldt_size);
}
- --- linux-2.1.103/arch/i386/kernel/ldt.c.old Tue May 5 11:23:28 1998
+++ linux-2.1.103/arch/i386/kernel/ldt.c Sun May 24 17:53:49 1998
@@ -16,6 +16,8 @@
#include <asm/system.h>
#include <asm/ldt.h>

+/* #define LDT_PARANOIA 1 */
+
static int read_ldt(void * ptr, unsigned long bytecount)
{
void * address = current->mm->segments;
@@ -33,23 +35,48 @@
return copy_to_user(ptr, address, size) ? -EFAULT : size;
}

- -static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
+/*
+ * Define masks for error checking
+ */
+#define SEG_NEED_NZ 1
+#define SEG_IS_ZERO 1
+#define SEG_NEED_VALID 2
+#define SEG_IS_INVALID 2
+#define SEG_NEED_CODE 4
+#define SEG_IS_NOTCODE 4
+#define SEG_NEED_READ 8
+#define SEG_IS_NOTREAD 8
+#define SEG_NEED_WRITE 16
+#define SEG_IS_NOTWRITE 16
+
+static int write_ldt(void * ptr, unsigned long bytecount, int oldmode,
+ struct pt_regs *regs)
{
+ struct mm_struct * mm = current->mm;
+ void * ldt;
+ __u32 entry_1, entry_2, *lp;
+ __u16 selector, reg_fs, reg_gs;
+ unsigned int require = 0, attrib = 0;
+ char * which;
+ int error;
struct modify_ldt_ldt_s ldt_info;
- - unsigned long *lp;
- - struct mm_struct * mm;
- - int error, i;

+ error = -EINVAL;
if (bytecount != sizeof(ldt_info))
- - return -EINVAL;
- - error = copy_from_user(&ldt_info, ptr, sizeof(ldt_info));
- - if (error)
- - return -EFAULT;
- -
- - if ((ldt_info.contents == 3 && (oldmode || ldt_info.seg_not_present == 0)) || ldt_info.entry_number >= LDT_ENTRIES)
- - return -EINVAL;
- -
- - mm = current->mm;
+ goto out;
+ error = -EFAULT;
+ if (copy_from_user(&ldt_info, ptr, sizeof(ldt_info)))
+ goto out;
+
+ error = -EINVAL;
+ if (ldt_info.entry_number >= LDT_ENTRIES)
+ goto out;
+ if (ldt_info.contents == 3) {
+ if (oldmode)
+ goto out;
+ if (ldt_info.seg_not_present == 0)
+ goto out;
+ }

/*
* Horrible dependencies! Try to get rid of this. This is wrong,
@@ -62,60 +89,149 @@
* For no good reason except historical, the GDT index of the LDT
* is chosen to follow the index number in the task[] array.
*/
- - if (!mm->segments) {
- - for (i=1 ; i<NR_TASKS ; i++) {
- - if (task[i] == current) {
- - if (!(mm->segments = (void *) vmalloc(LDT_ENTRIES*LDT_ENTRY_SIZE)))
- - return -ENOMEM;
- - memset(mm->segments, 0, LDT_ENTRIES*LDT_ENTRY_SIZE);
- - set_ldt_desc(gdt+(i<<1)+FIRST_LDT_ENTRY, mm->segments, LDT_ENTRIES);
- - load_ldt(i);
- - }
+ ldt = mm->segments;
+ if (!ldt) {
+ error = -ENOMEM;
+ ldt = vmalloc(LDT_ENTRIES*LDT_ENTRY_SIZE);
+ if (!ldt)
+ goto out;
+ memset(ldt, 0, LDT_ENTRIES*LDT_ENTRY_SIZE);
+ /*
+ * Make sure someone else hasn't allocated it for us ...
+ */
+ if (!mm->segments) {
+ int i = current->tarray_ptr - &task[0];
+ mm->segments = ldt;
+ set_ldt_desc(gdt+(i<<1)+FIRST_LDT_ENTRY, ldt, LDT_ENTRIES);
+ load_ldt(i);
+ if (mm->count > 1)
+ printk(KERN_WARNING
+ "LDT allocated for cloned task!\n");
+ } else {
+ vfree(ldt);
}
}
+
+ /*
+ * Check whether the entry to be changed is currently in use.
+ * If it is, we may need extra validation checks in case the
+ * kernel is forced to save and restore the selector.
+ *
+ * Note: we check the fs and gs values as well, as these are
+ * loaded by the signal code and during a task switch.
+ */
+ selector = (ldt_info.entry_number << 3) | 4;
+ __asm__("movw %%fs,%0" : "=r"(reg_fs));
+ __asm__("movw %%gs,%0" : "=r"(reg_gs));
+ which = NULL;
+
+ if (selector == (__u16) (regs->xcs & ~3)) {
+ which = "CS";
+ require = SEG_NEED_VALID | SEG_NEED_CODE | SEG_NEED_NZ;
+ }
+ else if (selector == (__u16) (regs->xss & ~3)) {
+ which = "SS";
+ require = SEG_NEED_VALID | SEG_NEED_WRITE | SEG_NEED_NZ;
+ }
+ else if (selector == (__u16) (regs->xds & ~3)) {
+ which = "DS";
+ require = SEG_NEED_VALID | SEG_NEED_READ | SEG_NEED_NZ;
+ }
+ else if (selector == (__u16) (regs->xes & ~3)) {
+ which = "ES";
+ require = SEG_NEED_VALID | SEG_NEED_READ | SEG_NEED_NZ;
+ }

<<< Continua nel prossimo messaggio >>>

--PAB00195.896102051/wigner.cstc.org--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu