in reply to Re: Re: segmentation faults
in thread segmentation faults

It's not clear why XML::Parser is segfaulting if no calls are being made to it by that code. Segfaults usually indicate serious problems with external libraries, and aren't usually thrown by (stable) versions of perl unless it invokes them. I'm afraid diagnosis of this problem requires looking at more than just the code.

One possiblity that pops to my mind is that your version of XML::Parser was compiled with a particular version of the expat C libraries, and that the version of expat installed on your system is a different one.


If not P, what? Q maybe?
"Sidney Morgenbesser"

Replies are listed 'Best First'.
Re: Re: Re: Re: segmentation faults
by Sihal (Pilgrim) on Aug 21, 2002 at 15:05 UTC
    Well not very sure about it actually. the thing is that it will parse my doc correctly 1000 times, then segfault. one thing that strikes me now, is that when I use it with no signalling in my script, it parses 100 000 times without a glitch. could be that signalling stuff that makes it segfault, i'm gonna try... Another thought about it : if it segfaults, then I can trap this signal. if I do, will my script go back to normal or die cause its buggy ? I'm gonna try...
      Signals and perl don't mix very well.

      In perls < 5.8 (?), your signal could get caught in the middle of an opcode execution, so your signal handler could wind up "reentering" a non-reentrant part of the perl core, like the regex engine.

      In perls after 5.8, your signal will be deferred until the current op completes, but it could still interrupt system calls, and not restart them, I believe.

Re: Re: Re: Re: segmentation faults
by Sihal (Pilgrim) on Aug 22, 2002 at 07:58 UTC
    well I didn't know that it was also dangerous with the regexp engine. I'll be more cautious. Anyways Thanks to everybody, and if somebody that has the same problem reads this: one solution (without rewriting your script with a better logic) would be to ignore signals in subs containning dangerous code .