[Asterisk-Dev] app_meetme crash

Fabian Stelzer fabian at gigacodes.de
Wed Jun 2 15:24:46 MST 2004


Yeah the "if" is normally not needed!
can you provide more information about the situation of the crash? (how many
users where in, who left or anything else (your usage of meetme)).
perhaps i can reproduce this and then correctly fix it! (i made the patch)

Regards
Fabe

----- Original Message -----
From: "Rob Gagnon" <rob at networkip.net>
To: <asterisk-dev at lists.digium.com>
Sent: Thursday, June 03, 2004 12:08 AM
Subject: Re: [Asterisk-Dev] app_meetme crash


> Hmmm....
>
> If  user->prevuser is NULL, then it SHOULD be the head of the list, in
which
> case the "if (user == cur->firstuser)" statement SHOULD have kicked in.
>
> So... this leads me to believe there is another bug some place else
actually
> causing the problem.
>
> I am not that familiar with the inerds of app_meetme, but from what I know
> of doubly-linked-lists, the if-statement you added should not be needed if
> the list integrity is maintained.
>
> Rob
> ----- Original Message -----
> From: "Jared Mauch" <jared at puck.nether.net>
> To: <asterisk-dev at lists.digium.com>
> Sent: Wednesday, June 02, 2004 4:29 PM
> Subject: [Asterisk-Dev] app_meetme crash
>
>
> >
> > See the patch, this will prevent it from coring, but could lead
> > to other issues.
> >
> > - Jared
> >
> > #0  0x003d2c1e in conf_run (chan=0x88aa400, conf=0x86ee8d8,
confflags=536)
> >     at app_meetme.c:942
> > 942                                     user->prevuser->nextuser =
> user->nextuser;
> > (gdb) print *user
> > $1 = {user_no = 1, prevuser = 0x0, nextuser = 0x88beba8, userflags =
536,
> >   adminflags = 0, chan = 0x88aa400,
> >   usrvalue = "test", '\0' <repeats 45 times>, jointime = 2586960}
> > (gdb) print *user->prevuser
> > Cannot access memory at address 0x0
> > (gdb) print *user->nextuser
> > $2 = {user_no = 2, prevuser = 0x0, nextuser = 0x8694058, userflags =
536,
> >   adminflags = 0, chan = 0x8878370,
> >   usrvalue = "test", '\0' <repeats 45 times>, jointime = 2586960}
> > (gdb) print user->nextuser->prevuser
> > $3 = (struct ast_conf_user *) 0x0
> > (gdb) print user->prevuser
> > $4 = (struct ast_conf_user *) 0x0
> > (gdb) print user->nextuser
> > $5 = (struct ast_conf_user *) 0x88beba8
> > (gdb) print user->prevuser
> > $6 = (struct ast_conf_user *) 0x0
> >
> > diff -u -r1.35 app_meetme.c
> > --- app_meetme.c        1 Jun 2004 22:54:18 -0000       1.35
> > +++ app_meetme.c        2 Jun 2004 21:27:24 -0000
> > @@ -939,7 +939,9 @@
> >                                 cur->lastuser = cur->lastuser->prevuser;
> >                         } else {
> >                                 user->nextuser->prevuser =
user->prevuser;
> > -                               user->prevuser->nextuser =
user->nextuser;
> > +                               if (user->prevuser != NULL) {
> > +                                       user->prevuser->nextuser =
> user->nextuser;
> > +                               }
> >                         }
> >                         /* Return the number of seconds the user was in
> the conf */
> >                         sprintf(meetmesecs, "%i", (int)
(user->jointime -
> time(NULL)));
> >
> > --
> > Jared Mauch  | pgp key available via finger from jared at puck.nether.net
> > clue++;      | http://puck.nether.net/~jared/  My statements are only
> mine.
> > _______________________________________________
> > Asterisk-Dev mailing list
> > Asterisk-Dev at lists.digium.com
> > http://lists.digium.com/mailman/listinfo/asterisk-dev
> > To UNSUBSCRIBE or update options visit:
> >    http://lists.digium.com/mailman/listinfo/asterisk-dev
>
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>




More information about the asterisk-dev mailing list