[comp.sys.ncr] Weirdness with passwd on a Tower

jhensley@isis.cs.du.edu (John 'Hawg' Hensley) (05/09/91)

I'm having some trouble with 'passwd', which I was hoping someone more
familiar with Towers could help with. I haven't worked with them much at
all, and (as will shortly be obvious) my kernel and system-type 
programming experience is fairly limited.

It always exits saying 'bad system call'. If I run it through adb or
sdb, though, it works through two of these calls and then works OK. 
The password gets changed and everything's hunky-dory.

The bad system call error is:

Bad system call (12) (sig 12)
syscall: address 0x2986

and it's the same both times when run through sdb. In the Programmer's
Reference error 12 is ENOMEM, which could have three causes:
1) the maximum system space (MAXMEM) is too small for the process. For
   'passwd'? Don't think so, but checking MAXMEM with a short C program
   (just prints the value of MAXMEM from /usr/include/param.h) gives
   a size of 7168. Of course, I dunno what 7168 denotes, but it seems
   small. The user stack is 0xE00000, if that helps or has anything to
   do with it. Seems awfully large to me.
2) the program uses too many segmentation registers? I really have no
   clue (even less than on the other possibilities :) about this one,
   but stepping through it with adb shows a couple of places with
   d1-3 and a1-3 all having something done with 'em (someone who knows
   assembly help me!); could these be 'too many' segmentation registers?
3) not enough swap space. I don't think so, as I went through the 
   calculation of swap space needed from the Performance Tutorial Manual
   and the swap partition was perfect. But hey, I've been wrong before...

If anyone has any ideas why such a simple, necessary program isn't working,
or even better, knows what I should do about it, please clue me in!

John