I think AuthCookie(DBI) is causing segfaults?

I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 00:16:05 von Tosh Cooey

I have a standard mod_perl setup, application is a server and mysql is
another.

I use AuthCookieDBI
http://cpansearch.perl.org/src/MATISSE/Apache2-AuthCookieDBI -2.05/lib/Apache2/AuthCookieDBI.pm
for authentication against the DB.

If the application has not been used for a while, a few hours, then when
a user tries to connect Apache segfaults. Here is debug output:

[Wed Nov 10 22:37:04 2010] [error] auth_type DISKO::AUTH
[Wed Nov 10 22:37:04 2010] [error]
r=Apache2::RequestRec=SCALAR(0x81f6f290) authtype=DISKO::AUTH
[Wed Nov 10 22:37:04 2010] [error] auth_name berlin3
[Wed Nov 10 22:37:04 2010] [error] ses_key_cookie
[Wed Nov 10 22:37:04 2010] [error] uri /clientID/index.pl
[Wed Nov 10 22:37:04 2010] [error] user authenticated as tosh
[Wed Nov 10 22:37:04 2010] [error] authorize() for /clientID/index.pl
[Wed Nov 10 22:37:04 2010] [error] authorize user=tosh type=DISKO::AUTH
[Wed Nov 10 22:37:04 2010] [error] requirement := valid-user,
[Wed Nov 10 22:37:04 2010] [notice] child pid 17510 exit signal
Segmentation fault (11)

DISKO::AUTH is where I override:
*Apache2::AuthCookieDBI::_dbi_connect = sub {
the connect() sub so I can do some on-the-fly modification of DSN names.

DBI->connect_cached is used if that is of importance.

My understanding of DBI is that things like ping() and reconnecting are
all taken care of automagically, so I'm a bit baffled by this,
especially as I have never had this happen on somewhat similar
application setups.

Is there something wrong with Apache2::AuthCookieDBI::_dbi_connect ?

Or should I just cron a task to ping the application every hour?

Thanks!

Tosh

--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Re: I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 00:30:21 von Perrin Harkins

Which MPM are you using?

- Perrin

On Wed, Nov 10, 2010 at 6:16 PM, Tosh Cooey wrote:
> I have a standard mod_perl setup, application is a server and mysql is
> another.
>
> I use AuthCookieDBI
> http://cpansearch.perl.org/src/MATISSE/Apache2-AuthCookieDBI -2.05/lib/Apa=
che2/AuthCookieDBI.pm
> for authentication against the DB.
>
> If the application has not been used for a while, a few hours, then when =
a
> user tries to connect Apache segfaults. =A0Here is debug output:
>
> [Wed Nov 10 22:37:04 2010] [error] auth_type DISKO::AUTH
> [Wed Nov 10 22:37:04 2010] [error] r=3DApache2::RequestRec=3DSCALAR(0x81f=
6f290)
> authtype=3DDISKO::AUTH
> [Wed Nov 10 22:37:04 2010] [error] auth_name berlin3
> [Wed Nov 10 22:37:04 2010] [error] ses_key_cookie
> [Wed Nov 10 22:37:04 2010] [error] uri /clientID/index.pl
> [Wed Nov 10 22:37:04 2010] [error] user authenticated as tosh
> [Wed Nov 10 22:37:04 2010] [error] authorize() for /clientID/index.pl
> [Wed Nov 10 22:37:04 2010] [error] authorize user=3Dtosh type=3DDISKO::AU=
TH
> [Wed Nov 10 22:37:04 2010] [error] requirement :=3D valid-user,
> [Wed Nov 10 22:37:04 2010] [notice] child pid 17510 exit signal Segmentat=
ion
> fault (11)
>
> DISKO::AUTH is where I override:
> *Apache2::AuthCookieDBI::_dbi_connect =3D sub {
> the connect() sub so I can do some on-the-fly modification of DSN names.
>
> DBI->connect_cached is used if that is of importance.
>
> My understanding of DBI is that things like ping() and reconnecting are a=
ll
> taken care of automagically, so I'm a bit baffled by this, especially as =
I
> have never had this happen on somewhat similar application setups.
>
> Is there something wrong with Apache2::AuthCookieDBI::_dbi_connect ?
>
> Or should I just cron a task to ping the application every hour?
>
> Thanks!
>
> Tosh
>
> --
> McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
>

Re: I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 00:58:23 von Tosh Cooey

Maybe Apache MPM prefork? How can I tell? Neither of
/mods-available|enabled contain any mpm_* mods so perhaps no MPM?

Sorry for my weak knowledge here :(

Tosh


On 11/11/10 12:30 AM, Perrin Harkins wrote:
> Which MPM are you using?
>
> - Perrin
>
> On Wed, Nov 10, 2010 at 6:16 PM, Tosh Cooey wrote:
>> I have a standard mod_perl setup, application is a server and mysql is
>> another.
>>
>> I use AuthCookieDBI
>> http://cpansearch.perl.org/src/MATISSE/Apache2-AuthCookieDBI -2.05/lib/Apache2/AuthCookieDBI.pm
>> for authentication against the DB.
>>
>> If the application has not been used for a while, a few hours, then when a
>> user tries to connect Apache segfaults. Here is debug output:
>>
>> [Wed Nov 10 22:37:04 2010] [error] auth_type DISKO::AUTH
>> [Wed Nov 10 22:37:04 2010] [error] r=Apache2::RequestRec=SCALAR(0x81f6f290)
>> authtype=DISKO::AUTH
>> [Wed Nov 10 22:37:04 2010] [error] auth_name berlin3
>> [Wed Nov 10 22:37:04 2010] [error] ses_key_cookie
>> [Wed Nov 10 22:37:04 2010] [error] uri /clientID/index.pl
>> [Wed Nov 10 22:37:04 2010] [error] user authenticated as tosh
>> [Wed Nov 10 22:37:04 2010] [error] authorize() for /clientID/index.pl
>> [Wed Nov 10 22:37:04 2010] [error] authorize user=tosh type=DISKO::AUTH
>> [Wed Nov 10 22:37:04 2010] [error] requirement := valid-user,
>> [Wed Nov 10 22:37:04 2010] [notice] child pid 17510 exit signal Segmentation
>> fault (11)
>>
>> DISKO::AUTH is where I override:
>> *Apache2::AuthCookieDBI::_dbi_connect = sub {
>> the connect() sub so I can do some on-the-fly modification of DSN names.
>>
>> DBI->connect_cached is used if that is of importance.
>>
>> My understanding of DBI is that things like ping() and reconnecting are all
>> taken care of automagically, so I'm a bit baffled by this, especially as I
>> have never had this happen on somewhat similar application setups.
>>
>> Is there something wrong with Apache2::AuthCookieDBI::_dbi_connect ?
>>
>> Or should I just cron a task to ping the application every hour?
>>
>> Thanks!
>>
>> Tosh
>>
>> --
>> McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
>>
>

--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Re: I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 16:07:44 von Tuomo Salo

On Thu, Nov 11, 2010 at 12:58:23AM +0100, Tosh Cooey wrote:
> Maybe Apache MPM prefork? How can I tell?

Running httpd with the -l (ell) command line option will print
a list of module names. If you see "prefork.c", you are using
prefork, and if you see "worker.c", you are using the threaded
MPM.

-Tuomo

Re: I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 17:38:58 von Tosh Cooey

Hi Tuomo, thank-you that was really helpful.

I'm running prefork it seems. Here's the list if that's helpful:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

Also perhaps helpful is that I'm on Ubuntu 9.04 Jaunty with the latest
libdbd-mysql-perl 4.008-1 which was a pain in the a55 to install and was
only done because doing a CPAN install of DBD::mysql seemed all but
impossible on this server.

And again, this ONLY happens when the application has not made any MySQL
requests for a few hours, or possibly when I restart the MySQL server
but I can't confirm this as consistent.

The "fix" is to hit the server until all the old child processes have
crashed and then new ones are spawned, usually only about six processes,
then everything works fine until the next time.

Tosh


On 11/11/10 4:07 PM, Tuomo Salo wrote:
> On Thu, Nov 11, 2010 at 12:58:23AM +0100, Tosh Cooey wrote:
>> Maybe Apache MPM prefork? How can I tell?
>
> Running httpd with the -l (ell) command line option will print
> a list of module names. If you see "prefork.c", you are using
> prefork, and if you see "worker.c", you are using the threaded
> MPM.
>
> -Tuomo
>

--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Re: I think AuthCookie(DBI) is causing segfaults?

am 11.11.2010 18:25:32 von Vincent Veyron

--=-Jbi6hwyZu5yosZ+Rs/qZ
Content-Type: text/plain; charset="ISO-8859-15"
Content-Transfer-Encoding: 8bit

Le jeudi 11 novembre 2010 à 00:58 +0100, Tosh Cooey a écrit :

> Maybe Apache MPM prefork? How can I tell?



Please read the section "How to Report Problems" on this page :

http://perl.apache.org/docs/1.0/guide/help.html


That should help quite a bit.


--
Vincent Veyron
http://marica.fr/
Logiciel de gestion des dossiers de contentieux et d'assurance pour le service juridique

--=-Jbi6hwyZu5yosZ+Rs/qZ
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit








Le jeudi 11 novembre 2010 à 00:58 +0100, Tosh Cooey a écrit :



Maybe Apache MPM prefork?  How can I tell? 






Please read the section "How to Report Problems" on this page :









That should help quite a bit.











--
Vincent Veyron

Logiciel de gestion des dossiers de contentieux et d'assurance pour le service juridique





--=-Jbi6hwyZu5yosZ+Rs/qZ--

Re: Re: I think AuthCookie(DBI) is causing segfaults?

am 13.11.2010 14:15:23 von Tosh Cooey

I'm not quite ready to declare victory, but I think installing DBD from
source and getting more recent versions of DBD was the problem, and it
seems there's a lot of little things going wrong with DBD.

What's going on there? When did DBD::mysql become so problematic? It
used to run so flawless, even back in the day when you would have to
choose between mysql and msql during the install...

Anyway if anyone is having similar problems then try upgrading from source.

Tosh


On 7/22/64 8:59 PM, Tosh Cooey wrote:
> Hi Tuomo, thank-you that was really helpful.
>
> I'm running prefork it seems. Here's the list if that's helpful:
> core.c
> mod_log_config.c
> mod_logio.c
> prefork.c
> http_core.c
> mod_so.c
>
> Also perhaps helpful is that I'm on Ubuntu 9.04 Jaunty with the latest
> libdbd-mysql-perl 4.008-1 which was a pain in the a55 to install and was
> only done because doing a CPAN install of DBD::mysql seemed all but
> impossible on this server.
>
> And again, this ONLY happens when the application has not made any MySQL
> requests for a few hours, or possibly when I restart the MySQL server
> but I can't confirm this as consistent.
>
> The "fix" is to hit the server until all the old child processes have
> crashed and then new ones are spawned, usually only about six processes,
> then everything works fine until the next time.
>
> Tosh
>
>
> On 11/11/10 4:07 PM, Tuomo Salo wrote:
>> On Thu, Nov 11, 2010 at 12:58:23AM +0100, Tosh Cooey wrote:
>>> Maybe Apache MPM prefork? How can I tell?
>>
>> Running httpd with the -l (ell) command line option will print
>> a list of module names. If you see "prefork.c", you are using
>> prefork, and if you see "worker.c", you are using the threaded
>> MPM.
>>
>> -Tuomo
>>
>

--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Re: Re: I think AuthCookie(DBI) is causing segfaults?

am 13.11.2010 14:31:28 von Clinton Gormley

On Sat, 2010-11-13 at 14:15 +0100, Tosh Cooey wrote:
> I'm not quite ready to declare victory, but I think installing DBD from
> source and getting more recent versions of DBD was the problem, and it
> seems there's a lot of little things going wrong with DBD.
>
> What's going on there? When did DBD::mysql become so problematic? It
> used to run so flawless, even back in the day when you would have to
> choose between mysql and msql during the install...

Are you using the same version of Perl and gcc that all the rest of your
stack are using?

I compile the whole stack from source, and have none of the problems
that you have described.

(The only gotcha with DBD is don't use a dbh in the parent process,
during startup, then try to reuse it in the child processes. That will
cause a segfault)

clint