php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #8133 pspell_new() in Apache module segfaults
Submitted: 2000-12-06 00:24 UTC Modified: 2001-04-03 14:16 UTC
From: torben@php.net Assigned:
Status: Closed Package: Pspell related
PHP Version: 4.0 Latest CVS (05/12/2000) OS: Mandrake 7.0
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: torben@php.net
New email:
PHP Version: OS:

 

 [2000-12-06 00:24 UTC] torben@php.net
This is a fresh source wipe & checkout from cvs. I also
installed fresh pspell & aspell packages of the latest
versions; they work fine from the command line. The command
line PHP seems to work fine; the module version segfaults.

Configure script (remove the apxs line for the cli version):

./configure \
  --with-apxs=/usr/local/apache/bin/apxs \
  --with-pspell \
  --with-mysql=/usr \
  --with-gd \
  --with-xml \
  --with-zlib \
  --with-curl \
  --with-sablot \
  --with-iodbc=/usr/local \
  --enable-wddx \
  --enable-versioning \
  --enable-sysvshm \
  --enable-sysvsem \
  --enable-sockets \
  --enable-shmop \
  --enable-debug

I cannot get a backtrace when this happens; running gdb
on httpd just gives:

Error while mapping shared library sections:
"/sbin/": not in executable format: Is a directory.
Error while reading shared library symbols:
"/sbin/": can't read symbols: Is a directory.
warning: find_solib: Can't read pathname for load map:
Input/output error

...in an infinite loop until I kill gdb from another
terminal.

I did a strace, if that helps. It was rather huge, and
is located at
http://www.thebuttlesschaps.com/php-pspell-segfault.txt

The script with which I am testing:
<?php /* -*- mode: c++; minor-mode: font -*- */
include('./utils.inc');
include('./speedlib.inc');
$version = phpversion();
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML-3.2//EN">
<html>
  <head>
    <title></title>
  </head>

  <body>
    <h1><?php echo $version ?> list answer testbed</h1>
<?php
error_reporting(E_ALL);

$dictid = pspell_new('en', '', '', '', PSPELL_NORMAL);
echo "Got dictionary: '$dictid'<br>\n";
?>
    <hr>
  </body>
</html>


(There a a couple of extraneous lines at the beginning
but they don't affect anything.)

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-01-09 20:51 UTC] vlad@php.net
Looks like newer versions of pspell require the user's /root/.aspell.conf (if you are running apache as root) file to be present, while older ones did not care; otherwise we see:

open("/root/.aspell.conf", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
brk(0x8178000)                          = 0x8178000
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++

I'll see if I can figure out how to get rid of that annoying and useless (in this context) feature.

I wonder if it is related to bug# 8464
 [2001-04-03 07:47 UTC] sniper@php.net
I can't reproduce this with latest CVS. You should also check bug #10129 if that's what is the problem in your system.

( And I don't have .aspell in my /root/ dir)

--Jani

 [2001-04-03 14:16 UTC] vlad@php.net
Actually, this is still a "problem", and the solution for the cause seems to be in allowing aspell to read it's own files as 'nobody' (or whatever your apache runs as). For most people, just do the following:

chmod o+r /usr/local/lib/aspell
chmod o+r /usr/local/share/aspell
chmod o+r /usr/local/share/pspell

The credit for finding this is due to steve@math.upatras.gr.
 
PHP Copyright © 2001-2018 The PHP Group
All rights reserved.
Last updated: Tue Sep 25 02:01:25 2018 UTC