memory leak in DBI XS bootstrap code
- From: E.Dan@xxxxxx (Ephraim Dan)
- Date: Thu, 29 Jun 2006 04:33:40 -0700
I am experiencing what I believe to be a memory leak in the DBI bootstrap code. This is a problem for me because I am embedding perl in a long-running program, and DBI is being loaded over and over, so my program grows and grows.
The problem appears to be in the following routines:
boot_DBI (in /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/DBI/DBI.so)
XS_DBI__install_method (in /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/DBI/DBI.so)
I am using DBI 1.51
The tool "valgrind" (http://valgrind.org) can be used to reproduce the leak using the following code:
---
File: embed_test.c
---
#include <EXTERN.h> /* from the Perl distribution */
#include <perl.h> /* from the Perl distribution */
static PerlInterpreter *my_perl; /*** The Perl interpreter ***/
EXTERN_C void xs_init (pTHX); /*** init dyn. loading ***/
int main(int argc, char **argv, char **env)
{
char *embedding[] = { "", "-e", "0" };
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, xs_init, 3, embedding, (char **)NULL);
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
perl_run(my_perl);
eval_pv("use DBI", TRUE);
perl_destruct(my_perl);
perl_free(my_perl);
}
---
File: Makefile
---
CC_OPTS = $(shell perl -MExtUtils::Embed -e ccopts)
LD_OPTS = $(shell perl -MExtUtils::Embed -e ldopts)
EXE = embed_test
$(EXE): xsinit.o embed_test.o
gcc -o $(EXE) embed_test.o xsinit.o $(LD_OPTS)
embed_test.o: embed_test.c
gcc -c embed_test.c $(CC_OPTS)
xsinit.o: xsinit.c
gcc -c xsinit.c $(CC_OPTS)
xsinit.c:
perl -MExtUtils::Embed -e xsinit -- -o xsinit.c
clean:
rm -f *.o xsinit.c $(EXE)
---
EOF
---
Can anyone suggest a fix for this? I'd be more than willing to take a patch to DBI 1.51 as soon as someone has one.
Thanks,
Ephraim Dan
- Follow-Ups:
- Re: memory leak in DBI XS bootstrap code
- From: Tim Bunce
- Re: memory leak in DBI XS bootstrap code
- Prev by Date: Re: Install Driver failed: Can't load Oracle.sl for Module DBD::Oracle
- Next by Date: Re: memory leak in DBI XS bootstrap code
- Previous by thread: Install Driver failed: Can't load Oracle.sl for Module DBD::Oracle
- Next by thread: Re: memory leak in DBI XS bootstrap code
- Index(es):
Relevant Pages
|