[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freeradius-devel
Subject:    Re: Error: CHILD: exit on signal (11)
From:       "Jared Quinn" <xean () coscom ! net>
Date:       2002-08-23 16:18:58
[Download RAW message or body]

Todd,

I was consistantly getting this behaviour for sometime running against a
postgreSQL database...

I found that connections direct to the database with postgreSQL (as opposed
to using tcp sockets) seemed to reduce the problem dramatically - I cant
remember the last time it happened to my server.

I still do not know if that fixed it for sure - but every attempt at
debugging it I tried didn't uncover anything that would point to it
happening...

jared.

----- Original Message -----
From: "Todd T. Fries" <todd@fries.net>
To: <freeradius-users@lists.cistron.nl>
Cc: <freeradius-devel@lists.cistron.nl>
Sent: Thursday, August 22, 2002 6:39 AM
Subject: Re: Error: CHILD: exit on signal (11)


> Strange.  I've insterted a function to print the sqlsocket->row[0] inside
> mysql_sql.c:rlm_sql_fetch_row() and it works ok, same address as is passed
> back through the structure, and then it fails with the same printing
> function (read 'radlog()') ..
>
> Perhaps electric fence is tricking me or something else I'm missing is
going
> on here.
> --
> Todd Fries .. todd@fries.net
>
> (last updated $ToddFries: signature.p,v 1.2 2002/03/19 15:10:18 todd Exp
$)
>
> Penned by Todd T. Fries on Wed, Aug 21, 2002 at 02:36:08PM -0500, we have:
> | The code path this follows is ..
> |
> | rlm_sql.c:static int rlm_sql_authorize(void *instance, REQUEST *
request) {
> | [..]
> |   ret = rlm_sql_fetch_row(sqlsocket, inst);
> |     .... sql_mysql.c:int sql_fetch_row(SQLSOCK * sqlsocket, SQL_CONFIG
*config) {
> |     rlm_sql_mysql_sock *mysql_sock = sqlsocket->conn;
> |
> |             sqlsocket->row = mysql_fetch_row(mysql_sock->result);
> |
> |             if (sqlsocket->row == NULL) {
> |                     return
sql_check_error(mysql_errno(mysql_sock->sock));
> |             }
> |             return 0;
> |          }
> |     ....
> |
> |    if (ret) {
> |             radlog(L_ERR, "rlm_sql_authorize: query failed");
> |             return RLM_MODULE_FAIL;
> |    }
> |
> |    row = sqlsocket->row;
> |    if (row == NULL) {
> |             radlog(L_ERR, "rlm_sql_authorize: no rows returned from
query (no such user)");
> |             return RLM_MODULE_OK;
> |    }
> |
> |    if (row[0] == NULL) {
> |             radlog(L_ERR, "rlm_sql_authorize: row[0] returned NULL.");
> |             return RLM_MODULE_OK;
> |    }
> |    if ((passwd_item = pairmake("User-Password",row[0],T_OP_SET)) !=
NULL)
> |             pairadd(&request->config_items,passwd_item);
> |
> |
> | Now please help me understand if I'm understanding this right.  It would
> | appear some kindof failure is happening in the mysql_fetch_row, and it
is
> | instead of returning NULL, returning free'ed memory.  At least my
research
> | suggests it SHOULD return NULL on any failure or valid, allocated memory
> | on success ...
> |
> | http://www.mysql.com/doc/en/mysql_fetch_row.html
> |
> | On a side note, perhaps I should release the socket only when the access
of
> | the 'row' pointer is done?  Or perhaps the api should be altered (again)
to
> | pass a pointer array into fetch_row so that the socket can be released
without
> | the potential for over-writing prior results?
> | --
> | Todd Fries .. todd@fries.net
> |
> | (last updated $ToddFries: signature.p,v 1.2 2002/03/19 15:10:18 todd Exp
$)
> |
> | Penned by Todd T. Fries on Wed, Aug 21, 2002 at 01:54:34PM -0500, we
have:
> | | ..more..
> | |
> | | (gdb) bt full
> | | #0  rlm_sql_authorize (instance=0x42735fd0, request=0x42a5bf74)
> | |     at rlm_sql.c:492
> | |         check_tmp = (VALUE_PAIR *) 0x0
> | |         reply_tmp = (VALUE_PAIR *) 0x0
> | |         passwd_item = (VALUE_PAIR *) 0x42a81034
> | |         found = 1
> | |         sqlsocket = (SQLSOCK *) 0x427d1fe8
> | |         row = 0x42a81034
> | |         querystr = "SELECT Value,Attribute FROM radcheck WHERE
UserName = 'toddtest' AND ( Attribute = 'User-Password' OR Attribute =
'Password' OR Attribute = 'Crypt-Password' ) ORDER BY Attribute
DESC\000ergroup.GroupName"...
> | |         ret = 0
> | |         sqlusername = "toddtest", '\000' <repeats 509 times>
> | | #1  0x080569f0 in call_modsingle (component=1, sp=0x42729fcc,
> | |     request=0x42a5bf74, default_result=6) at modcall.c:211
> | |         component = 1
> | |         sp = (modsingle *) 0x42729fcc
> | |         request = (REQUEST *) 0x42a5bf74
> | |         myresult = 1118158708
> | | #2  0x08056b68 in modcall (component=1, c=0x42729fcc,
request=0x42a5bf74)
> | |     at modcall.c:315
> | |         sp = (modsingle *) 0x42a81034
> | |         c = (modcallable *) 0x42729fcc
> | | ---Type <return> to continue, or q <return> to quit---q
> | | Quit
> | | (gdb) print row
> | | $1 = 0x42a81034
> | | (gdb) print *row
> | | $2 = 0x42a81040 "XKgM9N6tR3Xw2"
> | | (gdb) print row[0]
> | | $3 = 0x42a81040 "XKgM9N6tR3Xw2"
> | | (gdb)
> | |
> | | --
> | | Todd Fries .. todd@fries.net
> | |
> | | (last updated $ToddFries: signature.p,v 1.2 2002/03/19 15:10:18 todd
Exp $)
> | |
> | | Penned by Alan DeKok on Mon, Aug 19, 2002 at 02:42:19PM -0400, we
have:
> | | | "Todd T. Fries" <tfries@mrleng.com> wrote:
> | | | > It seems to happen when the database is doing a hot-backup and is
> | | | > unresponsive/slow for a few (10-15) minutes.
> | | |
> | | |   If authorization depends on that database, and it goes down for
> | | | 10-15 minutes, then there's not much point in running the server
> | | | during that time.
> | | |
> | | |   If the MySQL server really does disappear during backups, I'd
> | | | suggest doing something else to keep the RADIUS alive...
> | | |
> | | |
> | | | > Mon Aug 19 00:16:47 2002 : Error: rlm_sql:  There are no DB
handles to use!
> | | | > Mon Aug 19 00:17:37 2002 : Error: CHILD: exit on signal (11)
> | | |
> | | |   Hmm.. that's an unchecked de-referencing of a NULL pointer
> | | | somewhere.  Without more information, it's hard to know where.
> | | |
> | | |   Alan DeKok.
> | | |
> | | | -
> | | | List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/users.html
> | |
> | | -
> | | List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/users.html
> |
> | -
> | List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/users.html
>
> -
> List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/devel.html
>


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic