rlm_perl.c questions

Boian Jordanov bjordanov at orbitel.bg
Thu Jan 6 10:26:07 CET 2011


On Jan 6, 2011, at 1:51 AM, Anatoly Ivanov wrote:

> Hi everybody,
> 
> I have a couple of questions regarding modules/rlm_perl/rlm_perl.c:
> perl_detach(...):
> 
> 1.  Is it correct to call PERL_SYS_TERM in detach()?
> 
> I am experiencing quite random and unpredictable segfaults with radius 2.1.8
> and rlm_perl, and it really looks like memory allocation/multithreading
> error. I have very similar system running radius 2.1.7, and it works just
> fine. The most significant difference in rlm_perl between 2.1.7 and 2.1.8 is
> that PERL_SYS_TERM call.
> 
> According to the documentation
> (http://perldoc.perl.org/perlembed.html), PERL_SYS_TERM
> should be called only once. In our case, it is called once per detaching
> thread.

In fact it is called only once in the end of life of module. You can see that when a thread is destroyed is called 

/* Create Key */
static void rlm_perl_make_key(pthread_key_t *key)
{
        pthread_key_create(key, rlm_destroy_perl);
}

rlm_destroy_perl which destroy only particular interp 

So the best will be to produce gdb trace file as i already wrote in my previous mail.


> 
> 2. This code:
> 
> embed = rad_malloc(4*(sizeof(char *)));
> memset(embed, 0, sizeof(4*(sizeof(char *))));
> 
> looks like a misprint to me. Not that it would cause any real errors, but it
> is inaccurate anyway.
> 
> Thank you,
> Anatoly.
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html

Best Regards,
Boian Jordanov
Head of Voice Department
tel. +359 2 4004 723
tel. +359 2 4004 002










More information about the Freeradius-Devel mailing list