liam@cs.qmc.ac.uk (William Roberts) (08/09/88)
In article <15131@apple.Apple.COM> phil@apple.apple.com.UUCP (Phil Ronzone) writes: >Suggestions and comments solicited. Those suggestions and comments based >on actual use of A/UX will be listened to ... :-) :-) Here are the first 4 reports of problems etc found at QMC. So far we have been sending them to the A/UX support people in the UK who have been giving us some answers, but this was a come-on I couldn't refuse: NB. Most of the questions have been answered. ========================================================== A/UX Beta Report QMC Computer Science Week Ending: 27/5/88 1. Sash won't run under Multi-Finder. Sash pops up a dialogue box to say that the memory it needs is occupied. Ideally Sash should shut-down Multi-Finder before starting AUX, rather than simply give up. [Earlier problems with corruptions to the "Set Startup..." dialogue cannot now be repeated] 2. Missing Manual Page There is no online manual page for "sysinitrc(1M)", despite several cross-references to it. 3. FSCK Problem Using /etc/inittab to cause sash to boot multi-user by default, answering the second file system checking question with Y always results in "CANNOT READ BLOCK 1: BAD BLOCK", even though when subsequently logged in as root the same fsck command from /etc/bcheckrc works correctly and fsck's our /tmp filestore as expected. 4. Term dumped core The term utility dumped core in mysterious circumstances which we were not able to repeat. We also notice that the result of compiling term as per the makefile in /usr/lib/mac/examples/term gives a binary which differes considerably from /usr/toolboxbin/term. 5. A/UX Handling of Unknown Interrupts is Not Sensible When we booted A/UX with the EtherPort II card fitted and connected to the network, but A/UX not configured to use it, A/UX reported "Missing interrupt handler" for every packet. This is admittedly unfair treatment, but A/UX could take better care of itself. General Comments: We have a workable A/UX in the 10 Megabytes we allowed ourselves, and have successfully used dd to transfer whole disk images onto other machines. Time taken for the 40 Megabyte transfer is roughly 8 minutes when a block size of 1024b (= 0.5 Megabytes) is used. This results in long bursts of (external drive) disk activity interspersed with similar bursts of nothing: when we tried to run two dd processes connected by a pipe the effect was approximately the same - can A/UX not overlap its transfers on the SCSI bus? Attempts to use larger dd block sizes (4096b, 2048b) resulted in I/O errors during the first read attempt. In the absence of the EtherPort II driver, we have not been able to use NFS. Questions Arising: 1. How can an MFS filestore be made, so that we can use the "mfs" utility? 2. Where is there documentation on the A/UX toolbox routines? ========================================================== A/UX Beta Report QMC Computer Science Week Ending: 3/6/88 1. NFS mounts happen too late. The mounting of NFS filesystems happens so slowly that it is possible to login before the remote mounts have complete, in which case many of the path directories are not hashed (by csh) because they weren't ready in time. This was fixed by changing inittab to use "bootwait" instead of "wait" for our rc.mount script (basically just line_sane followed by mount -vat nfs). 2. NFS mounting is very very slow The mount command takes intolerably long for each NFS filesystem. This is particularly annoying given that we have to wait for it to finish before we allow logins, and that we mount a large number of filesystems (more than 6). 3. The default IP broadcast address is not the Berkeley default The default IP broadcast address is hostpart = all ones, in our case 42.255.255.255, whereas our other machines expect the Berkeley(?) convention of hostpart = all zeros, i.e. 42.0.0.0 To achieve the desired effect we have to make an explicit ifconfig call which sets the broadcast address to 42.0.0.0 4. /etc/NETADDRS has no apparent effect The information in the /etc/NETADDRS file has no apparent effect on our system, nor is it mentioned in the autoconfig(1M) and ifconfig(1M) manual pages to which NETADDRS(4) refers. This came to light after we tried changing the hostname and broadcast address in this file. 5. NFS mounts require an explicit rsize parameter The A/UX default NFS read-size is too large for the A/UX RPC software and has to be manually reduced to 1024 before NFS works reliably. Typical symptoms include dying while trying to ls a large remote directory. NB: rsize=2048 was too big. 6. Toolbox problems We have lost the ability to run A/UX toolbox programs such as rez, sample and term. The latter dump core ungraciously, but rez produces a useful diagnostic before expiring gracefully. % make %sample /usr/toolboxbin/rez -i /usr/lib/mac/rincludes sample.r SysError(23) pc = 0x1002653a (ROM = 0x10000000 -> 0x10040000) Fatal error in Toolbox *** Error code 1 Stop. According to pg 156 of the A/UX ToolBox Mac ROM Interface manual, SysError 23 means "package 6 not present". Restarting the toolboxdaemon has no effect. General Comments: Once the rsize is reduced enough, NFS seems to be working reliably. Losing the toolbox is a disaster, so we are delaying the A/UX installation until it is solved; in any case, we are waiting on the installation of thin-ethernet cabiling for most of the Mac IIs. We have successfully ported our "broadcast a new root partition" software to the Mac II, though we aren't yet sure how we might use it. It would be very useful if we could produce a version that could be run from sash, so that we can rebuild A/UX starting from a sash floppy. We have employed a summer student to write an "hfs" program to complement the "mfs" program. This will be written so that most of the work can be reused in conjunction with the public domain user-level NFS server recently sent out to the USENET. Questions Arising: 1. Why have we lost the toolbox??! 2. How can we write programs that will run under sash? 3. How can we make sash boot A/UX from a floppy? We can get everything we need onto a mountable floppy (kernel, basic utilities etc) but sash refuses to boot from it. ========================================================== A/UX Beta Report QMC Computer Science Week Ending: 10/6/88 1. The routine ffs is missing from libc The manual page "bstring(3)" says that the routine ffs(i) will return the index of the top bit set in i. The routine does not however exist in /lib/libc.a 2. Missing BSD system calls The following system calls and "section 3" routines are missing from A/UX vadvise see <sys/vadvise.h> getrusage <sys/resource.h> is sadly truncated, the 3rd argument to wait3() is "a placeholder" valloc just plain missing These are just rather a nuisance, and it would be very useful to have either a list of all of the missing BSD routines, or better still some bodges to cover for them. General Comments: Questions Arising: 1. Is there an include file which lists all of the system calls? On BSD 4.2 there used to be /usr/include/syscall.h which performed approximately this function. ========================================================== A/UX Beta Report QMC Computer Science Period from 11/6/88 until 15/7/88 1. "sync" and "powerdown" do not fully sync the disk? Many of our AUX users find that the root partition needs correcting when they boot AUX, even when they have used powerdown to shut the machine off. However, the repairs necessary are only to the free block table and involve recovering free blocks that were incorrectly marked as used. This seems to suggest that sync doesn't flush quite enough buffers. 2. sash can't run if too many things installed at startup Using the SoundMaster(?) file which adds noises to many system activities uses up too much space and prevents sash from working. 3. Further NFS problems Both ar(1) and ranlib(1) dump core if they are manipulating an archive on a remote NFS filesystem that is not an A/UX machine. We have had similar problems before and suspect that this is due to attempts to open directories as files and interpret their contents directly, rather than using the approved opendir/readdir calls supported by NFS. 4. Error in Mac2 Termcap entry The termcap entry for "mac2" specifies padding for the so/se and us/ue font change strings, but the manual page does not say that padding is allowed for these strings. 5. Compiler Bugs In trying to compile the Sun NeWS source on A/UX, we have identified a number of problems with the C compiler. It is perhaps ironic that Sun can combine a desire to write portable code with such a macho "this'll REALLY test your compiler" programming style. 5.1 General Moans Some of the tables are too small, e.g. macro expansions of several kbytes are not possible. It is also not permitted to have a cast applied to an lvalue. 5.2 Compiler Problems with Assignment Statements The following program illustrates two compiler problems associated with the value of an assignment statement ------------------------------------------------ /* foo works OK*/ foo() { char i, j = (i<10) ? (j = 1) : ( (i>100) ? (j = 100) : 0 ) ; } /* dies with internal compiler error * Can't handle op REG */ bar() { char i, j; (i<10) ? (j = 1) : ( (i>100) ? (j = 100) : 0 ) ; } /* dies claiming "Illegal LHS of assignment" * Apparently OK if all assignments bracketed but we * didn't try the remaining 6 possible combinations... */ bar2() { char i, j ; (i<10) ? j = 1 : ( (i>100) ? j = 100 : j = 0 ) ; } ------------------------------------------------ 5.3 Compiler Generates Illegal Assembler Code The following fragment illustrates a construction which leads to an illegal instruction being generated. ------------------------------------------------ foo() { register float f; unsigned long ul; ul = (unsigned long) -f; /* this works */ ul = -(unsigned long) f; /* this doesn't */ /* generates a bad instruction: fneg.x %fp2,%d0 ILLEGAL! should have fp reg as 2nd op mov.l %d0,((S%1-4).w,%fp) */ /* Note that having the float in a register isn't necessary for * this sort of error. If it's not in the register then it still * generates an erroneous instruction.... fneg.s <store>,%d0 * this time!!!! */ } ------------------------------------------------ 6. Problems with the Console Terminal Driver The "keypad mode" of the console terminal driver does not make all keys on the keypad distinct from the main keyboard; it leaves the keys Clear, =, /, * and + unchanged. It is also impossible to distinguish between shifted and unshifted versions of these keys. 7. Manual Page Bugs The manual page for "console(7)" neglects to mention that the keypad key "." is changed by selecting keypad mode (is this a troff mistake - line beginning with dot?). The "termio(7)" manual page does not mention the TIOCGWINSZ and TIOCSWINSZ ioctls for getting and setting the current screen size. General Comments: AUX is now installed on all our machines, but not many of them are being used as anything more than multi-window terminals at present. Porting our local software is taking time as we discover what parts of the BSD system are missing; this week's absences are all related to the sgtty structure and terminal ioctls. We have successfully ported the ML language system to AUX, together with our local "ded" editor and our "gsh" shell. The Berkeley 4.2 printer spooler stuff was ported without problems. Work is proceeding on the port of Sun NeWS 1.0 to A/UX and we have a working MacOs->AUX copy program which is roughly equivalent to "mfs". Outstanding Questions: 3.1. Is there an include file which lists all of the system calls? On BSD 4.2 there used to be /usr/include/syscall.h which performed approximately this function. 4.1. Is there a Pascal compiler available for AUX? 4.2. Is there better documentation about the precise disk block contents under MacOS than is given in Inside Macintosh volume 4? ========================================================== A/UX Beta Report QMC Computer Science Period from 16/7/88 until /8/88 1. dumpfs missing from our 80 Meg disk The program "dumpfs" is listed in the manual as being in /etc, but is not present on any of our disks, including the original 80 Meg disk containing our master copy of A/UX. The only references to "dumpfs" in the /descriptions file are /etc/dumpdates and the manual pages dumpfs.1M, dumpfs.4 & rdumpfs.1M 2. More compiler bugs If you switch on a variable which is of an enumerated type then you get a warning "enumeration type clash, operator =". Casting to an int will keep it quiet e.g. ---------------------------------------------------------- typedef enum { Monday, Tuesday, Wednesday } Days; foo(day) Days day; { /* this causes a warning */ switch(day) { case Monday: case Tuesday: case Wednesday: default: } /* this doesn't */ switch( (int) day) { case Monday: case Tuesday: case Wednesday: default: } } ---------------------------------------------------------- 3. dp can produce a partition map unacceptable to HD SC Setup If dp is used to delete a partition, the resulting partition map is "invalid" according to the Macintosh "HD SC Setup" program. The problem appears to be that the deleted partition is not removed from the map: dp says "/dev/rdsk/c0d0s31" 7 partitions, 6 allocated and the "deleted partition" (in our case partition 6) appears to be filled with nulls. Deleting a partition using HD SC Setup leaves a partition map entry of type Apple_Free. General Comments: Work is underway to port X11R2 and Cprolog to A/UX. We have modified the "term" program to improve the VT100 emulation and ported our "ded" editor and "gsh" shell to run under both term and the Mac console. Outstanding Questions: 4.1. Is there a Pascal compiler available for AUX? 4.2. Is there better documentation about the precise disk block contents under MacOS than is given in Inside Macintosh volume 4? 5.1. What is the anticipated date at which MacOS will be able to handle more than one MacOS partition on the internal disk? 5.2. Could the "Macintosh Driver" boot file on the SCSI disk be modified to enable direct booting of A/UX, with a bit in the non-volatile RAM to select between MacOS and A/UX? 5.3. Is there a good reason why "HD SC Setup" doesn't allow MacOS partitions to be resized (even just increasing them)? ========================================================== -- William Roberts ARPA: liam@cs.qmc.ac.uk (gw: cs.ucl.edu) Queen Mary College UUCP: liam@qmc-cs.UUCP LONDON, UK Tel: 01-975 5250
wytze@gouldnl.UUCP (Wytze van der Raay) (08/10/88)
In article <571@sequent.cs.qmc.ac.uk> liam@cs.qmc.ac.uk (William Roberts) writes: >3. The default IP broadcast address is not the Berkeley default > >The default IP broadcast address is hostpart = all ones, in our >case 42.255.255.255, whereas our other machines expect the >Berkeley(?) convention of hostpart = all zeros, i.e. 42.0.0.0 >To achieve the desired effect we have to make an explicit >ifconfig call which sets the broadcast address to 42.0.0.0 I'm afraid your Berkeley systems are out-of-date. Since the days of BSD 4.3 the default IP broadcast address is indeed hostpart = all ones, thereby correcting the BSD 4.2 anomaly of using all zeros, which was not according to the recommendation in RFC919. So rather than condemning Apple's AUX on his point, it should be praised, for keeping up-to-date with current IP broadcast standards. -- | Wytze van der Raay ...!mcvax!gouldnl!wytze | | Gould European Unix Support Centre wytze@gouldnl.nl | | Maarssenbroek, The Netherlands (USA) ...!gould!wraay |