Hi ! > and as suggested : > LIBXML2.DLL VERSION 2.4.26 > XML::LibXML version 1.52 >I've tested with libxml2-2.4.23 and XML::LibXML 1.53 on linux >and it works >just fine. I tested it with libxml2-2.4.23 and XML::LibXML 1.52 and it still segfaults. >this looks suspicious as address: 0xabababab, as you have >traced it. So it >could be a bug in the ActiveState's perl or is it a standard >one? it is perl 58 cpan source I have rebuilt all myself debug but the bug also happens with asperl 58 here is more precicion, I have followed the trace starting with perl_croak : segfault Perl_sv_setpvn(interpreter * 0x00e7f024, sv * 0xabababab, Perl_sv_vsetpvfn(interpreter * 0x00e7f024, sv * 0xabababab, Perl_vmess(interpreter * 0x00e7f024, const char * 0x2818fac0 Perl_vcroak(interpreter * 0x00e7f024, const char * 0x2818fac Perl_croak(interpreter * 0x00e7f024, const char * 0x2818fac0 `string') ---------------------------------------------------------------- ----------- in perl_croak Perl_croak(interpreter * 0x00e1a024, const char * 0x2818fac0 `string') line 1350 + 17 bytes [...] void Perl_croak(pTHX_ const char *pat, ...) { va_list args; va_start(args, pat); vcroak(pat, &args); <<<< LINE CALLED /* NOTREACHED */ va_end(args); } [...] variable state: + &args 0x0006efe4 + args 0x0006eff8 "p" + pat 0x2818fac0 "Bizarre SvTYPE [%ld]" ---------------------------------------------------------------- ---- in perl_vcroak Perl_vcroak(interpreter * 0x00e1a024, const char * 0x2818fac0 `string', char * * 0x0006efe4) line 1241 + 17 bytes void Perl_vcroak(pTHX_ const char* pat, va_list *args) { char *message; HV *stash; GV *gv; CV *cv; SV *msv; STRLEN msglen; if (pat) { msv = vmess(pat, args); <<<<<<LINE CALLED pat and args unchanged if (PL_errors && SvCUR(PL_errors)) { sv_catsv(PL_errors, msv); message = SvPV(PL_errors, msglen); SvCUR_set(PL_errors, 0); } else in perl_vmess Perl_vmess(interpreter * 0x00e7f024, const char * 0x2818fac0 `string', char * * 0x0006efe4) line 1096 [...] Perl_vmess(pTHX_ const char *pat, va_list *args) { (***) SV *sv = mess_alloc(); static char dgd[] = " during global destruction.\n"; COP *cop; sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null (bool*)); if (!SvCUR(sv) || *(SvEND(sv) - 1) != '\n') { /* [...] ( *** )sv is set to point to 0xabababab at this point of program so maybe the mess_alloc() function has failed in some way inside mess_alloc(): STATIC SV * S_mess_alloc(pTHX) { 1 SV *sv; 2 XPVMG *any; 3 if (!PL_dirty) return sv_2mortal(newSVpvn("",0)); 4 if (PL_mess_sv) return PL_mess_sv; /* Create as PVMG now, to avoid any upgrading later */ New(905, sv, 1, SV); Newz(905, any, 1, XPVMG); SvFLAGS(sv) = SVt_PVMG; SvANY(sv) = (void*)any; SvREFCNT(sv) = 1 << 30; /* practically infinite */ PL_mess_sv = sv; return sv; } at line 1 sv gets the following value : - sv 0x00e7f470 sv_any 0xabababab sv_refcnt 2880154539 sv_flags 2880154539 function is exited by line 4 PL_mess_sv but I dont see its value anywhere hope this is clear thanks pascal
Accédez au courrier électronique de La Poste : www.laposte.net ; 3615 LAPOSTENET (0,13 €/mn) ; tél : 08 92 68 13 50 (0,34€/mn)"