Thread View: comp.os.v
3 messages
3 total messages
Started by Charles Shub
Thu, 27 Oct 1988 00:30
crashing V unix server on 4.3 + nfs
Author: Charles Shub
Date: Thu, 27 Oct 1988 00:30
Date: Thu, 27 Oct 1988 00:30
19 lines
1344 bytes
1344 bytes
our server machine keeps crashing. it is a microvax running 4.3 + nfs
in bringing up the packet filter, we had to change the call to MCLGET
in enet.c because the distributed code (for 4.2) called MCLGET with 2
arguments and the macro definition for 4.3 + nfs has only one argument.
we're not sure this got fixed correctly. If anybody else has added the filter
to a 4.3 + nfs configuration, would they be kind enough to help us with
getting the change correct. it is at about line 580 of vaxif/enet.c
a snapshot of that area of the fixed code or a diff between enet.c in the V
distribution and enet.c as it is working on your system would be appreciated.
on the other hand, if you know of a DIFFERENT reason why our server might be
crashing, we're all ears.
thanks...
charlie shub cdash@boulder.Colorado.EDU -or- ..!{ncar|nbires}!boulder!cdash
or even cdash@colospgs (BITNET)
Re: crashing V unix server on 4.3 + nfs
Author: Jeffrey Mogul
Date: Fri, 28 Oct 1988 22:00
Date: Fri, 28 Oct 1988 22:00
37 lines
1810 bytes
1810 bytes
In article <8810270030.AA07914@boulder.Colorado.EDU> cdash@BOULDER.COLORADO.EDU (Charles Shub) writes:
>our server machine keeps crashing. it is a microvax running 4.3 + nfs
>
>in bringing up the packet filter, we had to change the call to MCLGET
>in enet.c because the distributed code (for 4.2) called MCLGET with 2
>arguments and the macro definition for 4.3 + nfs has only one argument.
>we're not sure this got fixed correctly. If anybody else has added the filter
>to a 4.3 + nfs configuration, would they be kind enough to help us with
>getting the change correct. it is at about line 580 of vaxif/enet.c
I can't promise that this is right for you, but this is how my version
of the code (which runs in my private copy of Ultrix, NOT a product)
looked when it was hacked over by the folks at Stanford (this is a
reconstruction; I don't actually have one file with this code in it).
if (iov->iov_len >= CLBYTES) { /* big enough to use a page */
register struct mbuf *p;
#ifdef SULTRIX
if (mclget(m) == 0)
#else
MCLGET(m, p);
if (p == 0)
#endif SULTRIX
goto nopages;
len = CLBYTES;
}
else {
nopages:
len = MIN(MLEN, iov->iov_len);
}
This is NOT GUARANTEED!
By the way, I can contemplate rather nasty punishments for people
who change the arguments to macros without changing their name.
-Jeff
Re: crashing V unix server on 4.3 + nfs
Author: Bart Massey
Date: Wed, 02 Nov 1988 21:01
Date: Wed, 02 Nov 1988 21:01
94 lines
4690 bytes
4690 bytes
In article <8810270030.AA07914@boulder.Colorado.EDU> cdash@BOULDER.COLORADO.EDU (Charles Shub) writes: > our server machine keeps crashing. it is a microvax running 4.3 + nfs > ... > on the other hand, if you know of a DIFFERENT reason why our server might be > crashing, we're all ears. Here at Tektronix TV Systems, we've been using V for product development for several years. Our Emmy-winning VM-700, a TV test and measurement instrument, runs the V kernel internally, and was developed almost entirely in a V development environment. I looked at the original versions of our V server sources, and the fixes I'm about to suggest all seem to apply, but I'm not sure what else might need to be fixed -- the last guy to work on the server left before I arrived. Caveat Fixor. The fixes below were put in largely as a result of porting the server to a BIG_ENDIAN machine -- the 68020-based Tektronix 4301. I know this isn't the above person's problem, though I think someone did ask about the Sun. Note that some of the fixes below *are* more generally applicable... I strongly suggest that you use the debugging flags to isolate V server problems to a specific piece of code. I usually run my test server with -A in a jove i-process window, so that I can get a permanent record, and can easily kill the server. Anyway, here's my fixes in human readable form -- I'm afraid our server may be different enough that context diffs wouldn't be too useful... BTW, I found that it was a lot easier to work on the source after I folded all the source directories and the binary directory together into one big mess, UNIX-style, and rewrote the buildfile so that it would also work as a Makefile. Then I could easily build the server under UNIX before porting any of the rest of the V stuff... At least in the V server version we have, there was a horrid bug in Vikc.h . Around line 62 is the macro "SwapIKPacket". If your copy looks like > /* swaps a kPacket in place. Does not affect the appended segment, if any. */ > #define SwapIKPacket(p) \ > swabSmall( (char *)(p), 2*sizeof(short)); \ > ByteSwapLongInPlace( (char *)&((kPacket *)(p))->srcPid, \ > sizeof(kPacket)-2*sizeof(short)) it needs to look like > /* swaps a kPacket in place. Does not affect the appended segment, if any. */ > #define SwapIKPacket(p) \ > (swabSmall( (char *)(p), 2*sizeof(short)), \ > ByteSwapLongInPlace( (char *)&((kPacket *)(p))->srcPid, \ > sizeof(kPacket)-2*sizeof(short))) The reason is obvious, especially when you look at the reference to it in the server (ether10meg.c, ~line 298). Note, amusingly, that the right thing does coincidentally happen on machines where the server is DifferentIKCByteOrder than everyone else, which is normally the case... Also, there's an uninitialized error return from a function, which happens to be zero on our 750 often enough that things almost work. At the beginning of the code body for "ForkNewSession" (session.c, ~line 194), add the line "*error = OK;". Again, look at the call (server.c, ~line 126) to understand this. A bunch of files are missing the critical include of config.h . Identify and insert these, as this is where LITTLE_ENDIAN gets defined (or not) and so a bunch of the other header files depend on it... Finally, there's a bug in qk.c which was masked on vaxen by the fact that config.h was not included, and thus LITTLE_ENDIAN was undefined. If your qk.c has a switch that looks like > switch( req->requestCode ) it should be changed to read > switch( req->groupSelect ) after the include of config.h is inserted. With all of these fixes installed, if your packet filter works, you may be able to get your UNIX V Server up, even on a BIG_ENDIAN box. I also have some really simple utilities I wrote to test our packet filter port. If anybody is interested, I could post them here... Bart Massey Tektronix, Inc. TV Systems Engineering M.S. 58-639 P.O. Box 500 Beaverton, OR 97077 (503) 627-5320 UUCP: ..tektronix!videovax!bart DOMAIN: bart@videovax.tek.com
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads