2.0.5a core dump in setup_groups()

Ken Weaverling weave at hopi.dtcc.edu
Fri Jul 23 15:38:16 GMT 1999


A few weeks ago, I posted here that 2.0.4b dumped core on me in getpwent
calls in certain rare, but reproducable cases. getpwent was triggering a
realloc() which cause the crash.

Well, I noticed a lot of work in that area in 2.0.5a but guess what, it
now dumps core in a different area, relating to getgrent and initgroups.
Why, I have no idea.  Curiously though, it's using the same reproducable
set of steps.  It seems to work all but a few others.

This is on an m88K DG/UX 4.11MU05 system.

Here's the stack trace:

(dbx) where
Frame 0, pc 0x800535c4 (_kill+12)
Frame 1, pc 0x80043ca8 (abort+80)
Frame 2, line 2430, file util.c
Frame 3, line 47, routine fault_report(sig=10), file fault.c
Error: General register 2 is not readable.
Frame 4, line 66, routine sig_fault(sig=), file fault.c
Frame 5, pc 0x8007e6f8 (__sigacthandler2+64)
Frame 6, pc 0x80060bbc (realloc+2356)
Frame 7, pc 0x80060a1c (realloc+1940)
Frame 8, pc 0x800606c0 (realloc+1080)
Frame 9, pc 0x80060eb4 (realloc+3116)
Frame 10, pc 0x800600f0 (free+544)
Frame 11, pc 0x8005fe94 (malloc+76)
Frame 12, pc 0x80084bd8 (__dg_yp_next+2016)
Frame 13, pc 0x80084f2c (__dg_yp_match+676)
Frame 14, pc 0x8007375c (_cuserid+444)
Frame 15, pc 0x80073990 (__dg_get_sup_groups+280)
Frame 16, pc 0x8007384c (initgroups+84)
Frame 17, line 162, routine setup_groups(user=0x001faca0 -> "weave", uid=100, gid=111, p_ngroups=0x0021a658, p_groups=0x0021a65c), file password.c
Frame 18, line 438, routine make_connection(service=0xefffebc8 -> "dos", user=0xefffefc8 -> "weave", password=0x00000000, pwlen=0, dev=0x0021a648 -> "", vuid=100u, ecode=0xeffffbc8), file service.c
Frame 19, line 316, routine reply_tcon_and_X(conn=0x00220711, inbuf=0x002206e1 -> "", outbuf=0x00230af1 -> "", length=64, bufsize=2920), file reply.c
Frame 20, line 539, routine switch_message(type=0, inbuf=0x002206e1 -> "", outbuf=0x00230af1 -> "", size=64, bufsize=2920), file process.c
Frame 21, line 574, routine construct_reply(inbuf=0x002206e1 -> "", outbuf=0x00230af1 -> "", size=64, bufsize=2920), file process.c
Frame 22, line 642, routine process_smb(inbuf=0x002206e1 -> "", outbuf=0x00230af1 -> ""), file process.c
Frame 23, line 1050, routine smbd_process(), file process.c
Frame 24, line 724, routine main(argc=2, argv=0xeffffe10), file server.c
Frame 25, pc 0x104124 (_start+416)

    157 {
    158         int i,ngroups;
    159         gid_t grp = 0;
    160         gid_t *groups = NULL;
    161 
*   162         if (-1 == initgroups(user,gid))
    163         {
    164                 DEBUG(0,("Unable to initgroups. Error was %s\n", strerror(errno) ));
    165                 if (getuid() == 0)
    166                 {
    167                         if (gid < 0 || gid > 32767 || uid < 0 || uid > 32767)
(dbx) print user
user = 0x001faca0 -> "weave"
(dbx) print gid
gid = 111




More information about the samba-technical mailing list