ID: 33349
User updated by: benjamin dot malynovytch at libertic dot fr
Reported By: benjamin dot malynovytch at libertic dot fr
Status: Open
Bug Type: IMAP related
Operating System: Linux (Mandrake 9.2)
PHP Version: 5.0.4
New Comment:
Here's a part of the strace of the child process that processed the
request. It ends on a Seg Fault.
------------------------------------------------------------
...
31537 time(NULL) = 1119254602
31537 time(NULL) = 1119254602
31537 select(58, NULL, [57], [57], {60, 0}) = 1 (out [57], left {60,
0})
31537 time(NULL) = 1119254602
31537 write(57, "00000009 FETCH 2 (BODYSTRUCTURE "..., 40) = 40
31537 time(NULL) = 1119254602
31537 time(NULL) = 1119254602
31537 select(58, [57], NULL, [57], {60, 0}) = 1 (in [57], left {60,
0})
31537 time(NULL) = 1119254602
31537 read(57, "* 2 FETCH (BODYSTRUCTURE (((\"tex"..., 8192) = 936
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 alarm(0) = 0
...
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 time(NULL) = 1119254602
31537 alarm(0) = 0
31537 alarm(0) = 0
31537 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
31537 chdir("/usr/local/httpd/httpd") = 0
31537 rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
31537 getpid() = 31537
31537 getpid() = 31537
31537 kill(31537, SIGSEGV) = 0
31537 sigreturn() = ? (mask now [RTMIN])
31537 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
31537 +++ killed by SIGSEGV +++
------------------------------------------------------------
Previous Comments:
------------------------------------------------------------------------
[2005-06-20 09:51:13] benjamin dot malynovytch at libertic dot fr
I tried several versions of imap (UW): imap-2001a, imap-2002a,
imap-2004a, imap-2004d, imap-2004e-DEVEL
None of them worked.
I'm afraid their's no error log: the application hangs without
returning anything (would be too easy to debug).
The only thing I know, is that the application hangs just after the
call to "imap_fetchstructure" (did some echo "..."; flush(); to be
sure).
Any idea ?
------------------------------------------------------------------------
[2005-06-18 00:45:26] [EMAIL PROTECTED]
If the problem persists, please provide a URL to the complete text of
the message that causes the hang.
------------------------------------------------------------------------
[2005-06-17 12:23:17] benjamin dot malynovytch at libertic dot fr
I had already tried the CVS version before submitting the bug. It
hasn't solved the problem.
I am going to try a different version of the c-client library, but the
University of Washington only gives the latest version on their ftp
(last update was made at the end of 2003 - Version 2004d).
I hope it will solve the problem, but why does the imap_fetchstructure
function doesn't send en error message if something goes wrong (lost
connection, invalid format ...) ?
Thanks for the support :)
------------------------------------------------------------------------
[2005-06-15 15:13:58] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
If you can reproduce it with the snapshot, try upgrading the c-client.
(it might be a bug in that, not PHP..)
------------------------------------------------------------------------
[2005-06-15 11:36:30] benjamin dot malynovytch at libertic dot fr
Description:
------------
Calling imap_fetchstructure() on certain multi-part messages causes an
indefinite hang (function never returns).
Versions:
Tried: PHP-5.0.3, PHP-5.0.4, PHP-5.0.5-dev
c-client: imap-2004d
Apache: httpd-2.0.53
I gave a look at other related bugs, and checkd that que imap link was
still up when the function was called. I also tried to place a timer
between two function calls.
Nothing worked, the link is still up when que function hangs.
Reproduce code:
---------------
<?php
$pop_user = "someuser";
$pop_pass = "somepassword";
$pop_host = "somehost.somewhere.com";
$mbox_path = "/path/to/failedmsg.1";
$pop_conn_string = "\{$pop_host:143/imap}$mbox_path";
$pop_conn = imap_open($pop_conn_string, $pop_user, $pop_pass);
// Assuming message-of-death is first one in the mbox
$mimeobj = imap_fetchstructure($pop_conn, 1);
// Never gets here...
imap_close($pop_conn);
?>
Expected result:
----------------
imap_fetchstructure() should quickly return the structure of the
message.
Actual result:
--------------
The function never returns on most mails, and page loading stops.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33349&edit=1