Sablotron 1.01 Core Dumps with PHP and Apache
Posted February 12th, 2004 in Apache and PHP (Updated May 24th, 2005)
There is a known problem with the Sablotron 1.01 libraries on PHP and Apache which can cause pages to not load and core dumps on the server for some XML files. I have experienced this problem on FreeBSD 4.9 but it has also been reported to be a problem on Linux using various distributions. I have been using the 0.98 version of the Sablotron libraries on commercial sites for 12 months (as at February 2004) on Linux servers and have experienced no issues with that version on that platform.
I experienced this problem using Apache 1.3.29 and PHP 4.3.4 but it is likely to affect other versions of PHP as well.
In your web browser you will get a message saying the connection to the server is broken on PHP pages which are constructed using the Sablotron library. This may only occur on some pages and not others (for example it did not affect the public areas of this website but it was a problem in some of the larger statistical reporting pages of the admin area).
Apache will log the error in the error log file with the following messages:
[Wed Feb 11 22:56:54 2004] [notice] child
pid 6558 exit signal Abort trap (6)
assertion
"!!(external)" failed: file
"domprovider.h", line 269
[Wed Feb 11 22:57:18
2004] [notice] child pid 6559 exit signal Abort trap (6)
assertion
"!!(external)" failed: file
"domprovider.h", line 269
The error will repeat each time it occurs. The line number of the "domprovider.h" file is the same each time but obviously the date, time and child pid numbers will be different each time.
Until the problem is fixed by the developers the only solution to this problem is to downgrade back to 0.98. There are some other compilation issues with Sablotron 0.98 on FreeBSD which are dealt with in another article in this site.
After downgrading back to 0.98 the problem went away. As I have noted at the beginning of this article, I have been running 0.98 on production systems for 12 months as at February 2004 with no problems.
When changing between configuring Sablotron 0.98 and 1.01 be aware that the configure switch for the Expat library path is different for the two versions, should you need to set these.
For 0.98: ./configure
--with-expat-prefix=/usr/local
For 1.01: ./configure
--with-expat=/usr/local
In the above example /usr/local is where I had installed
the Expat libraries.
The Electric Toolbox website uses the Sablotron and Expat libraries to convert XML to XSL. These extensions are very fast at running these XSL transformations and are available for download from The Ginger Alliance (Sablotron) and Sourceforge (Expat).

Comments
blog comments powered by Disqus