On Wed, Jan 02, 2002 at 07:36:35PM -0500, Michael O'Donnell wrote:

[snip]

> Let me assure you that I don't know sh*t about
> Cold Fusion, Sablotron, Apache or whatever, but I

Neither do I, but I'm learning...

> know a bit about systems-software and debugging.

I used to develop code, but it's been a long time since
I've done anything of significant size.  And all I really
ever developed in was C (some Ada, Pascal, and FORTRAN as
well).

> Some preliminary questions:
> 
>  - Is the failing module part of some nasty-huge
>    whole or soem smaller thing that gets launched
>    in response to some input?

  Sablotron is a high performance XSLT processor that uses the expat xml
parsing library.  More info is available at the Ginger Alliance at
http://www.gingerall.com/.  It's easy enough to separate out that we even
have a main() method that just calls it with command line arguments.  It
works from the command line, but not when called from Cold Fusion.
  (CF is basically just a super expensive, really dumbed down web scripting
language.  It runs it's own server processes, and ties into apache with
the standard DSO interface [mod_coldfusion.so].)

>  - Can you substitute some other program for the
>    failing module?

  Not really.  The code looks relatively simple.  In fact, it looks
like only a little more than wrapper to turn it into a Cold Fusion
custom tag.

>  - Can you capture whatever data are being fed
>    to the failing module?

We have that information, and it works on the command line.

>  - Can you pause the system immediately prior to
>    it launching the failing module?

Not unless I'm REALLY quick with the keyboard.  :-)
Just kidding.  Not really.

>  - Can you run the failing module under GDB?

I'm not sure what process to run it on.  The cfserver, httpd?  Each have
multiple copies, it's hard to figure out which one.

>  - Have you got any recreational drugs?

  Ah, now you're onto something!  Caffeine is the strongest I've got, though.
Wait, maybe there's some Elmer's Glue in the...never mind.


  I forgot to mention that I did do a Google search on 'sablotron expat apache
segfault' and found lots of references to this exact type of problem. The
results seem to universally point to multiple copies of the expat processor due
to the fact that many products (apache included) include their own copy
of expat.  Depending on the version, whether it's linked statically or
dynamically and anything else you are using that needs expat, there can be
serious conflicts.  It has something to do with instantiating the parser
multiple times and then the code that makes the call to the parser doesn't
know which instance to call.  Something like that.
  Anyhow, based on what I read, it appears that I've got everything set right.
Red Hat's apache 1.3.22 update links dynamically to the external expat.  So
does the 0.71 rpm of sablotron from the Ginger Alliance.  Even the
perl-XML-Parser is linked dynamically, though we don't use that.  The only
thing I can think of that might not be is php (which we use a small bit of),
but we don't even use any of the XML stuff in php and I don't think we've
even reached the point where php would be loaded.  I may be wrong, though,
as I know little about the inner workings of apache.

-- 
-Paul Iadonisi
 Senior Systems Administrator
 Red Hat Certified Engineer / Local Linux Lobbyist
 Ever see a penguin fly?  --  Try Linux.
 GPL all the way: Sell services, don't lease secrets

*****************************************************************
To unsubscribe from this list, send mail to [EMAIL PROTECTED]
with the text 'unsubscribe gnhlug' in the message body.
*****************************************************************

Reply via email to