http://qs1969.pair.com?node_id=517167

jithoosin has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks,
i am getting an error message like thisfree(): invalid pointer 0x804c690!when i execute a C file which calls a perl program which has "USE DBI" inside it.The C code is given below
#include<stdio.h> #include <EXTERN.h> #include <perl.h> static PerlInterpreter *my_perl; /*----------------------------------------------------------- for dynamic loading of perlmodules which inturn uses C libraries -----------------------------------------------------------*/ static void xs_init (pTHX); EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); EXTERN_C void xs_init(pTHX) { char *file = __FILE__; newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); } /*-------------------------------------------------------------*/ void CheckBrowserCompat(char *fileName) { int count; dSP; ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(newSVpv(fileName,0))); PUTBACK; count = call_pv("MAIN", G_ARRAY); SPAGAIN; printf("COUNT : %d\n",count); while(count--!=0) printf("%s",POPp); PUTBACK; FREETMPS; LEAVE; } int main (int argc, char **argv, char **env) { char *my_argv[] = { "", "browserCompat.pl" }; char fileName[]= "toolbox.html"; my_perl = perl_alloc(); perl_construct( my_perl ); perl_parse(my_perl, xs_init, 2, my_argv, NULL); //perl_run(my_perl); CheckBrowserCompat(fileName); perl_destruct(my_perl); perl_free(my_perl); }
Could any one help me.But the program is working correctly and produces the correct output. But along with output it produces the error message.I need some method to avoid this error. Also i please tell me why "perl_run" is used.