[nas] Bug in server if client gone?

Peter Berg Larsen pebl at math.ku.dk
Wed Sep 26 15:31:16 MDT 2001



Hi, 

First a question: is it leagal to call AuSoundPlayFromBucket more than
once on the same bucket? I hear it as played once. I am using nas 1.4.2
on a sun ray 1.

If it is legal then nas seqfaults with this trace:


[1] WriteToClient(who = 0x6dcb0, count = 32, buf = 0xffbeee54 "^B"),line 711 in "io.c"
[2] WriteEventsToClient(pClient = 0x6dcb0, count = 1, events = 0x74dd0),line 77 in "events.c"
[3] WriteAuEventsToClient(pClient = 0x6dcb0, count = 1, events =0x74dd0), line 79 in "auevents.c"
[4] ProcessAudioEvents(), line 148 in "auevents.c"
[5] Dispatch(), line 152 in "dispatch.c"
[6] main(argc = 3, argv = 0xffbef27c), line 177 in "main.c"

where who is 

*who = {
    index             = 1
    clientAsMask      = 4194304U
    requestBuffer     = 0x7a408 "!"
    osPrivate         = (nil)
    swapped           = 1
    pSwapReplyFunc    = 0x22f78 = &AuSwapBucketAttributesWrite()
    errorValue        = 0
    sequence          = 23
    closeDownMode     = 1
    clientGone        = 1
    noClientException = 0
    numSaved          = 0
    screenPrivate     = ((nil), (nil), (nil))
    requestVector     = 0x5f2a8
    req_len           = 1U
    big_requests      = 0
}


Note the osPrivate is nil, but WriteToClient tries to:


#if !defined(AMOEBA) && !defined(_MINIX)
int
WriteToClient (who, count, buf)
    ClientPtr who;
    char *buf;
    int count;
{
    OsCommPtr oc = (OsCommPtr)who->osPrivate;
    register ConnectionOutputPtr oco = oc->output;
    int padBytes;
[...]


Now is the fault that osPrivat is nil or that none of the called functions
checks whether the clientGone is set?

Peter
--
E-Mail:       pebl at math.ku.dk 
Real name:    Peter Berg Larsen 
Where:        Department of Computer Science, Copenhagen Uni., Denmark




More information about the Nas mailing list