php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #26884 Php Segmentation fault in cron
Submitted: 2004-01-12 09:02 UTC Modified: 2004-02-04 09:45 UTC
Votes:1
Avg. Score:4.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: forlevibr at yahoo dot com dot br Assigned:
Status: Closed Package: Reproducible crash
PHP Version: 4CVS-2004-01-12 OS: Slackware 9
Private report: No CVE-ID: None
 [2004-01-12 09:02 UTC] forlevibr at yahoo dot com dot br
Description:
------------
I installed PHP with the commands below:

rm config.cache
make clean
./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs --with-sybase-ct=/opt/sybase --with-java=/usr/local/java --enable-sockets --enable-ftp --enable-calendar
make && make install && make install-cli

Then I created a script teste.sh that have permisions 755 with the command below:

/usr/local/php/bin/php /etc/cron/teste.php

The script teste.php have the commands below:

<?php
mail("email@domain", "Subject', "Text");
?>

I added the command in the contab
0 0-23 * * * /etc/cron/teste.sh

When the job execute it throw the message:
/etc/cron/teste.sh: line 1: 27310 Segmentation fault /usr/local/php/bin/php /etc/cron/teste.php

When I execute the script in the line command it work, but when the cron execute it don't work.

Reproduce code:
---------------
file teste.php
<?php
mail("email@domain", "Subject', "Text");
?>

file teste.sh
/usr/local/php/bin/php /etc/cron/teste.php

crontab
0 0-23 * * * /etc/cron/teste.sh

Expected result:
----------------
Crontab execute the script sending the mail

Actual result:
--------------
Crontab execute the script but throw message:

/etc/cron/teste.sh: line 1: 27310 Segmentation fault /usr/local/php/bin/php /etc/cron/teste.php

and not send mail

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-01-12 17:46 UTC] iliaa@php.net
Works fine here with latest CVS and I should mention that 
your script has a parse error. If you can replicate the 
problem after fixing the parse error please generate a 
backtrace. 
 [2004-01-13 09:02 UTC] forlevibr at yahoo dot com dot br
I updated to last version (200401131230 ) and the problem continue.

My new script teste.php:

<?php
mail("email@domain", "Subject", "Text");
?>

The error:

/etc/cron.bol/teste.sh: line 1: 31063 Segmentation fault /usr/local/php/bin/php /etc/cron.bol/teste.php
 [2004-01-13 09:07 UTC] forlevibr at yahoo dot com dot br
Sorry
The correct error message is:

/etc/cron/teste.sh: line 1: 31063 Segmentation fault
/usr/local/php/bin/php /etc/cron.bol/teste.php
 [2004-01-13 13:22 UTC] sniper@php.net
Do you get a core file anywhere..? The GDB backtrace would help a lot.

 [2004-01-14 08:39 UTC] forlevibr at yahoo dot com dot br
Hi,
I would like to ask you how to generate a core file if I'm getting the crash from "cron" and not from a cgi or from a http.
Running directly from cgi the script runs and does not crash, as you know.

The steps on PHP docs are talking how produce a core file using cgi or http as you can see below:

"If you don't have a core file yet:

    * Remove any limits you may have on core dump size from your shell:
          o tcsh: unlimit coredumpsize
          o bash/sh: ulimit -c unlimited
    * Ensure that the directory in which you're running PHP, or the PHP-enabled httpd, has write permissions for the user who's running PHP.
    * Cause PHP to crash:
          o PHP CGI: Simply run php with the script that crashes it
          o PHP Apache Module: Run httpd -X, and access the script that crashes PHP."

So, is there a way how we can go ahead with this case, or generating a core as you told running it with "cron" or other way where we can find the problem and try to solve it? 
Thanks.
 [2004-01-14 10:38 UTC] sniper@php.net
First do this:

# rm config.cache && ./configure --prefix=/usr/local/php --disable-all --disable-cgi --enable-debug && make && make install-cli

ie. compile a debug enabled PHP CLI binary without anything extra. Also, change the teste.sh to run the php script like this:

/usr/local/php/bin/php -n /etc/cron/teste.php

(this will disable loading of any php.ini file)

Do you still get the crash?


 [2004-01-14 11:52 UTC] forlevibr at yahoo dot com dot br
Hi
When run the make I get the Error below

...
gcc: sapi/cli/php_cli.o: No such file or directory
gcc: sapi/cli/getopt.o: No such file or directory
make: *** [sapi/cli/php] Error 1

What to do?
 [2004-01-15 01:13 UTC] sniper@php.net
# make clean && make

 [2004-01-15 07:00 UTC] forlevibr at yahoo dot com dot br
Hi
I solved the problem, simply add the line below in the teste.sh
PATH=/usr/local/php/bin

I don't know if this is a bug, because now the file teste.sh have commands:

PATH=/usr/local/php/bin
/usr/local/php/bin/php /etc/cron/teste.php

and before it has:

/usr/local/php/bin/php /etc/cron/teste.php

the shell PATH before and after

PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:
/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/opt/kde/bin:
/usr/lib/qt-3.1.2/bin:/usr/share/texmf/bin:
/opt/sybase/bin:/usr/local/java/bin:
/usr/local/php/bin:/root/bin

Thank's
 [2004-01-16 08:48 UTC] sniper@php.net
What crond version are you using?
And can you show the full crontab file?

 [2004-01-19 07:08 UTC] forlevibr at yahoo dot com dot br
Hi
I am using crond version 2.3.3;

My crontab file have...

######start file#######

SHELL=/bin/bash
PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/php/bin

47 * * * * /usr/bin/run-parts /etc/cron.hourly  1> /dev/null
40 4 * * * /usr/bin/run-parts /etc/cron.daily   1> /dev/null
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly  1> /dev/null
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

## Two commands is working
0 0-23 * * * php /etc/cron/teste.sh  
#0 0-23 * * * run-parts /etc/cron

###########end file##############


My correct file teste.sh have

###########start file############
SHELL=/bin/bash
PATH=/usr/local/php/bin

php /etc/cron/teste.php
###########end file##############
 [2004-01-19 08:51 UTC] forlevibr at yahoo dot com dot br
Hi
When I reboot the server, the scripts stop work and throw error "Segmentation fault" when called by crond.
Then I execute the commands:
  killall crond
  crond
and the scripts work.
 [2004-01-19 13:06 UTC] sniper@php.net
This is some bug in the crond you're using. 
I (or Ilia) could not reproduce this.
And I'm using vixie-cron..

 [2004-01-21 09:00 UTC] forlevibr at yahoo dot com dot br
Hi
I detected the cause.
I compiled php without option --sybase-ct=PATH then the cron work.
I find article in http://dbforums.com/arch/160/2003/4/761172
that reported a problem equal with apache.
The solution was create a initialization script to cron where I seted the variables to SYBASE (SYBASE, LD_LIBRARY_PATH, LC_ALL) inside from the script then begin work fine.
More details can be seen in the link above

Thank
 [2004-02-04 09:45 UTC] forlevibr at yahoo dot com dot br
Is resolved
Thanks
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Sep 18 20:01:27 2024 UTC