Received: by taz.hyperreal.com (8.7.5/V2.0) id IAA06186; Thu, 19 Sep 1996 08:28:03 -0700 (PDT) Received: from life.ai.mit.edu by taz.hyperreal.com (8.7.5/V2.0) with ESMTP id IAA06166; Thu, 19 Sep 1996 08:27:58 -0700 (PDT) Received: from volterra.ai.mit.edu (volterra.ai.mit.edu [128.52.39.173]) by life.ai.mit.edu (8.7.5/8.7.5AI/life.ai.mit.edu:1.6) with SMTP id LAA24782 for ; Thu, 19 Sep 1996 11:27:50 -0400 (EDT) From: "Robert S. Thau" Received: by volterra.ai.mit.edu (8.6.12/AI-4.10) id LAA03672; Thu, 19 Sep 1996 11:27:49 -0400 Date: Thu, 19 Sep 1996 11:27:49 -0400 Message-Id: <199609191527.LAA03672@volterra.ai.mit.edu> To: new-httpd@hyperreal.com Subject: Re: getting that stupid solaris bug fixed Sender: owner-new-httpd@apache.org Precedence: bulk Reply-To: new-httpd@hyperreal.com He needs examples of commercial OSes which don't have this bug. The root cause of the bug is that the FILE structure uses an unsigned char to store the descriptor. A quick check of the systems here shows that Digital Unix uses a short, which is good up to 32K descriptors per process; HP-UX uses a weird structure which has separate 'char' members for the low byte and the high byte of the descriptor; it, too, could accomodate at least 32K of 'em, at least to judge by the data structure. (I haven't actually written a program which opens more than 256 FILE*'s, and verified that they're all distinct and they all work, but given these layouts, you'd have to work very hard to break it). SGI has an #ifdef in its stdio.h --- it's broken in 32-bit mode, but uses an 'int' in 64-bit mode. (NB I said 32K descriptors per process and not 64K, because it is easy to lose half the available descriptor space by treating the descriptors as signed --- which sunos does, limiting its stdio to the low 128 possible descriptors). rst