php-milter does not build and crashes randomly

 [2014-07-30 11:53 UTC] attb2 at torzsasztal dot hu

Description:
------------
I've built php-milter SAPI on Ubuntu 12.04.
PHP version: 5.4.31 downloaded from php.net

Installed extra packages:
apt-get install libmilter-dev libxml2-dev libmysqlclient-dev

Build script:
./configure --prefix=/usr/local/php54 \
 --with-milter=yes \
 --with-pdo-mysql=mysqlnd
make fails with error message:
libtool: link: `sapi/milter/php_milter.lo' is not a valid libtool object

I have to build the getopt.lo and php_milter.lo files manually:
/bin/bash /usr/local/src/php-5.4.31/libtool --silent --preserve-dup-deps --mode=compile /usr/local/src/php-5.4.31/meta_ccld -Isapi/milter/ -DPHP_ATOM_INC -I/usr/local/src/php-5.4.31/include -I/usr/local/src/php-5.4.31/main -I/usr/local/src
/php-5.4.31 -I/usr/local/src/php-5.4.31/ext/ereg/regex -I/usr/include/libxml2 -I/usr/local/src/php-5.4.31/TSRM -I/usr/local/src/php-5.4.31/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS  -c /usr/local/src/php-
5.4.31/sapi/milter/getopt.c -o sapi/milter/getopt.lo
/bin/bash /usr/local/src/php-5.4.31/libtool --silent --preserve-dup-deps --mode=compile /usr/local/src/php-5.4.31/meta_ccld -Isapi/milter/ -DPHP_ATOM_INC -I/usr/local/src/php-5.4.31/include -I/usr/local/src/php-5.4.31/main -I/usr/local/src
/php-5.4.31 -I/usr/local/src/php-5.4.31/ext/ereg/regex -I/usr/include/libxml2 -I/usr/local/src/php-5.4.31/TSRM -I/usr/local/src/php-5.4.31/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS  -c /usr/local/src/php-
5.4.31/sapi/milter/php_milter.c -o sapi/milter/php_milter.lo

then make, make install.

I start php-milter with example milter.php script.
When I connect to localhost:25 and send SMTP emails it randomly crashes.

Syslog:
kernel: [1390948.241287] php-milter[31837]: segfault at 42 ip 00000000006e59b8 sp 00007ff237c86980 error 4 in php-milter[400000+7d5000]



Test script:
---------------
Start php-milter:
/tmp/bin/php-milter -a -p inet:3340 -f /tmp/bin/milter.php

It listens on port 3340 and works for a while.

SMTP commands:
telnet localhost 25
ehlo localhost
MAIL FROM: test@domain.local
RCPTO TO: test@domain.local
data
test sample
.

/tmp/milter.log:
[12:06:19 30.07.2014]	-- startup --
[12:06:19 30.07.2014]	milter_init()
[12:06:33 30.07.2014]	milter_connect('localhost')
[12:06:42 30.07.2014]	milter_envfrom(args[])
[12:06:42 30.07.2014]		args[0] = test@domain.local
[eof]



Expected result:
----------------
To run in daemon mode forever without crash. :-)

Actual result:
--------------
It crashes with segfault.
kernel: [1391258.670146] php-milter[31943]: segfault at 42 ip 00000000006e59b8 sp 00007f94390e2980 error 4 in php-milter[400000+7d5000]


 [2014-07-30 13:02 UTC] attb2 at torzsasztal dot hu

strace gave me this output when daemon crashes:

/usr/local/src/php-5.4.31/Zend/zend_hash.c(1055) : ht=0x7f62bc0948c8 is already destroyed
/usr/local/src/php-5.4.31/Zend/zend_hash.c(551) : ht=0x7f62bc0bdcb8 is already destroyed
/usr/local/src/php-5.4.31/Zend/zend_hash.c(683) : ht=0x7f62bc0948c8 is already destroyed

 [2014-07-30 18:11 UTC] mike@php.net

-Summary: php-milter crashes randomly +Summary: php-milter does not build and crashes randomly -Assigned To: +Assigned To: mike

 [2014-07-30 18:15 UTC] mike@php.net

-Status: Assigned +Status: Closed

 [2014-07-30 18:15 UTC] mike@php.net

I fixed an obvious crash. For anything else, I'd need a real backtrace.