Loading ...
Sorry, an error occurred while loading the content.

147Re: [soaplite] Segmentation fault after multiple method calls on a remote object

Expand Messages
  • Sean.Meisner@VerizonWireless.com
    Mar 28, 2001
    • 0 Attachment
      Hi Paul,
      I'd probably be more inclined to pass this off to the CGI::Carp people, as the
      root
      of the problem seems to me to be the fact that their die handling routine can
      potentially
      mess up fatally when it gets passed a string of XML. This shouldn't be
      happening..
      CGI::Carp itself should be more robust. I'm not sure if there is a mailing list
      for those
      CGI modules? There must be, but I'm not subscribed to it.. perhaps someone here
      could forward this discussion to the appropriate list or bug-report address?

      Cheers,

      Sean Meisner





      Paul Kulchenko <paulclinger@...> on 03/28/2001 10:59:41 AM

      Please respond to soaplite@yahoogroups.com



      To: soaplite@yahoogroups.com
      cc: (bcc: Sean Meisner/Great Lakes/AirTouch)
      bcc: Sean Meisner/Great Lakes/AirTouch

      Subject: Re: [soaplite] Segmentation fault after multiple method calls on a
      remote object




      Hi, Sean!

      Though you're right and that's not a problem in SOAP::Lite code,
      would be better to fix it on SOAP::Lite level. Actually fix is simple
      (I faced this problem in couple of other applications and it
      's used in MAILTO module):

      you need to override DIE handler temporarely:

      my $parsed = eval { local $SIG{__DIE__};
      $self->parser->decode(shift) };

      instead of

      my $parsed = $self->parser->decode(shift);

      I'll add it into the code, so next version will be more robast in
      this aspect.

      you may do it on application level also, just warp your client call
      in similar eval:

      eval { local $SIG{__DIE__};
      # you SOAP call is here
      1;
      } or die;

      all die's inside eval will be catched by default (or specified)
      handler and last die (with message from eval) will be catched by
      CGI::Carp, so everything should be fine. Thinking about this second
      solution maybe it's not a good idea to wrap it inside the
      SOAP::Lite's code. I need to think about it. Let me know how it goes.

      Best wishes, Paul.

      --- Sean.Meisner@... wrote:
      >
      > Hi all,
      >
      > You may remember I posted to the SOAP::Lite mailing list last week
      > about
      > odd segmentation faults in a client process. Here is what I've
      > discovered:
      > In short, version 1.20 of CGI::Carp has an incompatibilty with
      > version 2.30 of
      > XML::Parser::Expat.pm . My SOAP::Lite client is a CGI script.
      > CGI::Carp
      > overrides the default handler for die. XML::Parser::Expat.pm has a
      > line
      > where it is expecting to die in an eval, every time a string is
      > passed to
      > its parse() method. The newest CGI::Carp *can't* properly handle
      > the XML
      > string it gets passed when XML::Parser::Expat::parse() executes the
      > line that
      > generates a die signal.
      >
      > That's a convoluted explanation but its as simple as I could make
      > it. So
      > the problem I encountered is not really in the SOAP::Lite code, but
      > it could
      > potentially affect anyone who wants to use a CGI script as a
      > SOAP::Lite
      > *client*,
      > and it doesn't cause the process to crash right away, you may be
      > able to make
      > a bunch of calls before the process will get a segmentation fault.
      > The
      > workaround
      > is to use an older version of CGI::Carp (I have 1.14 now, the
      > version causing
      > the
      > problem is 1.20), OR don't use CGI::Carp in your CGI script at all.
      >
      > Cheers,
      >
      > Sean Meisner
      >
      >
      >
      >
      >
      >
      > Sean.Meisner@... on 03/22/2001 11:07:03 AM
      >
      > Please respond to soaplite@yahoogroups.com
      >
      >
      >
      > To: soaplite@yahoogroups.com
      > cc: (bcc: Sean Meisner/Great Lakes/AirTouch)
      > bcc: Sean Meisner/Great Lakes/AirTouch
      >
      > Subject: Re: [soaplite] Segmentation fault after multiple method
      > calls on a
      > remote object
      >
      >
      >
      >
      >
      > Hi Paul,
      > I run server and client on Sparc boxes using Solaris 2.6, Perl
      > 5.6.0,
      > XML::Parser
      > version 2.3 . I believe dynamic linking is enabled, would that
      > make a
      > difference?
      >
      > One difference I've noted is that running the client under a
      > version of Perl
      > compiled
      > WITH thread support will make the segmentation fault happen after 2
      > remote
      > method
      > calls, while running the same code under a version of Perl compiled
      > WITHOUT
      > thread
      > support will take 7 method calls to crash. I do not use multiple
      > threads in my
      > code.
      >
      > Thanks in advance for any help,
      >
      > Sean
      >
      >
      >
      >
      >
      > Paul Kulchenko <paulclinger@...> on 03/21/2001 06:05:16 PM
      >
      > Please respond to soaplite@yahoogroups.com
      >
      >
      >
      > To: soaplite@yahoogroups.com
      > cc: (bcc: Sean Meisner/Great Lakes/AirTouch)
      > bcc: Sean Meisner/Great Lakes/AirTouch
      >
      > Subject: Re: [soaplite] Segmentation fault after multiple method
      > calls on a
      > remote object
      >
      >
      >
      >
      > Hi, Sean!
      >
      > I'd rather to believe that server could crash (some of the possible
      > combinations that could make it are documented), but I never heard
      > about such problems on client side. What's your configuration? OS,
      > Perl, XML::Parser versions? Dynamic/static linking?
      >
      > Object-by-reference shouldn't have ANY impact on client side,
      > because
      > all processing is done on server and client just getting id and
      > should treat it as usual object. No differences.
      >
      > Only advice I have right now is to try run the same client code on
      > another machine (better with different configuration), hopefully
      > you
      > should be able to do it really quick. Keep me informed on that,
      > maybe
      > it's something I should take care of. Thank you.
      >
      > Best wishes, Paul.
      >
      > --- Sean.Meisner@... wrote:
      > >
      > > Hi all,
      > >
      > > I wonder if anyone else has seen this problem.. I have a
      > SOAP::Lite
      > > client
      > > talking to a SOAP::Lite server. My server and client use
      > > objects_by_reference.
      > > In certain portions of the client code, when I make a bunch of
      > > method calls
      > > one after another on my remote object reference, I get a
      > > segmentation
      > > fault on the client side and the script dies. The server is
      > > unaffected by this
      > > error. My on_fault defined subroutine does not get called. Most
      > > baffling is,
      > > this behavior is inconsistent between different sections of the
      > > script.. in one
      > > portion, I may be able to call a method 4 times before it
      > crashes.
      > > In another
      > > section of the script, the same code will crash on the second
      > > method call.
      > > The particular method with which I'm seeing this error simply
      > takes
      > > 2 strings as
      > > parameters, and passes back a string.
      > >
      > > I'm just posting on the odd chance that someone else may have had
      > > this type
      > > of problem before and knows off the top of their head what the
      > > cause may be..
      > >
      > > Cheers,
      > >
      > > Sean Meisner
      > >
      > >
      > >
      > > ------------------------ Yahoo! Groups Sponsor
      > >
      > > To unsubscribe from this group, send an email to:
      > > soaplite-unsubscribe@yahoogroups.com
      > >
      > >
      > >
      > > Your use of Yahoo! Groups is subject to
      > > http://docs.yahoo.com/info/terms/
      > >
      > >
      >
      >
      > __________________________________________________
      > Do You Yahoo!?
      > Get email at your own domain with Yahoo! Mail.
      > http://personal.mail.yahoo.com/
      >
      >
      > To unsubscribe from this group, send an email to:
      > soaplite-unsubscribe@yahoogroups.com
      >
      >
      >
      > Your use of Yahoo! Groups is subject to
      > http://docs.yahoo.com/info/terms/
      >
      >
      >
      >
      === message truncated ===


      __________________________________________________
      Do You Yahoo!?
      Get email at your own domain with Yahoo! Mail.
      http://personal.mail.yahoo.com/?.refer=text


      To unsubscribe from this group, send an email to:
      soaplite-unsubscribe@yahoogroups.com



      Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
    • Show all 9 messages in this topic